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.
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
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:
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 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
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.
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:
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:
If you were confident and clicked OK, then fm801 will now appear like this:
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
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.
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).
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:
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):
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:
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