Many of you may have seen it already, but I wrote a blog post on best practices for real-time MIDI input.
Very useful, Dan. Regarding latency, we’ve found in some experiments that the best latency value to use depends on a lot of factors: your MIDI and audio hardware, the sounds you are using (depending on whether they have an immediate attack, as you may compensate for the perceived attack time by playing slightly early), and also your playing style. One experiment had 3 of us trying to play 4 beats as accurately as possible and we still had a variation of +/- 50ms between us. On my system a value of 50ms (note: not negative) works well. I would suggest a slight variant of your advice to identify your optimal latency:
- Start a new Solo piano project in 4/4 (it will be already at the default tempo of 120bpm
- In Preferences > Play > Recording ensure that ‘Preserve note positions’ is checked (just for the purposes of measuring the latency - you can uncheck it later if preferred)
- Double-click at the start of bar 1 to create the note input caret
- Press record and then play to the click as accurately as possible for about 4 bars
- Switch to Play Mode and look at the note positions. The thick lines show the times of the notes you played.
At 120bpm there’s 500ms between each beat, so you can see in this case that it’s about 10% of a beat early. So I set a latency of 50ms (the latency value is the amount that we’re moving these values to the right) and recorded again to get the results shown in the second image. If the thick line is after the beat then you need a negative number.
Thanks for the tips.
Thanks Paul. Do you mind if I add this to the article?