The latest loopop video takes a look at USB MIDI, and answers common questions musicians have about using it.
Video Summary:
Unlike regular 5 PIN MIDI, which lets you connect MIDI devices to each other directly, USB MIDI works very differently. A USB MIDI based device cannot connect to other USB MIDI devices directly. USB MIDI devices can only connect to USB MIDI hosts. So, for two USB MIDI devices to speak with each other, a USB MIDI Host to route communications back and forth.
This video looks at 3 different USB MIDI Host types:
1. Standalone
2. Raspberry Pi
3. Computer based hosts.
It also covers using Bluetooth to connect to devices with 5 PIN connectors using a relatively inexpensive Bluetooth MIDI bridge from Yamaha.
Topics Covered:
0:00 USB MIDI problems
1:00 Regular 5 PIN MIDI
1:30 USB: host & device
1:50 The device problem
3:00 Host vs. interface
3:40 Standalone hosts
5:00 Plugging it in right every time
6:30 Hooking it up
7:20 Using Raspberry Pi
7:50 BomeBox & others
8:20 Computer as host
9:50 Manipulating MIDI
10:10 Wireless MIDI
11:50 More MIDI tips
(copied from a well known source, a master of MIDI -perfectly sums up the “problems” with USB based MIDI)
“USB MIDI has a bit of a problem with timing.
Full speed USB runs at 12 mbps, a data rate over 300 times faster than serial MIDI.
But USB is frame based, with a frame rate of 1kHz, i.e. one frame every millisecond.
A MIDI event being transmitted over USB must wait between zero and one milliseconds before it is actually sent, depending on when the event was generated by the processor relative to the regular frame period of the USB host.
You can send multiple MIDI events in a single frame, which gives a big advantage over serial MIDI as polyphony increases, but for getting a single byte of MIDI clock pulse out of a CPU, USB just can’t match serial MIDI.
If the line is clear, the start bit of a serial MIDI message can happen on the next transition of the serial interface’s baud rate generating clock, which has a period of 32 microseconds for plain old MIDI.
A quick example to show you what this means in practice…
A tempo of 120 bpm at 24 ppqn means a clock tick period of 20.833ms (rounded to 3 decimal places)
The ideal timing of the clock ticks should be:
0
20.833
41.667
62.5
83.333
104.167
125
Delayed until the next USB frame, the best case timing will be:
0
21
42
63
84
105
125
The period between each tick is usually 21ms, with a 20ms tick every so often to average out at 20.833.
A 21ms tick gives a tempo of 119.04 bpm
A 20ms tick gives a tempo of 125 bpm.
That’s quite a lot of cyclic error on your tempo signal.”
USB + MIDI is ok if you sequence and send out all MIDI information from that computer/DAW into hardware with absolutely no external sequencing.
Anyways, IMO it’s not worth even trying to use it seriously,
I personally do not use USB MIDI other than notes that do not have to be perfectly in time,
which are only “playing”/triggering notes on a certain synth (which is clocked from a real hardware source)
and for SysEx transfers.
Funny, there was an above the comment section which read something like “Dream On”
Yeah USB + MIDI = Dream On!
FireWire might be better, maybe Thunderbolt?
You’ve got that USAMO thing
the SyncGen from Australia
CV+Gate from audio interfaces, etc.
so there’s many other ways of doing “computerized” MIDI 😉
Interesting reading GHB, Thanks!
The 12 mbps transfer rate applies to original USB standard as far as i can tell. Would you say the arguments above applies to hardware support for USB 2 and upwards as well?
If not class compliant, these problems can be fixed even at 12 Mbit/s. Class compliant, I think the problem persists at 480 Mbit/s as the packages are USB bulk transfers. If someone knows better/more, please correct me.
USB 2 high speed has 8 microframes per frame. The timing resolution is 125µsec. Every USB MIDI interface and every instrument with USB MIDI support I know of uses USB 2.0 high speed and therefore has a 125 µsec timing resolution. Using the 1.5MB/sec full speed is allowable under USB MIDI but would not be recommended for the reasons stated in the above post. Presumably he had access to some older instruments using that slower standard and did his tests on those. It would be surprising to get those results on any instruments produced in the last 15 years.
That is absolutely, utterly untrue.
Thanks for the detailed rebuttal, Mac! Love your technical details. Boy you sure showed me!
I don’t really care to show you Mr. Bat, as long as people don’t just assume what you posted is true.
https://vimeo.com/25921512
what a great way to convince people; clearly, based on the merits, “nuh uh” must be correct!
Care to elaborate?
Admin: Personal attack deleted.
Keep comments on topic and constructive.
Great work. Now how do i get MIDI in / out AND audio out at the same time from an latest generation iPad Pro??
Thanks
an audio/midi interface. Sweetwater has a whole section of “ios interfaces”
I have used an iConnectAudio over the last year for moving MIDI and Audio signals to/from my phone and iPad. Works really well in my experience. The routing matrix is a bit klunky and requires some learning but is also quite powerful. Also use to use their original MIDI only box and it was also excellent, although the config software wasn’t stellar. Overall I would definitely recommend iConnect’s hardware, just expect to spend some serious time getting everything configured if you have a complex setup.
You can also just connect the iPad pro to a Mac w the USB cable. Go to Audio-Midi settings and find the phone in the audio devices. Click “Enable” and you can then send audio and midi back and forth.
@Eric: Yes! This is my preferred setup for hooking an iPad up to a laptop DAW – one cable for MIDI and audio, and it charges the iPad.
If you can tolerate a bit of latency you can also use bluetooth MIDI or MIDI over Wi-Fi.
You can also connect the iPad to a powered USB hub and multiple class compliant audio/MIDI interfaces, as well as multiple USB MIDI devices.
actually all i need to know is how to code a usb midi driver and its not in the video
You can most likely find a suitable library for that on github.
USB MIDI really is harder to use than old school MIDI because of the asymmetric bit.
Lots of things would be easier if USB were symmetric and supported auto-negotiation for things like power.