I encountered a problem recently while programming Expression Maps for Synchron Percussion. I am using the sustain pedal (CC64,127) for the laissez vibrer technique in order to let the notes ring when indicated. When I use a tremolo to precede a note labelled “l.v.” (for laissez vibrer), the tremolo sample continues indefinitely instead of just hitting the l.v. note.
So I set up a test to check it out.
It turns out that a normal note and a tremolo note do not put out the same length. Here the note off message of the first note comes 3082 samples (approx 64ms @48Khz) before the sustain pedal message:
So that makes sense. The first note ends before the sustain pedal message is sent.
Now, with the tremolo note, the note off message of the first note comes 467 samples (approx 10ms) after the sustain pedal message:
This means that the MIDI messages sent by the expression map for the second note (the one marked “l.v.”) are being sent before the previous note ends, which is why the sustain pedal is catching the tremolo note.
How did the timings get crossed on this?
Is there an unintended legato being added to tremolo notes, extending them to overlap the next note?