Software Wavetables

4th November 2021

 

Introduction

If you are new to wavetable synthesis for DOS I highly recommend you start by visiting my page on wavetable audio, and then come back to this one. Note that I am not an expert in this subject, or audio fidelity in any way - I am just an enthusiast, very much on the learning curve.

Software wavetables or software patchsets are files that contain the patches (sound samples or soundfonts - yes there are about 3 names for everything in the world of wavetable synthesis!).

These files are loaded at the time a game or music application calls for it, or when the audio device driver is first initialised. The size of a software patchset matches up with what would have been the ROM chip's capacity if the patches were stored in a ROM IC on the sound card itself, i.e. 1 MB, 2 MB, 4 MB or 8 MB usually. Typically the larger the size, the better quality of sound you can expect, since they either had different, higher-quality samples, or are non-compressed versions of the same samples.

There is no reason having a patchset in software means it is of less quality than a ROM-based patchset - the only difference is that the sound samples within the patchset need to be loaded into RAM, thus taking up more system resources - it is for this reason that some sound cards came with RAM banks which the sound card could use for temporary storage of patches instead of using valuable main memory. That, and it's cheaper to manufacture a sound card without a large ROM chip on it.


Two sound cards that use onboard RAM to store samples:
Creative Labs' AWE32 (top) and Advanced Gravis' Ultrasound
(bottom)

 

The patchsets themselves contain a list of instruments, but the majority of the file are base samples that are typically stored in PCM (Pulse Code Modulation) format, in addition to parameters such as effects. Typically some form of table in the file points an 'instrument' to a specific sample in the file, with an ID or a location. The General MIDI standard is one such table that many manufacturers conform to:

General MIDI Level 1 Instrument Families

The General MIDI Level 1 instrument sounds are grouped by families. In each family are 8 specific instruments.
PC# Family Name Instruments
1-8 Piano 1. Acoustic Grand Piano 2. Bright Acoustic Piano 3. Electric Grand Piano 4. Honky-tonk Piano 5. Electric Piano 1 6. Electric Piano 2 7. Harpsichord 8. Clavi
9-16 Chromatic Percussion 9. Celesta 10. Glockenspiel 11. Music Box 12. Vibraphone 13. Marimba 14. Xylophone 15. Tubular Bells 16. Dulcimer
17-24 Organ 17. Drawbar Organ 18. Percussive Organ 19. Rock Organ 20. Church Organ 21. Reed Organ 22. Accordion 23. Harmonica 24. Tango Accordion
25-32 Guitar 25. Acoustic Guitar (nylon) 26. Acoustic Guitar (steel) 27. Electric Guitar (jazz) 28. Electric Guitar (clean) 29. Electric Guitar (muted) 30. Overdriven Guitar 31. Distortion Guitar 32. Guitar harmonics
33-40 Bass 33. Acoustic Bass 34. Electric Bass (finger) 35. Electric Bass (pick) 36. Fretless Bass 37. Slap Bass 1 38. Slap Bass 2 39. Synth Bass 1 40. Synth Bass 2
41-48 Strings 41. Violin 42. Viola 43. Cello 44. Contrabass 45. Tremolo Strings 46. Pizzicato Strings 47. Orchestral Harp 48. Timpani
49-56 Ensemble 49. String Ensemble 1 50. String Ensemble 2 51. SynthStrings 1 52. SynthStrings 2 53. Choir Aahs 54. Voice Oohs 55. Synth Voice 56. Orchestra Hit
57-64 Brass 57. Trumpet 58. Trombone 59. Tuba 60. Muted Trumpet 61. French Horn 62. Brass Section 63. SynthBrass 1 64. SynthBrass 2
65-72 Reed 65. Soprano Sax 66. Alto Sax 67. Tenor Sax 68. Baritone Sax 69. Oboe 70. English Horn 71. Bassoon 72. Clarinet
73-80 Pipe 73. Piccolo 74. Flute 75. Recorder 76. Pan Flute 77. Blown Bottle 78. Shakuhachi 79. Whistle 80. Ocarina
81-88 Synth Lead 81. Lead 1 (square) 82. Lead 2 (sawtooth) 83. Lead 3 (calliope) 84. Lead 4 (chiff) 85. Lead 5 (charang) 86. Lead 6 (voice) 87. Lead 7 (fifths) 88. Lead 8 (bass + lead)
89-96 Synth Pad 89. Pad 1 (new age) 90. Pad 2 (warm) 91. Pad 3 (polysynth) 92. Pad 4 (choir) 93. Pad 5 (bowed) 94. Pad 6 (metallic) 95. Pad 7 (halo) 96. Pad 8 (sweep)
97-104 Synth Effects 97. FX 1 (rain) 98. FX 2 (soundtrack) 99. FX 3 (crystal) 100. FX 4 (atmosphere) 101. FX 5 (brightness) 102. FX 6 (goblins) 103. FX 7 (echoes) 104. FX 8 (sci-fi)
105-112 Ethnic 105. Sitar 106. Banjo 107. Shamisen 108. Koto 109. Kalimba 110. Bag pipe 111. Fiddle 112. Shanai
113-120 Percussive 113. Tinkle Bell 114. Agogo 115. Steel Drums 116. Woodblock 117. Taiko Drum 118. Melodic Tom 119. Synth Drum 120. Reverse Cymbal
121-128 Sound Effects 121. Guitar Fret Noise 122. Breath Noise 123. Seashore 124. Bird Tweet 125. Telephone Ring 126. Helicopter 127. Applause 128. Gunshot

Today I will explore a variety of the patchset formats, and where possible give my impression as to their quality. For the most part, patchsets conform to the General MIDI standard but each hardware manufacturer went their own way when it came to how they stored instrument samples in their files.

In this part 1, I will start by exploring Creative Labs' version of a software patchset, the "Soundfont".


Creative Soundfonts - .SBK and .SF2 Files

With the release of the Sound Blaster AWE32 by Creative Labs in 1994, the "SoundFont" format was born. Originally, these were .SBK (probably meaning SoundBank), also sometimes called SoundFont 1.0 files. A development of this occurred two years later in 1996 with the .SF2 format (SoundFont 2.0), which got a further update to 2.01 in 1998.

The .SBK format does not include samples within the file itself - it simply provides the details of how to make the instrument using the patches that are held in the E-Mu 1 MB ROM.

You can convert .SBK to .SF2 using DOS utilities such as SF1TO2. Creative themselves produced a .SF2 soundfont editor called Vienna SoundFont Studio (see right).

The AWE32, Sound Blaster 32 and AWE64 all support .SBK file and .SF2 files that are SoundFont 1.0 or 2.0 only (v2.01 is not supported on these cards). PCI cards including the SB Live! series and Audigy series support .SF2 v2.01 also.

Loading a Custom SoundFont in Windows

On older Creative cards, you can change the loaded soundfont by using the AudioHQ software. On newer Creative cards you can change the loaded soundfont by copying the .SF2 file into your Windows\System32 folder, then open the SoundFont Bank Manager in your Creative folder. Beside the soundfont on the left, click on "Bank", highlight the bank you want to replace and click "Remove". Then click on "Load" and locate the .SF2 file you copied.

Thomas Hammer (HammerSound.com) wrote a small utility called SF2LOAD to run from the DOS shell command line in Windows - its purpose is to allow you to automate the changing of the soundfont via a batch file without having to click a load of things in AWE Control Panel.

Loading a Custom SoundFont in DOS

Surprisingly, Creative Labs did not provide a DOS utility to allow you to change the soundfont - you could only do this via the Windows AWE Control Panel.

One way you can apparently load a different .SBK in DOS is via the AWEUTIL tool that came on the Creative Labs driver disk. This "emulates" a true MPU-401 interface and supports GM, GS and MT-32 soundbanks (.SBK files). To do so, copy your soundfont file to the same directory as the AWEUTIL.COM file, change the filename of the default .SBK soundfont file (SYNTHGM.SBK) to something like SYNTHGM.OLD, and then change the name of your new soundfont file to SYNTHGM.SBK. Once you have switched the files out, run AWEUTIL /EM:GM in order to start the General MIDI emulation - depending on the size of your replacement .SBK file it wll take a while to load it into the sound card's memory.

AWE64 Limitations

Bear in mind the AWE64 has only 512 KB (Value), 1 MB (Standard) or 4 MB (Gold) of DRAM onboard for soundfonts if you don't want to use the built-in set that is in the 1 MB ROM chip. There is no way for Creative Labs cards to use system memory for soundfonts. Onboard memory can be expanded by 8 MB using a proprietary memory upgrade board, (CT1930 is 8 MB, CT1950 is 28 MB), from Creative Labs, though these expansion cards are very rare and expensive these days.

Following the commercial success of the AWE32, numerous musicians created their own .SF2-format soundfonts. Some of the more prominent ones include:

  • Unison - a free 28 MB (!) soundfont by Peter Jevnisek, a.k.a. Aweman. Peter designed this in order to improve the quality of MIDI playback. It is fully GM-compatible but also adds 30 Roland GS melodic variation tones and 10 drum kits. In order to use the Unison soundfont you need either a Sound Blaster 32, AWE32 or AWE64 with 28 MB of onboard memory, or a Sound Blaster Live! with at least 64 MB of system RAM. You also need a Windows program called sfArk in order to be able to decompress and use the soundfont. Nearly all of the samples that make up the Unison soundfont were collected and converted from other formats including Kurzweil, Yamaha, Roland, Ensoniq, Akai, Kawai, Oberheim, and Gravis Ultrasound, to name but a few. Click here to download:
  • 8MBGM ENHANCED - An 8 MB soundfont by holbred, based on the Merlin 8mbgm_plus13. He writes "In comparison with other big soundfonts, this one sounds best if you play Descent and other games that use the General MIDI standard. It is considerably better than the CT4MGM.SF2 soundfont that is loaded when you play MIDI sounds with, for example, an Audigy 2. However, it has still some flaws. So I improved it with instruments of other soundfonts. I orientated myself on the MIDI sound of my Terratec Maestro 32/96. This ISA card is able to play MIDI songs in a quality that is unsurpassed by PCI sound cards in most cases.". Click here to download:
  • Chaos12MB v1.9 - A 12 MB soundfont by Cyber Punk Yun (Real name Seong-jin Yun) that comprises GM, GS, and an MT-32 sample set. The author asks that anyone referencing this soundfont link back to their website, but unfortunately it appears to be a dead link. Click here to download:
  • Merlin 4MBGM_Plus12 - A 6 MB soundfont (11 MB when unpacked) by  Lavio Pareschi who writes 'This is the standard 4MB Emu sound font improved with instruments from big Merlin sf2. Now you can use the standard sf2 included in all Creative Labs sound boards but with much better strings, piano, violin, cello, oboe, English horn, fiddle and several important improvements.". Use SFPack (included in ZIP file) to unpack it. Click here to download:
  • Merlin 8MBGM_Plus13 - Based on the standard 8MB Emu/SBLive soundfont, but improved with instruments from big Merlin sf2. Now you can use the standard sf2 included in all Creative Labs sound boards with much better strings, piano, violin, cello, oboe, english horn, fiddle, voices and several important improvements.". Use SFPack (included in ZIP file) to unpack it - it is 15 MB when unpacked. Click here to download:

As you can see, the size of these soundfonts is typically much larger than the largest ROM-based General MIDI sound card, so the audio sample quality should be amazing! A couple of utilities were commonly used to compress SoundFont files for easier portability. sfArk and SFPack - both are Windows 98 applications.

Other tips to getting the most out of these soundfonts are:

  1. Disable CMSS 3D in your Creative software - this is the surround sound mixer.
  2. Enable 'Static Caching' in the SoundFont Bank Manager, under 'MIDI Devices'.
  3. If you have issues loading the soundfont, check the cache size is not set too small.

 

Join me in Part 2 for coverage of the Ensoniq AudioPCI and Advanced Gravis Ultrasound!