I’m working on a standalone software. I’ve noticed that when sending MIDI note on/off messages to external devices, there starts to be annoyingly audible jitter in the note triggering frequency, if the note off/note on messages are too close to each other.
I made a simple test:
Send MIDI note on message 64 times / second directly to midibuffer/mididevice which sends the data to external hardware. If the midi note off message is closer than 200 samples to the next note on message, I start hearing annoying jitter in the sound. I.e. the note roll doesn’t sound mechanically accurate anymore. The jitter becomes really audible and bad sounding.
In other words, I send MIDI note on message every 44100/64 = 689 samples.
I send MIDI note off message 200 samples before the next MIDI note on message will be sent.
The above sounds nice, but reduce that 200 samples to 150 or even 0 and the results sound bad.
I would assume that I could send the note off message 0 samples before the next note on and it should still sound fine but this doesn’t seem to be the case.
I tried recreating the same scenario in Ableton Live to see what happens:
I made an equally fast note roll effect with each note end touching the next note start and everything sounded beautiful using the exact same external MIDI hardware. Of course I have no idea if/how much Ableton Live adds margin to the MIDI note off/on messages it creates.
So what’s causing this effect? Is this a feature which existing DAW software takes into account and hides from the user or is this something specific to JUCE or my own software?