SOUNDFONT COMPATIBILITY GUIDE v1.2
Updated 03/15/02
Pruned 01/27/09

------------------------------------------------------------------
-written by S. Christian Collins

 

INTRODUCTION

There are a number of consumer products that claim to support SoundFont technology.  This includes both hardware and software synthesizers, but the most common are the sound cards made by Creative Labs.  Over the years, Creative Labs has released 3 series of Sound Blaster sound cards that support SoundFont technology, first the AWE32/64, then the Live!, and finally the new Audigy.  E-MU, who developed the SoundFont technology back in the early 90's, released their own SoundFont-compatible hardware, the E-MU Audio Production Studio (APS) around the same time as the Live!, and based on the same hardware.  Since Creative Labs owns E-MU, this isn't too surprising.  There are also software synthesizers that support SoundFonts including Seer Systems' Reality Synth, Cakewalk's Sonar, and others.  Of the software synthesizers, I have only been able to test Reality, since I do not have access to any others at the moment.

The purpose of this guide is to educate SoundFont designers so they can properly achieve compatibility with the widest range of SoundFont hardware and software.  Of the hardware studied in this guide, the AWE32 and Live! are both SoundFont 2.0 compatible, and the Audigy and E-MU APS are SoundFont 2.1 compatible.  In theory, SoundFont 2.1 should be backwards-compatible with 2.0, right?  We'll see if that is the case.  Windows 98 Second Edition was used for all tests, so results on other operating systems may vary.

 

TESTS

When developing GeneralUser GS, I noticed a few differences between the SoundFont engine on my AWE32, and my Sound Blaster Live!  Thankfully, I was able to find a happy medium and make the SoundFont bank work with both cards.  Unfortunately, when I got an Audigy, things were further complicated.  At first I wasn't sure if I could make GeneralUser GS compatible with all four cards, but over time I discovered a way to make it work.  It isn't the easiest thing to do, but it's not rocket science either.

1.    The first test, "Attack sharpness" finds the number in seconds where the sound becomes noticeably less sharp.  These are the values given to me by Vienna SoundFont Studio 2.3.  I have discovered no difference between an attack of 0.001 sec. and 0.005 sec., but when 0.006 sec. is used, a sample with a very sharp attack will suddenly sound a bit "mushy".  This is good to be aware of if you want to remove an unwanted click at the beginning of a sample, for example.  For the test, I created a sine waveform and placed a high numerical value in the first bit of data to contrast with the low value in the second bit.  To our ears, this will sound like a click.  The test is to find out if an attack value of 0.006 will make the click inaudible.  As we can see from the test results below, the Reality synth is the only one to fail in this area.  Not only can you hear the click on a 0.006 second attack, you can still hear it at 0.01 (I didn't test higher).  Obviously, you need only concern yourself with this test if you are aimed at making your SoundFont compatible with the Reality SoftSynth.

 

AWE32/64

Live!

Audigy

E-MU APS

Reality

Attack sharpness:

 

       
Attack = 0.001 sec. Click Can't hear click* Click Click Click
Attack = 0.005 sec. Click Can't hear click* Click Click Click
Attack = 0.006 sec. Can't hear click Can't hear click Can't hear click Can't hear click Click

* - On the Sound Blaster Live!, setting the attack to 0.001 through 0.005 still sounds sharper than setting it to 0.006 and higher, even though you do not hear the first bit of data.

SOLUTION:  There doesn't seem to be one.


2.    The second test, "Attack-based velocity-to-filter" is a bit more complicated to explain.  On the AWE32, when the Attack is set to 0.007 seconds or higher, the filter will begin to scale with the key velocity.  In other words, if you play a note lightly on the keyboard, the filter will "mellow" out the sound, and if you press the key harder, the sound will be brighter.  As we can see from the test, the Live! only begins this behavior after the attack reaches 0.008 seconds.  This wasn't too hard of a problem to solve, since I just had to set the attack to 0.008 seconds and both the Live! and the AWE32 were happy.  This effect doesn't kick in on the Audigy, E-MU APS, or Reality Synth.  For the filtering test, I used a sawtooth wave, and played velocities at multiples of 16 until 127, then listened to hear if the filter kicked in:

 

AWE32/64

Live!

Audigy

E-MU APS

Reality

Attack-based velocity-to-filter:          
Attack = 0.006 sec. Inactive Inactive Inactive Inactive Inactive
Attack = 0.007 sec. Active Inactive Inactive Inactive Inactive
Attack = 0.008 sec. Active Active Inactive Inactive Inactive

SOLUTION FOR AUDIGY/APS:  The solution can be achieved using an Audigy or APS and Vienna SoundFont Studio 2.3 version 1.31.01 (currently only available on the Audigy Platinum CD) or Vienna SoundFont Studio 2.4.  Look through the SoundFont in question and find any instruments or presets where the attack is set to 0.008.  Right-click on that instrument or preset, and select "Modulator Properties" from the menu.  Then click the "New" button, and set the following parameters on the new modulator:

        Primary source: Key on velocity
        Destination: initialFilterFc
        Secondary source: <None>
        Primary mapper: Linear (-, Mono)
        Amount: -2400 or -3600 (you will have to use your ear to match up the sound--there doesn't seem to be a foolproof value)

If a modulator with the same Primary source and Destination exists, modify the existing one instead of creating a new one.

SOLUTION FOR REALITY:  None yet.  I will have to use a friend's system to test Reality since the demo version has expired on my computer.


3.    The third test, "Velocity split" exploits a phenomenon that is found on both the Audigy and E-MU APS.  What happens is the following:  If you set the filter to a moderate level, i.e.. 4000 Hz, you will hear a distinct difference in the filtering between the velocities 64 and 65.  65-127 will sound with the correct filtering level, but 0-64 will sound more muffled than it should.  This break is also noticeable when velocity scaling is introduced via the modulator properties (SoundFont 2.1 only).  I tested this phenomenon twice, first with a sharp attack, and then with a dull one.  I played 4 sounds alternating between a velocity of 65 and 64 with the filter set to 7000 Hz.  In the test results listed below, the letter 'S' indicates the sound was sharp, and the letter 'D' indicates the sound was dull, or filtered.

 

AWE32/64

Live!

Audigy

E-MU APS

Reality

Velocity split:          
Attack = 0.001 sec. No split (SSSS) No split (SSSS) Split (SDSD) Split (SDSD) No split (SSSS)
Attack = 0.008 sec. No split (DDDD) No split (DDDD) Split (SDSD) Split (SDSD) No split (SSSS)

SOLUTION FOR AUDIGY/APS:  You will need to search every entry at the Instrument level (found in the global zone if present, otherwise found in the individual samples) for the presence of a modulator with the following properties:

        Primary source: Key on velocity
        Destination: initialFilterFc
        Secondary source: Key on velocity
        Primary mapper: Linear (-, Mono)
        Secondary mapper: Switch (-, Mono)
        Amount: -2400

The cause of this behavior is the secondary source and mapper, because it uses a "switch" which is activated at velocities 65 and higher.  Simply set the secondary source to <None>, or delete the modulator altogether if you don't want any velocity-based filter effects.

SOLUTION FOR REALITY:  None yet.  I will have to use a friend's system to test Reality since the demo version has expired on my computer.


4.    Test number four exploits two of the more obscure features: "sample offset" and "force velocity".

Sample Offset: This feature can be used to start playing a sample at a location other than the very beginning by using the sample start offset.  Likewise it can also be used to cut the sound short by adjusting the sample end offset.  This is handy for creating instruments with attacks that vary according to velocity, among other things.  If you know the order of your samples (as stored in the SoundFont bank), you can actually use a negative sample start to include part of the previous sample in the instrument.  The same principle applies inversely to the sample end offset. (I have only been able to successfully test this phenomenon in SoundFont 1.0 format using Esbeekay.)

Force Velocity: Force velocity will play the instrument or sample at a specified volume level, regardless of the keyboard velocity played.  This can come in handy when emulating instruments that normally don't have velocity-sensitivity, such as an organ or harpsichord.  Also, force velocity works with sample splits, so you can have the keyboard velocity trigger different samples, but they will still be at the forced volume.

Let's see how our contestants fared:

 

AWE32/64

Live!

Audigy

Reality

Sample Offset Pass Fail Pass Pass
Force Velocity Pass Fail Pass Fail

As you can see, I was not able to run these two tests on the E-MU APS.  If some kind E-MU APS owner wouldn't mind running the test on his or her APS system, I would be very grateful.

SOLUTION:  None yet.


5.    Our final test seems to apply only to Vienna v2.3.  When editing SoundFonts using the three different Sound Blaster cards, Vienna will allow a different maximum filter setting.  I consider the AWE32 maximum to be in error since other editors, including Esbeekay and Preditor, do not show this limitation.

 

AWE32/64

Live!

Audigy

Highest Filter: 8,000 Hz 20,000 Hz 20,000 Hz

SOLUTION:  In order to obtain 100% unfiltered sound, set the filter to default.  If the 8,000 Hz is colored black and not red in Vienna, then it should show up as 20,000 Hz when edited on a Live! or Audigy sound card.  This test is not applicable to any software synths, since Vienna will only work with SoundFont-capable hardware.


DOWNLOAD

If you want to run these same tests on SoundFont-compatible hardware and/or software, you can download the diagnostic SoundFont here.  You will need to load the SoundFont into bank 1 or 0.  Upon playing the MIDI you will hear a series of test tones in the following order:

  1. 1 note - sine wave, attack = 0.00
  2. 1 note - sine wave, attack = 0.005
  3. 1 note - sine wave, attack = 0.006
  4. 8 notes - saw wave, respective velocities of 16, 32, 48, 64, 80, 96, 112, 127, attack = 0.006
  5. 8 notes - saw wave, respective velocities of 16, 32, 48, 64, 80, 96, 112, 127, attack = 0.007
  6. 8 notes - saw wave, respective velocities of 16, 32, 48, 64, 80, 96, 112, 127, attack = 0.008
  7. 4 notes - saw wave, respective velocities of 65, 64, 65, 64, attack = 0.001
  8. 4 notes - saw wave, respective velocities of 65, 64, 65, 64, attack = 0.008
  9. A voice says "sample offset" and then either "working" or "not working".
  10. A voice says "force velocity" and then "working" if it is working, otherwise it says nothing.

For your reference, I have also provided MP3 audio samples of the five synthesizers tested here (excluding the sample offset and force velocity tests).

Sound Blaster AWE32
Sound Blaster Live!
Sound Blaster Audigy
E-MU APS
Reality Software Synthesizer

 

MORE INFO

Special thanks go to Nando Florestan, Milton Paredes, "Guizzo", Frank Wen, and others who have provided valuable input into this project.  Hopefully our efforts will lead to future improvements that we all can enjoy.

If you have any questions, please feel free to E-mail me at s_chriscollins@hotmail.com.

God Bless!
-~Chris

Return to the website of S. Christian Collins