|
From: | josh |
Subject: | Re: [fluid-dev] Short note durations on percussion channel |
Date: | Thu, 08 Oct 2009 10:58:00 -0700 |
User-agent: | Internet Messaging Program (IMP) H3 (4.1.6) |
Hello Chris,I realize I didn't respond to these emails and kind of just proceeded to implement things. I'm personally convinced that ignoring note-offs on the percussion channel, when GM/GS mode is enabled, is the way it should be done (its defined in the standard after all and most manufacturers follow it in this particular case). When these modes aren't enabled, FluidSynth will just behave normally and not treat the percussion channel specially in regards to note events.
Please do convince me otherwise, if this seems incorrect. Best regards, Josh Quoting "S. Christian Collins" <address@hidden>:
Josh, Thanks for explaining the true nature of the problem--I misunderstood. I would like to propose the following for the percussion track: * A note-off event received before the attack phase is completed would be delayed until completion of the attack phase, unless the attack phase is longer than 0.5 seconds. I can't think of any cases where this would cause an undesired effect. Most percussive sounds would have a very short attack phase, and the sounds that would have attack phases longer than 0.5 seconds (cymbal rolls, sound effects that fade in) would still properly respond to keypress duration. What do you think of this idea? -~Chris address@hidden wrote:In a recent case, a user sent me a MIDI file that had 4 to 5ms duration percussion notes. A lot of this is snare notes. I tested it with your GeneralUser GS and most of the percussion track is missing, because of the short duration notes. We've had this complaint a lot. I know that just having FluidSynth ignore note-offs for channel 10 (#9) is of course not the answer, because a lot of people, me included, aren't even using GM/GS banks. I was suggesting that there is a GM/GS mode, which has this behavior, but only gets turned on if the appropriate SYSEX message is received, or the user overrides it.Of note is that the MIDI file that I received, does have GS reset SYSEX commands embedded in it.From what I can tell though, there are MIDI files and MIDI equipment (drum pads) which expect percussion instruments to be one shot and not respond to note-offs. We need to handle this somehow, if FluidSynth is going to faithfully playback these MIDI files.Josh Quoting "S. Christian Collins" <address@hidden>: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. The problem with ignoring note-off events is that some percussion instruments really need to have duration control by the keyboard, such as the TR-808 bass drum in GeneralUser, which has a different response whether the key is held down or not. Also, we can't guarantee that something loaded into the percussion preset pool will use a GM/GS-compatible key mapping. -~Chris address@hidden wrote:I think the short note duration ticket should be fixed before 1.1.0 is released (I seem to remember David suggesting this too?). I just found a PDF file called GM Guidelines Version 2.http://www.midi.org/techspecs/gmguide2.pdfOn page 20, there is a section on response to Note-off on Channel 10. It specifically mentions that GM percussion instruments should ignore note-off events. The exceptions being long Whistle and long Guiro. So that probably answers why there are MIDI files floating out there with very short duration percussion note events. I think this also applies to GS.Now the question becomes, what is the best way for FluidSynth to handle this? It would be nice to have a MIDI mode setting, which would respond to SYSEX messages which enable/disable GM and GS. I'm not sure if we should try and tackle that by 1.1.0 though. I'm not sure if every GM/GS file has the proper SYSEX messages either, although we could let the mode be specified manually.Perhaps something like this would be adequate: midi.mode = raw, gm, no-off-percuss raw: Don't do any special percussion channel handlinggm: Ignore note-offs for all but fast Whistle and Guiro on percussion channelno-off-percuss: Ignore all note-offs on percussion channel Any better ideas or suggestions? Josh _______________________________________________ fluid-dev mailing list address@hidden http://lists.nongnu.org/mailman/listinfo/fluid-dev
[Prev in Thread] | Current Thread | [Next in Thread] |