>> something so basic has not been addressed by the designers.
Which 'designers' would that be, Nick? Part of the problem - is that no single designer can possibly control all the stages that handle MIDI events.
MIDI timing is affected by many many factors:
- Quality of the keyboard controller software implementation (if you're recording live MIDI played on a keyboard)
- Quality of the MIDI interface driver (PCI, Firewire, USB drivers all have different potential pitfalls).
- Whether the driver supports the DirectMusic core API (which supports high-precision timestamping, if available) - or just the original 'MM' API (which has no support for timestamping at all)
- Whether the host app (e.g. Sonar) does anything special (e.g. at kernel level) to keep various Windows gremlins from further messing with the timing of the MIDI events - as delivered from the MIDI interface driver.
My point? If the MIDI timing has been compromised by the time the events reach Sonar, there's damn-all that Sonar can do to restore the compromised timing. Which means -- pick your MIDI interface and controllers carefully, so Sonar has good-quality MIDI data to work with.
FWIW - various people have tried to address this over the years
(I was one of them, back when I was on the MMA Technical Standards board). The obstacles - both technical and political - proved formidable. For a overview of the technical issues -- see
http://openmuse.org/transport/fidelity.html . You might also be interested in a paper I wrote: "System-Level MIDI Performance Testing", available from
http://openmuse.org/noncpl/MIDIWAVE-ICMC2001.pdf .
Finally - the IEEE1394 standard for MIDI transport does provide some level of timing guarantees (roughly "as good as a perfect MIDI-DIN cable"), and also keeps MIDI events tightly synchronized with audio traffic. Stock USB does neither (There are no timing guarantees whatsover for MIDI event transport, and USB handles audio and MIDI using two completely different protocols (isochronous transfers for audio, background transfers for MIDI) - which means audio and MIDI traffic can easily drift in/out of sync with each other). PCI-based interfaces -- also have no explicit synchronization between audio and MIDI traffic, but tend to do pretty well even so - if the driver designers know what they're doing.
Personally, I would love to have systems that keep MIDI jitter to very low levels. Hopefully, some future standard will make it possible.
- Jim, notorious MIDI curmudgeon
Edit: fixed broken links (my bad)