[Top][All Lists]

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

Re: [fluid-dev] Short note durations on percussion channel

From: josh
Subject: Re: [fluid-dev] Short note durations on percussion channel
Date: Sat, 03 Oct 2009 22:53:48 -0700
User-agent: Internet Messaging Program (IMP) H3 (4.1.6)

I had a brief look over TiMidity++ code. The license is GPL and therefore not compatible with FluidSynth, so its just for reference.. I have up until now not really looked much at TiMidity++. It looks really powerful and seems to emulate tons of different synthesizer modules and what not. I don't think we should even try to compete in that area with it! The number of processed SYSEX messages is enormous. FluidSynth probably has its own niche, though I'm not really sure what exactly it is, perhaps someone else has a better overview of both of them. FluidSynth is embeddable and probably a lot simpler. I think we should focus on it being a good general purpose SoundFont synthesizer, but not get too bogged down in faithfully synthesizing every MIDI file out there.

At any rate. It seems that it has a mode parameter, such as we have been discussing, as well as a percussion channel map. Note-offs are indeed ignored for non-looped percussion instruments. If that is the proper behavior with GM/GS, I think we should follow it, but only if GM or GS mode is enabled.

I'm not really interested in getting too involved in the whole GM/GS/XG mess. Because it is indeed a mess and I'd much rather move on to more interesting tasks :)

Quoting David Henningsson <address@hidden>:
S. Christian Collins skrev:
My 2 cents: I'm pretty sure the Creative synths don't ignore note-off,
and I don't think it's necessary, because this should be taken care of
in the SoundFont design, IMO.  In the SoundFont's percussion bank, the
release phase of each sample allows the drum to be sustained even when
the note is released very quickly, and this is how GeneralUser GS and
pretty much every other GM bank behaves.

As I said in a comment to http://fluidsynth.resonance.org/trac/ticket/1
, the problem is that we never get through the attack phase. So I still
think delaying the note-off could be a good workaround. But Christian
could perhaps suggest a good default value for the delay?

I don't really like that solution, since it isn't really the defined behavior for GM/GS and the delay would be awkward to get right with different SoundFont files.

Perhaps something like this would be adequate:
midi.mode = raw, gm, no-off-percuss
raw: Don't do any special percussion channel handling
gm: Ignore note-offs for all but fast Whistle and Guiro on percussion
no-off-percuss: Ignore all note-offs on percussion channel

Assuming midi.mode (or better, synth.midi-mode) will be used to change
between gm, gs, xg etc, it does not make sense to add no-off-percuss to
that series since it might control more things (e g ignore bank
selection in GM mode).

Better to use a separate setting for this problem then, something like
synth.note-off-percuss=delay/ignore/process. And for now, hardcode
percussion channel to 10 (as already done in a few places).

Yeah, true. I started off having it just be a value for something like note-off-percuss, but changed it when I started to consider a MIDI mode parameter as a good idea, which is the reason why it was a little convoluted. Lets just add a synth.midi-mode parameter with the options: plain, gm, gs and xg and SYSEX message handling for entering and exiting those modes. We should perhaps have a way for the user to override the mode though and not allow SYSEX changes.

// David


reply via email to

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