Changing soundfonts
Contents
Introduction
Where typesetting has typefaces (better known as "fonts"), audio has soundbanks (better known as "soundfonts"). The original soundfont format was introduced by E-Mu years ago (with files containing the extension .SBK) and has since been updated, standardized, and popularized by Creative Labs. With soundfont capabilities inherent in pretty much every Creative Labs sound card now, the original E-Mu specification has been updated to version 2, denoted by the extension .SF2, and has been expanded to better take advantage of the power of the sound card.
Originally there wasn't much memory into which to load a soundfont, but now there's much more memory and even the ability to use non-sound card resources to allow for larger soundfonts. When Microsoft updated their DirectX framework to version 6, they introduced the ability to use a new format of soundfont, DownLoadable Soundbank, or DLS, format soundfonts (with files containing the extension .DLS). Since then, every version of Windows now not only installs DirectX 6 or higher, it also installs a default soundfont created by Roland.
How to change your system soundfont
Many people want to know how to change their system soundfont. If you have an SF2 enabled sound card (such as a recent one from the SoundBlaster series) it's rather easy and you're only limited by the amount of memory available to your sound device. You're also able to use either SF2 or DLS format soundfonts if you so choose. If you do NOT have an SF2 enabled sound card or you use a Mac, you'll have to settle for using only DLS format soundfonts. Many people say the default Windows soundfont sucks (and I'm one of them) and wonder not only how to change it, but also where CAN we find alternate DLS format soundfonts? What I CAN say is it's actually much easier to change it than to find it.
Creating a DLS format soundfont (Windows)
If you decide to create a DLS soundfont instead of downloading one, there are two programs of which I know can help you. One is Microsoft DirectMusic Producer (DMusProd), which is available free for download from Microsoft's site. There are two main things you must know about DMusProd: one, you must download the version that is specific to your currently installed version of DirectX (as in download DMusProd 8 if you have DX8 installed, DMusProd 9 if you have DX9 installed; I'm unsure about DX10); two, if you choose to download it from Microsoft, you are required to use the Windows Genuine Advantage validator tool, and therefore if you have a pirated version of Windows installed, you will not be able to download it from Microsoft's website. If this is the case, look for a non-MS site that has it.
The other program is FMJSoft Awave Studio, at the time of this writing version 10. It is known for being able to open almost any sound file under the sun, including some of the more obscure ones, and has the distinction of being the only program currently available that can read AND write SF2 AND DLS format soundfonts. If you happen to have an SF2 format soundfont and you'd really like to use it as a DLS format soundfont, simply open it in Awave Studio and save as a DLS file (though, for compatibility purposes I'd recommend saving as a DLS level 2 format soundfont, as level 1 has a few limitations that prevent a one to one conversion, such as no support for layered regions). The download available on the website is a 30 day trial (crippleware, really; you can only do one instrument at a time), after which you'll have to pay about $130 USD for the full version.
Editor's note - if you have the money and Windows, I GUARANTEE that Awave Studio is worth it. - NeoLogiX 22:49, 11 September 2007 (IST)
Whichever program you choose, please refer to the appropriate documentation if you are unsure of how to use it.
Windows 2000, XP, Vista, or Seven (SF2)
If you have an SF2 capable sound card, you can use SF2 format soundfonts. Chances are good that if you have a SoundBlaster series card that's SBLive or later, you installed the Creative SoundFont Bank Manager (SFBM). If you didn't install SFBM, I don't know what to tell you. If you DID install SFBM, chances are good you know how to use it. If you don't, refer to Creative Labs's documentation on how to use SFBM. I may or may not put a tutorial on how to use SFBM and the helper program SoundFont Librarian (SFLib), but if Creative Labs changes those programs my tutorial will make no sense.
In short, use SFBM to change your system soundfont if you have a Creative Labs SF2 capable sound card.
Windows XP, Vista, or Seven (via software)
In March of 2011, developers kode54 (of foobar2000) and mudlord (of various emulation projects) released a usermode driver based on the same BASSMIDI code used for foo_midi which allows the dynamic loading of SF2 format soundfonts into memory via the MIDI Mapper. This driver allows for non-soundfont capable cards (eg, integrated audio cards like Realtek) to use soundfonts. mudlord's original announcement, and further in the thread links to newer versions of the driver and its configuration tool, can be found at hydrogenaudio forums.
Windows 2000, XP, or Vista (DLS)
If you do not have an SF2 capable sound card, you're stuck with using DLS format soundfonts. Firstly, good luck finding one. Even on the internet, valid .DLS files are few and far between. Don't lose hope, however! There does exist a rather high quality (at least, compared to the default Roland soundfont installed with Windows) DLS soundfont on the internet: the updated Final Fantasy 8 DLS soundfont. Visit http://aaronserv.dyndns.org/hosting/ffsf/ for details and downloads. If you're not satisfied with the FF8 soundfont, you can download a DLS soundfont I have made and will post the link to once I've uploaded it.
As far as changing your Windows DLS soundfont goes, there are two methods.
Method 1
Do you just want to get rid of the default soundfont? There exists a file called GM.DLS in the system32\drivers folder of your Windows installation directory. Normally, any attempt to overwrite this file using a file copy or file move operation results in a restoration of the original file. This is because there is a background process called System File Checker (SFC) open that "protects" system files by restoring the original file in case of deletion or replacement. Disable SFC temporarily (refer to Microsoft documentation on how to do this), then first replace the GM.DLS file in the system32\dllcache folder in your installation directory (it's hidden by default) with your preferred DLS format file, then replace the file in the aforementioned drivers folder.
Method 2
Don't want to turn off SFC, but are comfortable editing the registry? First, open dxdiag and once the progress bar stops click on the "Music" tab and note the file name at the top of the window. Close dxdiag. Open regedit and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectMusic and look at the right pane. There is a variable named GMFilePath with type REG_EXPAND_SZ (REG_EXPAND_SZ means you can enter text that contains a variable, in the form of %variable%, and it will replace the variable with its value). It is most likely set to %SystemRoot%\SYSTEM32\drivers\GM.DLS (%SystemRoot% being the folder to which you installed Windows, usually c:\windows or c:\winnt). Change this value to the location of your preferred DLS format file. If the file is located within your My Documents tree, you can use %USERPROFILE%\My Documents instead of a hardcoded c:\Documents and Settings\yourusername\My Documents (this has the added bonus of allowing other users of that Windows installation to have a DLS file of the same name and location as their replacement soundfont, so long as there exists such a file). This will not replace the GM.DLS file that exists in the drivers folder, and apparently, will not work on all programs. So far, the programs I've found that don't take this change into account are Windows Media Player (for whatever reason), Cakewalk SONAR, the Windows version of Apple QuickTime (though the method to change a soundfont in Windows QuickTime is shown below), and (unfortunately) Sphere (which I hope would take only a small change in Audiere to fix). Method 2 works great in Winamp and certain other DirectMusic enabled programs that reference the registry key instead of the hardcoded location of the GM.DLS file. If you want to make sure that the path change was accepted, open dxdiag again and check the "Music" tab. If the file name did not change, you did something wrong.
Windows 2000, XP, or Vista (QuickTime)
If you have QuickTime for Windows installed (preferably version 6 or higher) and you'd like to like to change the default soundfont used by QuickTime apps, use the following procedure. First, navigate to the QTSystem folder inside QuickTime's installation folder (default installation folder is C:\Program Files\QuickTime\). Put your replacement soundfont in this folder. Now open the QuickTime control panel and find the option to change the default music synthesizer. Set the music synthesizer to the desired soundfont (the name shown is the name given in the file itself, NOT the file name). This works for both DLS AND SF2 format soundfonts.
NOTE: If you choose an SF2 format soundfont for QuickTime and your computer's sound card isn't SF2 capable by default you may experience a slight discrepancy in sound quality depending on soundfont, as QuickTime will have to software synthesize SF2 capabilities instead of relying on hardware. The biggest discrepancies can be heard using the SF2 format soundfont "Musica Theoria," more so on songs with Square Wave (patch 80 decimal or 0x40) and/or Saw Wave (patch 81 decimal or 0x41), possibly because of an error in QuickTime's handling of SF2 chorus, reverb, and/or minor layer detuning processing.
--NeoLogiX 22:49, 11 September 2007 (IST)
Mac OS X (QuickTime)
If you have Mac OS X (preferably Tiger) with QuickTime installed (preferably version 6 or higher), use the following procedure to change your system soundfont. Navigate to Library/Audio/Sounds/Banks in your hard drive's root directory (unless you changed it, there should still be an alias to the hard drive on your desktop; if you're in Terminal, the hard drive root would be /Volumes/YOURHARDDRIVENAME/ where YOURHARDDRIVENAME would be replaced by the name of your hard drive). Put your replacement soundfont in this folder. Now open QuickTime Preferences and find the option to change the default instrument set. Set the instrument set to the desired soundfont (the name shown is the name given in the file itself, NOT the file name). This works for both DLS AND SF2 format soundfonts.
Linux (Rosegarden and timidity++)
I do not presume to know how to do much in Linux. What I DO know is that Sphere user Kamatsu has been able to successfully setup a soundfont based system and has documented the procedure at http://musicrepository.net/kamatsu/music_linux.pdf (the documented method of setting up timidity++ in Linux is slightly different than setting up timidity++ in Windows; there will be a section on how to set up a soundfont using timidity++ in Windows soon).