fluid-dev
[Top][All Lists]
Advanced

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

[fluid-dev] MIDI mode


From: josh
Subject: [fluid-dev] MIDI mode
Date: Thu, 08 Oct 2009 01:07:54 -0700
User-agent: Internet Messaging Program (IMP) H3 (4.1.6)

So I went ahead and added GM On/Off and GS Reset SYSEX handling. There are now 2 parameters synth.midi-mode=normal/gm/gs and synth.midi-mode-lock=no/yes. If midi-mode-lock is set to yes then SYSEX MIDI mode messages have no effect (useful for forcing FluidSynth to a particular mode). If the current MIDI mode is GM or GS, then percussion note-offs are ignored for all except Long Guiro and Long Whistle, as per the GM spec. I tested this with a GS file and it seems to work as expected (no more missing drums).

TODO:
1 Reset MIDI mode as part of fluid_synth_system_reset()
2 Reset controllers when GM is turned on (and other values mentioned in gmguide2.pdf) 3 Figure out how to synchronize the midi-mode setting with the midi_mode variable, when it is being assigned from the synthesis context.

For item 3. I'm thinking of adding value get callback functionality to settings, so that a callback can be registered for obtaining the current value (so for example the midi-mode string setting could be generated from the current value of the enum synth->midi_mode). Perhaps some hack can just be implemented for now though, but calling settings functions from within synthesis context isn't really a good idea (mutex locks, mallocs, etc).

Feedback and testing would be appreciated :) The "normal" value for midi-mode doesn't sound great, but I couldn't think of a better word.

I'm going to do my best to get FluidSynth 1.1.0 released by the end of this month (in a nice working/stable state with good API documentation). Testing FluidSynth in various environments and reporting success/problems would be really helpful. There are some fairly significant changes with the whole synthesis path and the more testing FluidSynth in real word scenarios the better.

Cheers!
Josh





reply via email to

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