How to get Windows XP's Midi to sound like an FM Synth with any soundcard:

My goal when researching this was to make it so any games or MIDI files I played in windows sound like I remember them sounding on my old 486's SoundBlaster Pro 2.0.  What would be ideal would be an emulation engine in a driver package or VST that allowed OPL .BNK instrument maps to be loaded in like soundfonts - sorta like the MUNT project.  Unfortunately that is slightly beyond my capabilities right now so here's some partial solutions and a whole bunch of other chiptune-sounding midi stuff I've found:

*for the latest updates go to http://www3.telus.net/anapan8/oldscardemu.htm
...this text file is here because google links to it instead of the above link for some queries.

My sound card doesn't have soundfont support, but I found a VST plugin called SFZ that allows any VST host program to pass MIDI data through to it.
This is the fastest VST soundfont player I could find.
http://www.project5.com/products/instruments/sfz_player/default.asp
Another alternative which is also available as a VST plugin is Synthfont
http://www.synthfont.com/

The next piece of software necessary is a VST host.  Steinberg invented the VST plugin format for their Cubase program, but many other VST hosts are available now - for example FLStudio and Soundforge.
For what I'm using these plugins for I found a program called SAVIHost that can be renamed to the name of a VST dll making it into a standalone program - a virtual midi device able to be started with a single double-click and without all the overhead that bigger sequencing programs have.
http://www.hermannseib.com/english/savihost.htm

Finally to tie all the pieces together there's a virtual device driver called Midiyoke that can take midi data from one program and pass it through to another.
http://www.midiox.com/myoke.htm
(Here's another virtual midi cable - http://www.hurchalla.com/Maple_driver.html)

So here's the procedure to get all of this stuff working together:

First install Midiyoke, and in the windows control panel setup reduce it's virtual devices to 1 (the others are useless unless you need to emulate more than one device IE using the OPL3 drum Soundfont and filtering the drums out of one of the other VSTs while passing the midi data through to the next plugin)

Next, VSTs can be made into standalone loaders by renaming savihost.exe to the same filename as the DLL.  SFZ comes with a .exe file already, but I like SAVIHost better so I just back up the SFZ.exe and copy SAVIHost.exe overtop of it

Once you have SFZ loaded into/as savihost, you can make it save the settings you change in it by choosing [File] -> [Autosave PlugIn Bank]
Next choose [Devices] -> [MIDI] then [Input Port] -> [In From MIDI Yoke 1]
Choose the quality you want (my computer seems to prefer draft because it sucks.  Turn effects off if you're using a FM soundfont for more accurate/clean sound.
Load a soundfont into it (FAT_OPL2FM.sf2 for the SB16 sounding set).
Finally, change to Channel 10, and select Bank 128 for it (the drum kit) and make sure it's at Program 0 (Standard drum kit) otherwise it will probably use a piano where the drums should sound.  I find that some midis reset channel 10 to bank 1 when loaded, and some even change it several times through the song.  I believe MidiOX from the guys who made MidiYoke could fix that, but haven't tried it yet.  Tom's Midi Player (listed further down) can fix that problem by changing channel 10 after a file's loaded.

For playing MIDIs I use Winamp (tho TMIDI - Tom's MIDI Player mentioned further down is much better)
http://www.winamp.com/

Once you have Winamp running, press Ctrl-P
scroll down to [Plugins] -> [Input]
Double-click on Nullsoft Midi Player (In_Midi)
Change it's output device to  [midiOut Out To MIDI Yoke: 1]
then press OK, then Close

Finally, load a midi file
If all went well, you should be hearing your midi song coming through SFZ using the Soundfont you loaded into it.

I've been told that you can also use XMPlay to load the FAT_OPL2FM.SF2 Soundfont, and then load Ian Wilson's opl3.sf2 drum soundfont overtop of it to get midi playback pretty close to windows' OPL3 sound.  I've read it's Soundfont rendering is not very good tho.

If you want all your games and midi programs to output midi through the VSTs or stand alone midi programs, go to your Control Panel, choose [Sound and Audio Devices] then the [Audio] tab, and change your [MIDI music playback] Default Device to [Out To MIDI Yoke: 1] - if you do this you will need to have one of the VST programs running to play any MIDI music on your computer.  Without one of the programs running, you'll just have silence.
Here's a fix for Vista so you have a midi sound source picker http://www.vista-files.org/programs/joseph-cox/vista-midi-picker.html

Winamp also supports DLS instrument banks.

To play Midis using an alternate DLS instrument bank in Winamp

press Ctrl-P
scroll down to [Plugins] -> [Input]
Double-click on Nullsoft Midi Player (In_Midi)
In the [Devices] tab, change it's output device to  [DirectMusic / Microsoft Synthesizer (with output)]
Switch to the [DirectMusic] tab turn off [Reverb] and [Chorus], change it's Mixing Frequency to 44100
Put a check in [Use custom DLS file], and click the [...] button to locate the new instrument set you want.
then press OK, then Close

While searching for how to do all that stuff I found a lot of other neat ways to listen to MIDIs.


Stand alone Midi players that output songs with different FM instrument sets:

htsfms - 8 or more(?) OP FM synthesis realtime midi playback (depending on the bank loaded)
player.exe - drag a MIDI file into the window for immediate playback
module.exe - with MIDI Yoke as your default windows midi device, any midi music will be played through htsfms
http://hp.vector.co.jp/authors/VA024632/
Batch files to load module.exe using the different patch sets.
ftp://fm:fm@atomu.ath.cx:6872/htsfms096_batch.zip
extract these batch files into the htsfms directory to launch module.exe with the alternate fm banks for different sounding playback (rather than manually editing the .ini file every time)
The earlier version has a better UI, but a less developed patch set.

fmmidi - I think this is an x68k computer midi playback emulator. - the first tab has file loading and an option to choose MIDI Yoke as an input.
http://sugarpot.sakura.ne.jp/yuno/?fmmidi

gxscc - emulates a MSX computer soundcard from Konami (128k wavetable) - Drag a MIDI file onto it's window for playback.  No option for midi passthrough with MIDI Yoke (check the Soundfont section for a fix to that).  There's an easter egg if you double-click on the icon in the top-left (OPL sound set)
http://www.geocities.co.jp/SiliconValley-SanJose/8700/P/GsorigE.htm

IMFCreator - A program created to convert Midis into IMF Adlib format for inclusion into a Wolfenstein 3D windows port, it allows MIDI playback using an FM GM bank, and includes an FM instrument editor, with import of most old standard adlib bank formats (BNK, SBI, IBK, CMF, and others).  Amazing!
http://winwolf3d.dugtrio17.com/

AXS (Another Experimental Synth) - Has a GM bank loaded by default and allows realtime tweaking of the synth sounds.  Very original sounding.  Supports Midiyoke as input and includes sampling and tracking capabilities.
http://www.resolutionaudio.nl/

EMU de MIDI - plays MIDI files using lo-fi sounds like the MSX SCC and YM2413- http://www.pokipoki.org/dsa/index.php?EMU de MIDI
It's command line based, so drag MIDI files onto it's icon in explorer to start playback or install it as a plugin in KBMediaPlayer.


Complete GM Soundfonts:

FAT_OPL2FM_v2.sf2 - The Fat Man's OPL2 GM timbres converted by Anapan (updated feb13'09-looping fixed) - 26Mb
ftp://fm:fm@atomu.ath.cx:6872/FAT_OPL2FM_v2.sf2

gxscc_gm_033.sf2 - The sounds from the stand alone midi player GXSCC converted to Soundfont by Zandro Reveille of the SFZ project.
ftp://fm:fm@atomu.ath.cx:6872/gxscc_gm_033.sf2

nokia_30.sf2 - Bryan Bilocura created this GM bank from the Nokia cellphone midi developer VST.  Further info on his thread here.
ftp://fm:fm@atomu.ath.cx:6872/nokia_30.sf2

MT32 GS 2.51.sf2 -  016.5mg GS GM MT32 V2.51 Bank by LuckyMax
ftp://fm:fm@atomu.ath.cx:6872/MT32%20GS%202.51.sf2

MT32 8MB 0.2a.sf2 - Roland MT32 Soundfont Beta 2.02a, 2/28/96 by Zandro
ftp://fm:fm@atomu.ath.cx:6872/MT32%208MB%200.2a.sf2

Gravis Ultrasound.sf2 - Generated by PAT2DLS using Gravis Ultrasound patches (author unknown)
ftp://fm:fm@atomu.ath.cx:6872/Gravis%20Ultrasound.sf2

Gravis_Ultrasound_Classic_PachSet_v1.6.sf2 - GUS Classic Patch Set v1.6b  converted by ArekR - www.rarek.ceron.pl
ftp://fm:fm@atomu.ath.cx:6872/Gravis_Ultrasound_Classic_PachSet_v1.6.sf2

XG_Sound_Set__from_SoundMAX_DLSbyXG_.sf2 - SoundMAX XG Soundset converted from DLS to Soundfont by MaliceX
ftp://fm:fm@atomu.ath.cx:6872/XG_Sound_Set__from_SoundMAX_DLSbyXG_.sf2

Incomplete GM Soundfonts: (Most of these make substitutions to play all instruments but don't list 128 instruments in SFZ)

YM-FM_Font.sf2 - MaliceX's great FM synth soundfont created mostly from Yamaha chips.  It's GM compatible but currently missing a few sounds.  Best FM drums of any of the soundfonts I've heard.
http://djtbmx.soulbreakers.com/junkpile/YM-FM_Font.zip

CheapChip.sf2 - A work in progress release of a GM Chiptune soundfont by SOU1 made from instruments taken from cellphone music chips, GXSCC, and fmmidi.  Sounds great so-far
http://sou1wp.s1224.com/2008/03/26/403

nes.sf2 - Instruments and drums by Jason Zaffary
ftp://fm:fm@atomu.ath.cx:6872/nes.sf2

nes_soundfont.sf2 - samples taken from street fighter 2010 by Tony Thai.
ftp://fm:fm@atomu.ath.cx:6872/NES_Soundfont.sf2

NES_Font_Advance.sf2 - A bunch of NES sounds, and 3 drum kits made my my old friend Timothy Purcell.
ftp://fm:fm@atomu.ath.cx:6872/Nes_Font_Advance.zip

gbfont.sf2 - Another soundfont by MaliceX made to sound like it was generated by a Gameboy.
http://djtbmx.soulbreakers.com/junkpile/GBFont.zip

opl3.sf2 - Drum samples from an OPL3 emulator by Ian Wilson
ftp://fm:fm@atomu.ath.cx:6872/Opl3.sf2

Drum - 4-Op FM.sf2 - Another drum kit by Ian Wilson.  This one's 4-op instead of 2.
ftp://fm:fm@atomu.ath.cx:6872/Drum%20-%204-Op%20FM.sf2

FM.sf2 & FM-Drum.sf2 - seems a bit buggy on SFZ, but maybe timidity or an audigy soundcard would have better luck.  Good samples and gm/gs/xg compatible.
http://f20.aaa.livedoor.jp/~eternalh/files/

Famicom.sf2 - all instruments are like Nintendo beeps, no drum bank (filter out ch10)
http://www.k3.dion.ne.jp/~kitt/sf/lib.html


DLS GM instrument sets:

Final Fantasy 8 DLS - I really like this one;
http://ffsf.aaron-kelley.net/download_8.html

FAT_OPL2FM.DLS - The Fat Man's OPL2 GM timbres converted by Anapan - 26Mb
ftp://fm:fm@atomu.ath.cx:6872/FAT_OPL2FM.DLS


VST plugin DLLs:

All these VSTs can be made into standalone loaders by copying savihost to the same filename as the DLL.  The devices should be changed to midiyoke input.  Most of them can't do more than one instrument at a time - those ones sound best if you change the plugin -> filters to disable these boxes:
control change
program change
track 10
track 16
and all the system common stuff

Looks like the trick with the mono tone instruments is to just run lots of the same VST at once, and filter all but one channel for each instrument (or just use FLStudio or Cubase the proper way...).

VOPM - an X68000 OPM chip emulator.  It's capable of generating some amazing effects if you play around with it...  Filter out the drum input (channels 10 & 16) if you want to use Midiyoke to play a MIDI through it's GM bank.
http://www.geocities.jp/sam_kb/VOPM/
Louis Gorenfeld made an unnoficial english manual for VOPM! - http://www.gorenfeld.net/lou/VOPM.pdf
and a pack of patches - http://www.gorenfeld.net/lou/LouVOPMSounds-20081028.zip
and a program to rip instruments from Sega Genesis GYM music into VOPM format - http://soundshock.se/phpBB2/viewtopic.php?t=242
Shiru made a program to rip instrument patches from VGM format into VOPM format - http://shiru.untergrund.net/software.htm
More FM modules available here - http://park14.wakwak.com/~valsound//fm_lib.html - Actually originally from Shiru's TFM tracker...
MaliceX ripped some MDX timbres from games and put them in his site's downloads section - http://djtbmx.soulbreakers.com/

Hexter - 6-op FM synth that can load the thousands of available Yamaha DX7 Patches (disable effects for authentic DX7 clone) - has a GM-like bank loaded by default.
http://internap.dl.sourceforge.net/sourceforge/cutevst/CuteVST_Hexter_VSTi_1.3.0.0_binary_win32.zip
http://umn.dl.sourceforge.net/sourceforge/cutevst/CuteVST_Hexter_VSTi_1.3.0.0_binary_win32.zip (copy & paste url if clicking doesn't work)

se64 - some presets on this make midi sound like chiptunes.  I especially like #3.
http://www.olilarkin.co.uk/index.php?p=freeplugins

ProroPSG - I had some good results with this as well
http://www.g200kg.com/en/software/protopsg.html

ymVST - This plugin emulates the sounds of Atari ST sound chips. It's monotonal tho so it would be necessary to run 16 at once to get proper midi playback. still it makes simple midis sound very old-tech.
http://www.preromanbritain.com/ymvst/

FAMISYNTH II - Cool interface and lots of Nintendo/Famicom sounds built in.
http://www.geocities.jp/mu_station/vstlabo/famisynth.html

The Shepherd - Emulates the whistle from Kill Bill's Elle Driver when she's in that nurse uniform.  Try playing any midi on it while keeping a straight face.
http://www.simple-media.co.uk/music/vsti/vsti.htm

Alice-1377 - Emulates the Alisa 1377 synthesizer.  Awesome FM synth presets.
http://vst.smtp.ru/

PooBoy I&II - They Emulate Gameboy sounds.  Both are really good at remaking the full range of sounds a gameboy can produce.
http://www.pontonius.se/

Chip32 - has presets for all the basic NES waveforms, and also lets you draw in any shapes you want.  Controllers for ADSR and others.
http://www.geocities.jp/sam_kb/Chip32/index.html

Quantum 64 - Not a SID chip emulation, but similar sounding and has a great arpeggiator.
http://www.chaitanya.fr/vstsamples/quantum64-v11.zip

Basic 64 - More SID/NES sounding presets.
http://www.delamancha.co.uk/freeware.htm

Magical 8-bit - More NES-like sounds and others from YMCK.
http://www.ymck.net/english/download/index.html

NinTiny - Another NES-like VST
http://hosting.thasauce.net/suzumebachi/?C=N;O=A

Synth1 - FM VST.  It has a GM bank loaded by default, but only allows one instrument to be played at a time through midi input.
http://www.geocities.jp/daichi1969/softsynth/index.html

Roland VSC - GM/GS/XG compatible wavetable softsynth
can be obtained by downloading this update ftp://ftp.roland.co.jp/pub/roland/japan/winxp/vscvst101u.exe
then extract data1.cab, then from it extract VSC.dll.
Use Universal Extractor to do the two extractions - http://legroom.net/software/uniextract


Some other VSTs to look up/try (not freeware)

Beast - By reFX, no longer available, but it's always been one of my favorites...
http://www.refx.net/downloads/Beast/Beast_Demo.zip - trial

Slayer2 - Also by reFX - makes any midi into heavy metal.  Best Grunge guitar modeling I've heard.
http://refx.com/

Blue - By Rob Papen, some of the most unique-full-bodied instrument sounds you'll find.
http://www.robpapen.com/blue.html

quadraSID - Another by reFX - Emulates SID chips from Commodore 64 computers.
http://refx.com/

Sytrus - A great VSTi with some great sounds.  Comes with FL Studio.
http://www.image-line.com/documents/sytrus.html

z3ta+ - Another good one.  lots of neat sounds.
http://www.cakewalk.com/products/Z3TA/

VAs - Virtual Analogue Synth.
http://www.software-technology.com/

Bonus icons for the VSTs and stand-alone players (so your shortcuts don't all have a big purple diamond icon when you make shortcuts to SAVIhost)
ftp://fm:fm@atomu.ath.cx:6872/vsticons.zip


Installable Soft Synths

Yamaha  S-YGM, S-YXG20, S-YXG50, S-YXG70, S-YXG/DM, S-YXG100, Sondius XG/S-YXG100 Plus, S-YXG2006LE - Seems to be discontinued, but had a nice sounding XG wavetable patch set.
A newer (XG-Lite) version is also built into Yamaha's MidRadio Player - More info on that here.
Only S-YXG50 WDM, the VST version of S-YXG50 and an Unofficial S-YXG2006LE VST work in XP outside MidRadio Player.
Official Website (Archive.org fetch) - http://www.yamaha.co.uk/xg/html/midplug/m_mid8.htm
S-YXG50 v4.21.03 WDM trial here - http://ftp.cse.yzu.edu.tw/pub/softking/soft/en/s/S-YXG50V4.zip
S-YXG50 full version can be obtained cheaply by buying a copy of Final Fantasy VII PC on Ebay or Amazon.
S-YXG70 upgrade can be optained from the Final Fantasy VIII PC
S-YXG100 Plus v1.12.15 trial here - http://www.matrixsynth.com/blog/media/yamaha/s-yxg100%209x%20v1.12.15T%20YME.zip
Some info on Sondius - http://www.sonicspot.com/sondiusxg/sondiusxg.html
More information on the Yamaha Softsynths including which versions of them work on which OSes - http://erpman1.tripod.com/download.html

Roland Virtual Sound Canvas - GM/GS wavetable virtual device driver
Website - http://www.roland.com/products/en/VSC-MP1/index.html
Website - http://www.roland.com/products/en/VSC-88H3/index.html
Website advert - http://www.pgmusic.com/rolandvs.htm
In the latest version you can choose between SC-55, SC-88 and SC-88Pro compatible sound sets.  This feature is not available in the VSTi version.

TiMidity++ Windows Synthesizer (TWSYNTH) - Load soundfonts into a windows driver without having a compatible soundcard.
http://sourceforge.jp/projects/twsynth/

Wingroove - GM wavetable virtual driver & stand alone midi player.  I always liked the sounds built into it.
Webpage - http://www.wg7.com/en/


Other stuff of note:

I found a Mt-32 emulator/driver here:
http://www.artworxinn.com/alex/downloads.htm
It was superseded by MUNT which emulates MT-32 and CL-32L devices (reported to be working correctly on Vista).
http://sourceforge.net/projects/munt/
You need ROM dumps to get the 1st one working, I haven't tried MUNT yet.

Another way I found to play back MIDI files so they sound like they're played through an OPL2 chip is Adplug
http://adplug.sourceforge.net/
http://www.informatik.uni-oldenburg.de/~dyna/adplug/
There is a bug in all the builds I tried that only allows it to play MIDI Format 0.  This can be easily fixed with GNMIDFMT.
Both emulation engines in Adplug sound a bit different, but they're pretty accurate.  Worth a download, but still not capable of realtime music playback from games.
Use GNMIDFMT to convert between the different formats of MIDI (it won't affect the output in most players, it's just for compatibility):
http://www.gnmidi.com/gnmidfmten.htm
To make it play MID files you need to disable the filetype MID in the Nullsoft Midi input settings, and enable MID in ADPlug's settings (probably a restart is necessary after each extension change).  It's also incapable of playing Drums in Midi format 0 files, so it would be best to delete track 10 from the MIDI before converting it.
It probably needs the .DAT file from the second link aswell.  Try a Warcraft II song I converted.

Play and save Nintendo and Super Nintendo music through midi - always fun.
NSF2Midi
SPC2Midi
http://gigo.retrogames.com/download.html
http://www.zophar.net/music.html

Old or registered newer versions of the Nintendo emulator Pasofami have realtime midi output (the new versions have sound output disabled in the free trial version)
Marat Fayzullin's NES and GB emulators also have realtime midi playback and recording capabilities if you buy them (not reccomended).

PXTone by Pixel of Cave Story / Doukutsu Monogatari fame - a music sequencing program which was used to make the soundtrack of Cave Story.
Website - http://hp.vector.co.jp/authors/VA022293/pxtone/index.html
Tutorial - http://buzinkai.net/PXTone/tutorial/

Fludisynth - Crossplatform Soundfont loader/player for systems with no Soundfont support (extra links because I haven't compiled the latest version for windows yet):
Old windows build and source for newer ones - http://mirror.csclub.uwaterloo.ca/nongnu/fluid/
link - http://fluidsynth.resonance.org/trac/wiki/BuildingFluidSynth
link - http://qsynth.wiki.sourceforge.net/winbuild
link - http://fluidsynth.resonance.org/trac


Other interesting midi playing programs:

Tom's Midi Player TMIDI - good control over how it's played (can fix the channel 10 switching bug when using SFZ)
http://www.grandgent.com/tom/projects/tmidi/
MidiJam - 3d visualization of the instruments playing
http://www.gamesbyscott.com/midijam.htm
The Music Animation Machine - check out the nico nico douga videos - !konami code!
http://www.musanim.com/


Some extra links:

Soundshock - discussion forum for FM Synthesis
http://soundshock.se/phpBB2/
BeRo Mini Tracker - Win32 music tracker with OPL2/3 synthesis engine built in
http://bero.0ok.de/blog/projects/berominitracker
Chris Lomont's Vista compatible FM Tracker
http://www.lomont.org/Software/index.php
Adlib Tracker II -This is what most FM composers use to make OPL3 music.
http://www.adlibtracker.net/
Check out some demos of a Soundfont project being actively worked on by Breadrack/Nocouch - Sounds Awesome!!
http://www.youtube.com/user/breadrack
Adlib Digisnap - digitally record highest quality audio capable of being recorded from an OPL2 chip by soldering a LPT recording device right onto an adlib/sb/sbpro1 sound card.
http://www.student.oulu.fi/~oniemita/dsp/adlib/
Java synth library & patch editor
http://www.jsynthlib.org/
Malfunction's FM Synthesis Heaven
http://adlib.wave460.net/
Louis Gorenfeld's guide on getting started with FM
http://www.gorenfeld.net/lou/FMGuide.html
Qotile Slocum - this guy did some awesome Atari 2600 and C=64 hacking - links to atari 2600 midi implementation stuff too.
http://qotile.net/
BuzzMachines - Modular sound processing/building/tracking system.  Looks really interesting, I'll have to check it out better later.  Has lots of FM  modules.
http://www.buzzmachines.com/
OPLx Page - Information on programming for OPL, OPL2, and OPL3
http://www.oplx.com/
Korean IMS player (file format for Adlib based music)
http://sourceforge.net/projects/imsplay
Studio Compyfox: Hardware Research - software emulations of music hardware (synths, eq, dynamics, etc)
http://www.studio-compyfox.de/studio/temp/hw-research.php/
.NET Wrapper for OPL code.  Includes sourcecode for both OPL2 and OPL3
http://pi-r-squared.com/code/
Original Mame OPL3 code by Jarek Burczynski and Tatsuyuki Satoh.
http://mamedev.org/source/src/emu/sound/fmopl.c.html
FM Dreams 4-op FM synthesis waveform generator
http://www.geocities.com/SiliconValley/Campus/8645/fmdreams.html
Java implementation of OPL3 emulation
http://www.cozendey.com/opl3/opl3.html
Hardware OPL3 box (SWEET!)
http://www.ucapps.de/midibox_fm.html
YM2413 sourcecode/module for playing MSX music
http://www.pokipoki.org/dsa/index.php?VM2413
OPL3 Programming (Archive.org fetch)
http://www.fee.vutbr.cz/~arnost/opl/opl3.html
GNU Linux source that's probably great (Bisqwit's very tallented), but I'm not able to make it run in windows 'cause I don't know how to port or compile the sourcecode.
http://bisqwit.iki.fi/source/opl3emu.html
Midicode Midisynth - midi software synthesizer with Dual FM/AM
http://www.midicode.com/synth/index.shtml
Aldib sound card acivated through a paralell printer port (for newer motherboards)
http://www.raphnet.net/electronique/adlib/adlib_en.php
SoundFX NT - Commercial dos soundcard/FM emulation product (has anyone actually tried this?)
http://www.softsystem.co.uk/page4.html
Sound Generator Library - Japanese information for all(?) the Yamaha sound chips
http://www.ylw.mmtr.or.jp/~hosino/ma-net/sndgen.htm
Similar to above but in english (Archive.org fetch)
http://www.yamahayst.com/audio.htm
GUS Emulator for win9x/2k (I haven't tried it)
http://listen.to/gusemu/
Some Articles:
http://www.shipbrook.com/jeff/sb.html
http://www.soundonsound.com/sos/apr00/articles/synthsecrets.htm
http://www.soundonsound.com/sos/may00/articles/synth.htm
http://insidesynthesis.blogspot.com/2008/02/episode-four-fm-synthesis-part-1.html
http://www.geocities.com/SunsetStrip/Underground/2288/2fmsynth.htm#FM
http://www.gamedev.net/reference/articles/article447.asp
http://www.4front-tech.com/dmguide/dmfm.html


back story:

I found out that the sound I was looking for was made by a Yamaha YMF262 (OPL3) chip with drivers utilizing general midi timbres made by The Fat Man.  Yamaha hired him to develop the timbres for their SDK and drivers.  He also composed the music in a lot of the videogames you've played.

The first thing I tried was Dosbox as I know it's soundcard emulation is very accurate.
I downloaded a bunch of MID players for dos.  Most of them sounded slightly off because each had different FM settings for the General Midi instrument set.  I found one that used the BNK file made by The Fat Man:
http://www.dcee.net/Files/Programm/Sound/
vaisdk.zip at the bottom of the page.

Some other dos midi players of note:
http://www.hitechlabs.tk/ - Midier
ftp://ftp.externet.hu/pub/mirror/sac/sound/megam166.zip - Megamid
http://vogons.zetafleet.com/viewtopic.php?t=18412&amp;sid=6be96564bed32575392decc9451597e3 - Midpak

At least one of those other midi players requires the Midis to be in Format 0.

So-far so good.  Next I wanted to be able to use the soundcard emulation in realtime in windows.  There is a CVS version of Dosbox that has MIDI input capability.
http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1679781&amp;group_id=52551&amp;atid=467234
http://vogons.zetafleet.com/viewtopic.php?t=14690
http://vogons.zetafleet.com/viewtopic.php?t=17476

Unfortunately I couldn't find any dos programs to pass midi signals through to the different soundcard emulations in it so I never got any further there.

Same story with VDMSound.
http://sourceforge.net/projects/vdmsound/
http://en.wikipedia.org/wiki/VDMSound
It's emulation engine is strictly designed for dos programs only and I couldn't find any way to integrate it into win32 applications.  Aparently it's OPL3 emulation isn't very accurate anyway (according to the Adlib Tracker guys).

I searched for any Soundfonts that were made from OPL2 or OPL3 chips.  Although there were some collections of sounds, none covered the full GM instrument bank.
The closest I could find was a couple drumkits:
http://soundfonts.homemusician.net/drum_kits_and_percussive_kits_soundfonts/page8/index.html
http://www.hammersound.com/cgi-bin/soundlink.pl?action=view_category&amp;category=Drumkits%20and%20percussive%20kits&amp;ListStart=90&amp;ListLength=15
http://www.geocities.com/SiliconValley/Campus/8645/sf2.html

Then I found a program called Awave Studio that can load Adlib instrument banks (BNK format)
http://www.fmjsoft.com/awframe.html

After fiddling with it for awhile I managed to get all 128 instruments converted to waveforms from a BNK file I found in Master of Magic.  The drums didn't turn out, but with dosbox I managed to record all the drum sounds and compile everything into a full GM soundfont.
As a bonus, Awave Studio can output DLS instrument banks too for use in Microsoft's GM Softsynth (included with direct-x).

Well, I'm reasonably happy with the results and can finally play Sim City 2000 Special Edition with the music I remember from the dos version.

If you're still reading this you must have an amazing attention span!  I fully reccomend you now head on over to http://www.mirsoft.info/gamemids.php and relive the songs the way they were meant to be heard.

- Anapan (Anapan8@hotmail.com)


