There are now several companies developing MIDI interfaces for iOS devices and I’ve noticed many users wondering which is better to buy. Since I am currently working on my own MIDI app and have worked with both the Line6 Midi Mobilizer and the built in CoreMIDI API, I have some insight into the pros and cons of both methods.
First, the Midi Mobilizer. It has the advantage of working on both iPads and iPhones. It’s very compact and requires no external power. You just plug it into the dock connector and you have a 1×1 midi interface. Price wise, it costs a little more than your average 1×1 interface for a desktop computer. It’s still fairly affordable, considering that the Camera Connection Kit (CCK), which is necessary for any CoreMIDI stuff, is about $30 and you’d still need to buy a USB midi interface if you don’t have one. With CoreMIDI on the other hand, the iPad is notoriously stingy when it comes to supplying power to USB devices, so you may want to find an interface which can be powered externally.
CoreMIDI also only works on the iPad (haven’t tested this, but I’ve heard it from multiple sources). [UPDATE: CoreMIDI does in fact work on the iPhone, but the CCK does not. So it’s network MIDI only on the iPhone.]
As far as the two API’s go, the Line6 API is easier to get up and running. It’s an Objective C library (as opposed to a pure C library), which will probably be easier for most iOS devs. The CoreMIDI framework is not terribly hard to figure out, but it has more complexity to deal with since you have to manage multiple devices with multiple inputs. You also have to deal with host timing and MIDI packets more directly than you do with the MIDI mobilizer. Also, finding examples dealing with CoreMIDI was difficult whereas the software engineers behind the Mobilizer were fairly responsive to my questions.
The area that musicians will probably care the most about is performance and I can honestly say that both interface have pros and cons. With the Mobilizer, my main disappointment right now is that there seems to be some issues when mixing ‘Timestamped’ events (midi events queued up to occur in the future) and immediate events (midi events you want to happen immediately). My application is a sequencer, but I want to have an on-screen keyboard so people can play along and record realtime. The Midi Mobilizer seems to be unable to do both at the same time and the ‘immediate’ events end up being delayed by half a second. This could be something that is fixable in the Firmware, but I haven’t reported it yet. CoreMIDI seems to be able to handle this case perfectly well, but it has other drawbacks. When testing CoreMIDI with dense event streams (such as when issuing lots of CC messages) the whole playback stream slows down and does not keep the proper timing. My guess is that since CoreMIDI is an OS level thing, it depends more heavily on the iPad’s CPU for the timing and playback of messages. The Mobilizer was able to playback these streams without slowing down or losing timing, so maybe it offloads some of this processing to the actual attachment. I am just speculating here. I hope to get my hands on an iPad 2 in the coming weeks so to see if it does a better job handling dense MIDI streams with it’s two processor cores. I should also clarify that I was testing with a couple hundred CC messages per second so while it is disappointing, I think most musicians can work around the limitation by using sparser CC events or modulating less parameters.
Overall it seems that CoreMIDI is lower latency than the Mobilizer, but more CPU dependent. Recommending one over the other would really depend on what your needs are and what kind of USB interfaces you already have in your posession. But, I can say that some people have been overly quick to dismiss the Mobilizer because of it’s proprietary nature – it’s a good piece of gear. I imagine I will probably get some good use out of both interfaces. Stay tuned in the coming weeks for news about my new MIDI app. I think it will really change people’s minds about what is possible on the iOS for sequencing MIDI gear.