Using the Forte Media Fm801 FM (OPL3) Synth in Windows XP


Fm801 IC Table of contents

Introduction

The Forte Media Fm801 is an integrated circuit which can be found on many sound cards made between 1999 and 2001. It incorporates a Yamaha OPL3 compatible FM synthesizer, which is compatible with the earlier Yamaha FM synthesizer, the OPL2.

This synthesizer is certainly not the best in the world, but has its uses as a noisy tone generator which can be fed into effects units to create unusual sounds, or as a means to listen to old computer game music written for the AdLib sound card from the late 80s.

A benefit of fm801 cards is that an XP driver should be available, also they are PCI devices which should not have resource conflict issues with other cards in your system, in fact in my own system I have four sound cards living side by side in harmony, this of course includes an fm801 based card.

News (April 2006): I have released a patch editor / midi controller for any FM 801 based card. This allows you to play FM tones with 6 note polyphony out of your old FM 801 card. Find it here. Update (2011/12) This now also works with other FM (OPL3 compatible) cards such as the Creative SB16, AWE64 and Yamaha YMF724.

News:

Thanks to Jim @ http://ym2149.oth4.com/ who noticed that fm_801.exe had a bug with the port setup. This has been rectified, and in fact the version you can download now will auto-detect the correct base port of the fm801 if the driver is installed correctly. It is not known, however, how it will behave with two cards installed and the dialog entry remains so you may alter what it auto-detects.

Table of contents

Using Midi

To operate the synthesizer firstly a WDM driver must be installed and working on your computer, this isn't covered here, and you will need to obtain one from your sound card manufacturer, in my case I downloaded the driver from the Genius website for an SM32x2 audio card. (Edit: The download link at the genius site seems to no longer exist, and if you have been looking for a driver, try here instead. All fm801 cards should be able to use the same driver, but obviously I am unable to actually test that theory).

Once the basic setup is working to enable midi playback via the FM synth, the audio control panel applet must be opened and the default midi output device set:

Audio Control Panel Properties

From the drop down list I have selected the appropriate device, this means that from now on Windows Media Player and other midi players will use the FM synth for their midi file playback.

Double clicking a .mid file will test that this is all working. As a more elderly computer user, a feeling of nostalgia for bygone days of low tech audio comes flooding back. If you are a younger computer user, however, then you may well be thinking what is that [insert expletive(s)] noise?

Welcome to the world of the OPL FM synth!

Table of contents

An Issue with using midi

An issue I found with midi playback on the fm801 is that the WDM driver does not have the capability of altering the fm synth volume, it does allow you to alter the master volume, but that is far as it goes. In some circumstances noticable audio distortion can be heard as the default fm synth volume is set too high.

I have remedied this problem, though, by writing a simple application to allow setting this fm synth volume, next we will look at the application and see what benefits we gain from using it.

Table of contents

Overcoming the midi issue with fm_801

Firstly you should read the LICENSE for the fm801 application we will using in this section. It details the rights to the application and explain that you may do as you wish with it as long as the copyright notice is preserved, also you should appreciate that if you agree to this license then the program authors cannot be held liable for any damage caused from using it.

Next you may download the fm_801 application which can be found here. When you save it disc place it somewhere you can locate it later, but do not run it yet. Please note that downloading and then running the application implies that you understand the above license.

The source code to that application can also be found here. This source is also covered by the license above.

Before fixing our midi volume issue using fm_801 issue two preparatory steps must be made before we can run it.

  1. The fm_801 application requires a system driver named giveio.sys to be installed and running on your computer to work. You will need to vist an another site to find this and follow the instructions there for installing it. At this time (May 2005), following this link will give you all the details and locations for obtaining giveio.sys.

    If you have trouble with the above, then you could alternatively install SpeedFan which is a monitoring tool for your computer, this should install giveio.sys as part of it's own installation process.

  2. The hardware I/O address of the fm801 device needs to be ascertained as this address is needed to configure fm_801.exe. This isn't hard to discover, and the following shall explain how this is done.

    Open the control panel and locate the system icon (the control panel can be found at Start->Settings->Control panel)

    Control Panel

    Double click that icon and the system properties dialog appears, find the device manager on the hardware tab:

    Control Panel System Properties

    Opening the device manager will give a list of all the hardware in your computer system, look for your fm801 card within that list:

    Control Panel Device Manager

    Once you double click that entry, one more dialog appears, on this there is a tab where you can find the required hardware I/O address we have been searching for:

    Control Panel Resources

    As you may see, in this case the fm801 card has an I/O base address of 9000 this is the value we need to remember. Write this down, and all those dialogs can be closed as we no longer need them.

At this point we can now run the fm_801.exe previously downloaded and once we do so we are presented with the following display:

fm_801 running

The application is now waiting for input of that I/O address we previously discovered, enter it into the entry box, and press Apply. This prepares the application for further processing. You will be presented with the following confirmation dialog, press OK if you are really sure the address you entered is correct:

fm_801 ready

If you were confident and clicked OK, then fm801 will now appear like this:

fm_801 ready

If you now double click a .mid midi file you can alter the FM synth volume directly using the sliders in fm_801. The sliders do not interact with the master volume in any way and only affect the synth.

A benefit here is that we can alter the panning (left and right volume ratio) of the synth output. This isn't normally a feature of the OPL devices and this can be handy should you utilise the synth in a sequencer application. To do this you must first unlink the volume sliders by clicking Linked then alter each one accordingly.

The mute switch totally removes all synth output from the card. This can be used instead of than setting the master volume to zero. In emergencies (ie, when the noise become unbearable) this will be invaluable. It has been noticed that moving the sliders to zero will probably not remove all audio output and this can be considered a fault in the fm801 design.

There is also an option to switch the operating mode of the OPL device between 2 and 3, this isn't used when playing back midi files and should be set to 3 at all times else weird(er) sounds will emanate from your speakers when playing tunes. The OPL 2, 3 switch is utilised later for playing back all those sounds from old AdLib coompatible games, this will be covered next.

Table of contents

Playing those olde music files from games

In the dark ages of PC games software a sound card called the AdLib was popular, in fact I had one myself and it was a 8 bit ISA card. You cannot use these any more on modern computers without using a bridging interface, such as an external isa to usb converter, but this is no problem as the fm801 has the main component of the AdLib card (OPL2 synth) built in.

In order to listen to that old music, some application software must be installed. Firstly WinAmp which can be located here, and AdPLug for WinAmp, which can be found here.

WinAmp

Follow the instructions for installing both the above applications, and whilst you are at it, locate some game music files, a site worth visiting is Chiptune where all sorts tunes can be downloaded for playback.

Once you have WinAmp and AdPlug up and running on your computer, you can immediately listen to AdLib music, as the AdPlug WinAmp plugin has what's known as software emulation of the OPL chips built in. The emulation sounds very good, but if anything it is too good, and sounds much mellower and less harsh than the real thing. You may prefer the emulation, but if have got this far then you may as well get your fm801 making noises playing the old tunes!

To get your hardware working instead of the software emulation we need to install one more application on the computer, this application is named PortTalk and can be found here.

PortTalk is similar to giveio.sys mentioned earlier in this document and is utilised by the AdPlug WinAmp plugin to talk to you fm801 OPL2 chip. Follow the instructions on installing PortTalk at the given website, and next we shall see how to use it with WinAmp.

In this example I have installed the PortTalk tools in C:\TEMP\PT, you should change this as path as appropriate, also it is very important to realise that I am using 9000 as my fm801 I/O resource address, which I disovered earlier in the document, you should not enter the address as shown below unless your fm801 is also at address 9000. To learn about discovering the I/O resource address go back to this section here and come back to this later.

First we will work out our OPL I/O address, and if we take the resource address used by fm_801 (above) and then add 68 to it, this will then give us the correct address of the OPL2 synth.

IMPORTANT, both the values given here are in hexadecimal, and we can't use normal decimal addition to calculate the OPL2 address if the base address doesn't sit at nice and simple boundary such as 9000 or 5000.

In the event that your fm801 device doesn't sit at such a simple bounary eg, 5080, then you can use the scientific features of your Windows calculator to do hexadecimal addition and calculate the correct address. To do this run calc from start button with Start->Run then enter calc. Within calc go to View->Scientific, then select the HEX mode. Enter your fm801 resource address, eg. 5080, then add 68 to it, the result should give you 50e8 in this instance.

Now open a DOS Command box by going to Start->Run and entering cmd, cd to your given PortTalk installation directory, then enter: AllowIO.exe "c:\program files\Winamp\winamp.exe" 0xNNNN (NNNN is the value calculated above, eg 9068).

DOS CMD

This allows WinAmp to directly write to the computer's I/O memory at locations NNNN through to NNNN+7, in this example, 9068..906f.

Once WinAmp is running we need to configure it to send all output to the OPL chip. Locate the WinAmp preferences dialog from the menu and find the AdPlug input options:

WinAmp preferences

Select this item and you will be presented with the following, where I have enabled the hardware OPL2 device and entered the value calculated above (NNNN) (eg. 9068):

AdPlug config

Press ok and load up an old game tune, now it should be coming directly from the fm801 device rather using software emulation, however, chances are that you can't hear anything, this is because the fm801 chip by default works in OPL3 mode, and AdPlug needs OPL2 mode to be active. We can use the fm801 application as detailed earlier to select this mode:

fm801 OPL2

Once selecting OPL2 mode, noise will start bleating out your speakers and you will be in OPL heaven? I certainly hope so!

Table of contents
Version 1.6 by Darron Broad © 2006-2011 Valid HTML 4.01!