[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fluid-dev] FluidSynth tuning and more commits

From: josh
Subject: [fluid-dev] FluidSynth tuning and more commits
Date: Fri, 18 Sep 2009 12:18:06 -0700
User-agent: Internet Messaging Program (IMP) H3 (4.1.6)

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,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]