Hello FluidSynthians ;)
I committed some more thread safety related changes, in particular
with SoundFont loading/unloading and presets. There is now another
low priority timer thread which processes return events from the
synthesis thread (for freeing data and other things which shouldn't be
done in the synth context).
I think one of the only remaining areas that is broken in regards to
thread safety is the whole tuning infrastructure. The reverb and
chorus fluid_synth_* routines are also problematic areas, since double
floating point values are being assigned, which aren't atomic on SMP
machines. This could potentially lead to synthesis glitches when
values are being assigned.
I'm a little bit perplexed in regards to the tuning routines though.
It seems that it allows for arbitrary per MIDI note tuning
modifications, using floating point values in cents. Tunings are
added by instrument bank and program #s. What is strange, is that it
seems these tunings only take effect when fluid_synth_select_tuning()
is called, to activate an existing tuning on a given bank and program.
What is strange, is that this is never called in the FluidSynth code
base, meaning that tunings will only be active if an external
application activates them, which seems to defeat the purpose of
bank:program tuning assignment. It seems to me like a tuning should
be automatically used when a bank/program change occurs, if there is
an assigned tuning for the given bank/program. The tuning
infrastructure should probably also be integrated with MIDI tuning
standards, for assigning tunings via MIDI. It seems like the tuning
system is currently not entirely complete. Any opinions on this?
Best regards,
Josh
_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
http://lists.nongnu.org/mailman/listinfo/fluid-dev