Noel - good to see your input! I would also expect that softsynths should get exactly the same timestamps from Sonar at all times, during both regular playback, bounce, fast bounce etc. Any apparent softsynth jitter - seems likely to be caused by the particular softsynth, not by Sonar.
(I'm assuming this because the direct Sonar-to-softsynth connection completely bypasses the particular Windows and MIDI-driver problems that I've seen cause jitter for MIDI traffic to/from the actual MIDI DIN ports.) I will try to test some softsynths this weekend to see if I see any of the jitter issues that others have reported (I'll probably try Atmosphere - which has test tone programs - and Kontakt 2, rather than TTS-1; I may also try DimPro). I'd also like to do some tests with a padKontrol, external synth module and Sonar, to compare MIDI performance when the same source (padKontrol) is used to drive both an external module (Korg NS5R) and a softsynth (Battery 3, DimPro, Atmosphere....). How would I test? Here are some ideas.
- I'd route padKontrol to both NS5R and several MIDI ports (Edirol USB, EMU PCI, padKontrol USB...) and record all the MIDI inputs as separate tracks, simultaneously. Then, I'd look for jitter and skew in the various tracks. That would let me compare performance of padKontrol USB MIDI (up the USB cable to Sonar) with EMU 1820M MIDI IN (patching padKontrol MIDI DIN out to EMU MIDI DIN IN), and with Edirol USB MIDI (patching padKontrol MIDI DIN out to UM-550 MIDI DIN in, which appears as a different USB MIDI IN port to Sonar). By the way -- obviously, playing the padKontrol pads directly is not going to produce notes that fall exactly on any particular beat, or audio sample count, or millisecond. I don't care about the absolute timestamp of any particular MIDI event. What I'll be looking for is how much latency and jitter is introduced by different MIDI ports and drivers, that are all processing the same original source note (a single hit on a padKontrol pad) and are all being recorded in parallel.
- In Sonar, I'd route the live MIDI input (either padKontrol USB MIDI, Edirol USB MIDI or EMU PCI MIDI) to a softsynth (Battery 3, Atmosphere, Dim Pro...). I'd then record the audio output from the softsynth to a separate audio track. As a baseline, I'd also record the NS5R output to another audio track (I'm assuming the NS5R has low jitter - which might not be the case. I have some other hardware modules to try if need be). Then, I can (hopefully) compare the relative jitter of different softsynths as they are driven by live, incoming MIDI (handled by Sonar, but not yet recorded/played back by Sonar). I'd also record the live MIDI input for the next set of tests.
- Finally, I'd take the recorded MIDI data (captured during the previous set of tests) and use that to drive the same softsynths (and probably the NS5R too). This would result in another set of audio tracks. I could then compare all the different audio tracks (and MIDI tracks created using various MIDI input ports) -- and see what the data shows.
If anyone has other suggestions for evaluating real-world MIDI jitter, using something like a padKontrol as the MIDI note generator -- speak up!
Original: RTGraham
...Jim Wright has suggested that a MIDI interface could be built that references its own, more stable clock, and could also clock to an external stable clock, like word clock, and achieve much greater internal MIDI stability while still being able to reference Windows' current driver APIs.
That's not exactly what I said, but then I haven't given any details of the hypothetical interface. What I have in mind ... is hardware that basically synchronizes MIDI traffic directly with an audio stream, using a MIDI timebase that's inherently aligned with the audio sample rate. The guts of the hardware could probably be done using an FPGA (field-programmable gate array). Sorry to be so mysterious. I would like to take things further, but would need to get permission from my employer to open-source the idea (or find another way of developing it that complies with IP concerns).
- Jim