[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