Greetings,

I posted a question on using fluidsynth to extract .sf2 sounds to .wav files a 
few weeks ago. The answers I received indicated I had to get a better grasp of 
the subject matter and as a consequence I had to think over what I am doing.

Sorry if this post is perhaps only marginally related to fluidsynth. I am 
trying to develop a better grasp on soundfonts and fluidsynth may or may not be 
what I will need to use in my project (which I currently have a hard time 
telling because of my limited understanding of the subject matter).

I am hoping quite a few people here are familiar with the nitty gritty of the 
soundfont standard (since fluidsynth implements it) and might be able to help 
me get a better grasp on what the soundfont standard entails and how to work 
with it.

So, my original project was to look for ways to extract soundfont samples so 
friends could use it in a sampler they are writing in supercollider. What that 
sampler does is essentially loop over the samples and apply envelopes.

I dug into the soundfont spec, which illustrates the synthesis model of 
soundfonts very roughly as follows:
A wave table oscillator loops over the wavetables, its output is sent through a 
dynamic low-pass filter. The result is modified by an envelope amplifier 
(DAHDSR) and then sent to effects units that control pan, reverb and chorus. 
The modulation engine feeds output of vibrato and modulation LFOs as well as 
modulation envelopes into various stages of the pipeline above. 

We were under the (probably naive) impression that all a sampler needs to do is 
loop over wave tables and apply envelopes. Seeing that the soundfont 
specification actually allows for greater complexity makes us wonder whether in 
order to play soundfonts, the sampler needs to be able to do all the things in 
the synthesis model. Unless there is a discrepancy between what the 
specification allows for and what most soundfonts look like in the wild. If a 
substantial fraction of soundfonts just loop over wave tables and apply 
envelopes, the sampler might still be useful for that subset of soundfonts if 
it just grabbed their wave tables and envelope parameters. The answer must be 
trivial for someone who has used soundfonts for a bit, I must admit it is not 
clear to me.

Otherwise (i.e. if soundfont generally make full use of all the parts of the 
synthesis engine laid out in the spec), I see 2 options: 
1.Implement the entirety of the synthesis model and use the parsed soundfont 
parameters as input (That sounds like reimplementing a lot of what fluidsynth 
already does).
2.Play the soundfonts via fluidsynth and record the output. The sampler then 
loops over that output and applies envelopes. Does 2. even make sense or is it 
likely to mangle the sounds? If it is reasonable, how many notes should I have 
for each pitch? One per pitch or one per envelope phase (i.e. 5 for the DAHDSR 
envelopes since delay doesn't make a sound) per pitch?

I guess this might be related to how many wave tables are usually used for a 
given instrument in the soundfont format. One per pitch? One for every envelope 
phase of every pitch?

My apologies if I am somewhat lacking coherence here, I am still trying to get 
a decent grasp on the subject matter.

Best regards,
Michael
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to