sf2 volume discrepancies caused by attenuation handling

• Aug 3, 2015 - 20:07
S4 - Minor

Win7 x64, Musescore 2.0.2, MIDI import.

FluidSynth and BASSMIDI only attenuate 40% of the numeric value, while MuseScore/Fluid attenuates 100% of instrument-level.

So the more heavily attenuated samples are quieter than normal, while the less attenuated samples are louder than normal. This results in balance problems.

This is noticeable in SGM soundfont strings.

I made a quick test sf2. Here's an archive containing a test sf2 and two MIDIs.


"Attenuation Test.sf2":

Patch 0 contains a loud attenuated sample from 0 through middle C through F, and a quiet sample from F# to 127. The sample is attenuated in the instrument setup.

Patch 1 contains only a loud attenuated sample. Patch 2 contains only a quiet sample. The sample is attenuated in the patch setup.

The loud sample is 1/2 scale amplitude. The quiet sample is 1/20 scale amplitude (20 dB attenuation of the loud sample). It is 1/10 the amplitude of the loud sample, but given a 50 dB head start in sf2.

All 3 presets/patches sound identical in Polyphone SF2 editor, BASSMIDI/foo_midi, BASSMIDIdrv, and Qsynth/Fluidsynth. They do not in Musescore.

You need to import all MIDIs via Musescore.

scale60.mid uses patch 0 and plays back a scale from middle C through B. The volume is constant in BASSMIDI and FluidSynth, but not in MuseScore "Fluid sf2".

scale60.2.mid alternates between patches 1 and 2, playing the same scale. The volume is constant in BASSMIDI and FluidSynth, but not in MuseScore "Fluid sf2".