Some time ago I updated the hooks into Fluidsynth for the ChucK music programming language to support the tuning API. I wrote a sample program which used the
FluidR3_GM.sf2 soundfont. In my test, I mapped notes to MIDI note numbers that were not close to the frequency they represent in the standard mapping; for instance I mapped 6968.8259 cents to MIDI note 0, and this seemed to work fine.
Much later, I tried using these same Fluidsynth calls via ChucK with a different soundfont (Nice-Keys-Ultimate-V2.3.sf2 which is freely available from https://sites.google.com/site/soundfonts4u/
) and I had a very different experience: the sound I got out depended on which note I was mapping it to.
When I mapped 6000 cents to note 0, I got no sound at all.
When I mapped 6000 cents to note 20, I got a really thin-sounding piano middle C note.
When I mapped 6000 cents to note 60, I got a normal-sounding piano middle C note.
When I mapped 6000 cents to note 90, I got a rich bell-like middle C note.
My hypothesis is that when fluidsynth maps samples to midi note numbers when tuning, it uses samples near the note number being mapped to, perhaps altering the frequency a lot, to get to the desired tuning. I would have instead expected that samples near the desired tuning were used to generate the note, chosen so as to only have to alter the frequency a minimal amount, and that is triggered by the arbitrary MIDI note number it's mapped to (which should play no role in the choice of samples).
Is my understanding correct? Is there something I can do to get the behavior I expected?