Tuesday, October 16, 2012 by Tim Webb
Following my article last week on MIDI Jitter in iOS apps, a lot of healthy conversation cropped up here and on the original KVR thread. Several developers have been a part of the discussion, including regular contributor Fessaboy, with consensus forming on the idea that the jitter is related to buffer lengths used by problematic apps. This makes sense, and fits with Kevin's observations in Animoog for iPhone. Earlier iPhones were not nearly as beefy as iPads, so developers tried to support them as best they could with crazy high buffers that are easier on the CPU, but slower to react.
This all raised some great questions about the stability of iOS as a professional platform for musicians, so I've been doing some additional research on the subject. In the original article I mentioned several apps that did not appear to be effected by any jitters, so I picked one of those for further testing. Magellan was my goto. Due to its recent popularity, I figured this would be a good one a lot of people would be curious about.
Kevin had asked for some additional details on my tests at high BPM, so I'm including here my results with Magellan in both a wired and wireless MIDI configuration. In all instances I was sending 16th notes (with a 32nd note length, so there are gaps), with the first note in each bar being a few semitones higher so I'd know when a new bar starts.
Wired Setup: Ableton Live 8 going out through USB to my Akai MPK61 keyboard, through the Akai MPK61's secondary MIDI dins, into my M-Audio Uno USB-MIDI adapter, and finally into the camera connection kit connected to my iPad 3.
Wireless Setup: I don't have a Mac, so I'm using rtpMIDI which uses the Bonjour service to connect from Ableton Live 8, through my wireless router, and from there to the iPad 3. This is not a good solution, and it is recommended that you use an Ad-Hoc network for wireless MIDI, but I think this is a more typical "real world" setup.
I'm focusing on the second and third bars in the recording, because (as you'll see later) that gives it enough time to screw up!
First up is a wired connection at 120 BPM. No problems at all, everything is lining up nicely.
I cranked it up to 160 BPM. Still looking good! There is some movement in there, but this is to be expected and nothing you'd notice.
Alright, full throttle! 240 BPM, BABY!
There is slightly more wandering here, but still not enough that you'd notice. Take a listen for yourself.
Considering how much of a mess my MIDI chain is, I think it is safe to say that a wired MIDI connection is reliable on iOS. Any faults come down to software that isn't designed to cope, or possibly an even worse MIDI setup than mine. Though I honestly can't imagine how that could be; I bought the Uno because it was the cheapest USB-MIDI interface I could buy locally!
We can't rule out the possibility of a faulty MIDI connection though. Rather than buying a bunch of MIDI interfaces I wouldn't need, I decided to test the idea with a MIDI setup that is clearly "doing it wrong", by running wireless MIDI through a non-Ad Hoc WiFi network.
At 120 BPM through the wireless setup, Magellan is only marginally off.
I'd say that is somewhere between 120-160 on the wired connections. Once we get to 160 BPM the cracks begin to show.
Now we're getting into sloppy mess territory, which you can also hear for yourself.
I hope this puts to rest the notion that MIDI Jitter "prevents iOS from being a serious platform for software instruments."
If you're having problems try changing apps, MIDI interfaces or do a proper Ad-Hoc WiFi connection!