[sdiy] USB/MIDI ground isolation?
Colin f
colin at colinfraser.com
Fri Sep 18 21:40:10 CEST 2009
> Yes! I've observed what appears to be poor real time
> behavior of the built-in MS Windows USB/MIDI driver. The
> result is the MS driver is unsuitable for dense AND/OR fast
> MIDI streams, IOW, any serious sequencing and performance work.
>
> Here's what I see:
>
> Note on/off messages are sent sequentially in time even
> though they are voiced at the same time. For example, in a 3
> note chord, the 1st note-on is sent at t=0 ms, 2nd at 2 ms,
> and the 3rd at t=4 ms.
The polling interval for USB is not guaranteed under Windows.
It should be 1ms. If the driver is only sending 1 three byte message per
poll, it's no faster than serial MIDI.
There is a registry setting that can be used to slow down the rate further,
but sadly not to speed it up.
> Digging deeper, only one note on/off
> message is sent in a USB packet even though the endpoint size
> can accomodate many, many more messages. It's pathetic
> utilization of USB capacity! After some Google guided
> reading, it appears only sysex bytes are crammed into an
> endpoint buffer to keep it fully utilized.
But the USB MIDI spec says explicitly that transfers use bulk endpoints so
"a large quantity of USB-MIDI data can simultaneously be sent by an
application" ... "including sending many MIDI Note On messages at the same
time to more smoothly play the most complex music".
I suspect Microsoft may have deliberately limited the bandwidth in their
driver.
Throttling the throughput at the driver level prevents buffer overflow as
the attached device resends the data at a slower rate.
Makes it a bit useless if you're driving a synth with a direct USB input...
Cheers,
Colin f
More information about the Synth-diy
mailing list