iOS MIDI Apps Tutorial

A Very Brief Overview of MIDI

MIDI is an acronym that stands for Musical Instrument Digital Interface. It was developed in the early 1980s as a standard for electronic musical instruments to communicate with each other. These were originally physical connections made via a cable with 5-pin DIN connectors at each end. The key purpose of MIDI was to communicate instructions to control a performance on an instrument rather than to communicate the actual sound produced. At its simplest, MIDI is used to send instructions (called messages) about what note to play, for how long and how "loud". It is up to the receiving instrument to interpret these instructions to produce a sound.

Of course, MIDI does more than just tell instruments what notes to play. The MIDI protocol includes controller messages and clock messages, amongst other things. Controller messages are typically used for varying different properties of the sound the receiving instrument is playing, while clock messages are used to synchronise timing between instruments.

Typical early uses of MIDI included separating the controller part of electronic musical equipment (e.g. the keyboard) from the sound generating part. This meant that you could buy a dedicated MIDI controller that could be used to play multiple sound-generating modules. MIDI sequencers soon became part of the equation: these were digital devices that could record MIDI messages for later playback. Again it must be emphasised that this is control data, not actual audio data. The same musical "performance" could sound radically different depending on capabilities and sound programming of the MIDI sound-generating modules receiving the recorded MIDI messages.

For a relatively simple protocol MIDI has lasted well throughout the years. The rise of computing power has seen the introduction of software synthesisers and complex digital audio workstation software. With USB becoming a nearly universal feature of personal computers, MIDI equipment that worked over a simple USB connection became more common, rather than requiring a dedicated physical 5-pin MIDI cable connected to an interface on the computer. Also, MIDI messages can also be sent over a network connection. MIDI messages even don't need to leave the computer: a software MIDI sequencer can send messages within a computer to software synthesisers. The plugin standards used by digital audio workstation software usually include some form of MIDI messaging capability.

A Step-by-step Guide to MIDI Apps on iOS

This will be a very simplified guide. There is now an astonishing variety of software and hardware and ways to connect them all together to make and alter sounds. Our goal here is to get two independent (and free) apps to talk to each other via MIDI, so that the source app (the sequencer) can make the destination app (the synthesiser) to make a sound. The sequencer is Fifth Degree and the synthesiser is Novation's Launchkey. The precise details for other apps will vary, because some are more configurable than others and MIDI may be a minor feature for some apps while it is the main feature of other apps, but the general principles described here will apply.

One of the technologies that iOS provides is CoreMIDI. This is what allows iOS using MIDI to communicate with each other and with MIDI software and hardware outside the iOS device. CoreMIDI allows apps to create their own virtual MIDI interfaces. Therefore, to get two apps to use MIDI together, we need to tell the apps which virtual interface to use.

  1. Start up Fifth Degree
  2. Start up Launchkey
  3. In Launchkey:
    • Open the settings view (tap on the "gears" button)
    • Open the MIDI settings (tap on the MIDI button)
    • In the list of Input Ports, look for "5thDegree" and tap on that line to select it
    • You can now dismiss the settings view
  4. Switch to Fifth Degree and tap on the play button

You should now be able to hear Launchkey playing the notes that Fifth Degree sends out on its own virtual interface, named "5thDegree". You can now play around with the performance controls in Fifth Degree and you can also switch to Launchkey while Fifth Degree is playing and play around with Launchkey's own performance controls.