MSGS-style Drum Note Cut #1196
Replies: 4 comments 6 replies
-
The MIDI file you have provided simply uses overlapping notes. Neither the MIDI standard nor the SF2 spec specify how overlapping notes should be treated. Thus you cannot expect that every synth handles it in the same way. This is not even a "technique"; it's rather always an error. I see the use-case for snare, hi-hats and other percussion, though. I can think of several ways how to implement this, but I don't know how to make a decision here. Ideally, you could point me to a specification or standard which describes the implementation of such a behavior, particularly "(A use case for this is gating a snare, e.g. by playing D2 velocity 100 followed quickly by velocity 1.)" - What does "quickly" mean here? Why does your MIDI file not use velocity 1, but rather mostly 3 and 2? |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
OK. I have attached a new MIDI file generated from Sekaiju, as well as two renderings via MSGS and FluidSynth. Unfortunately since MSGS has no technical documentation, I can't speak to any formal standard that might have been implemented regarding the intended behavior. I am only suggesting to ignore the release when a new voice is instantiated by a proper MIDI note-on following a note-off,, assuming the sample has not reached the end of its duration by the time of note-off. I included a use case mentioning the detail about velocity merely to audibly illustrate one intended effect of this behavior. This would be done for both drum channels as well as melodic channels, per my testing. It does not seem that there are any exceptions here - the example MIDI and mp3's are using Violin (program 40) as well as GM Standard drum kit. I don't intend on breaking existing use cases where note release is intentionally held intact (technically allowing multiple instances of the same voice), but rather I request that this be implemented optionally per render or instance if user specifies note cut behavior to emulate MSGS. |
Beta Was this translation helpful? Give feedback.
-
I realized that it is possible to configure this behavior in the software SynthFont and have provided a screenshot of the implementation. |
Beta Was this translation helpful? Give feedback.
-
FluidSynth does not currently emulate a feature of Microsoft Wavetable GS MIDI synthesizer (MSGS) to cut a note in a drum kit (ignoring any release, if it has one) when a following note is played of the same pitch in the same MIDI channel. (A use case for this is gating a snare, e.g. by playing D2 velocity 100 followed quickly by velocity 1.) Thus it's not possible to render MIDI files using gm.dls and achieve the same result since this technique is not applied. I have attached a MIDI file as well as mp3s containing the results of rendering with MSGS (via Fruity LSD) vs FluidSynth. It would be wonderful if such behavior could be implemented and applied per user discretion.
notecut.zip
Beta Was this translation helpful? Give feedback.
All reactions