OMAC - Open Music App Collaboration Application Registry Resources

Quick links: (for those who have read the documentation already)
  • Explore the step-by-step developer's guide
  • Register your app(s) with OMAC registry
  • Download the OMACApplicationRegistry class
    (includes current omac_apps.plist to pre-populate your app with)
  • View current participating apps

FAQ = Documention

What is the OMAC Application registry?
Essentially a shared property list (plist) that is administered centrally of symbiotic iOS music apps and free source code software for querying the registry and fast-switching to other participating apps (including via MIDI messages).

I'm a music app developer. Why would I want to participate?
There are some excellent benefits in participating:

  • Other participating apps can switch to your app without home buttoning
  • You can allow your users to switch to another app, without home buttoning
  • Users can use MIDI messages to switch to/from your app from their own controller devices or apps.
  • You can provide a list of apps to your users that they can explore and download that are related to your app.
  • You can increase exposure of your own app as it appears in the list of OMAC apps in other participating apps.

A demonstration video of fast-switching is available on youtube

Sounds great, what do I need to do?
We have created a guide to help you get started.

Who is currently fast-switching?
If you examine the plist file you will get a list of all apps that have registered as switching receivers, ie. apps with a switching UI will be able to switch to these apps.

Currently the following apps are fast-switch senders (check them out!)

App NameSupports MIDI switching
Little MIDI Machine
MoDrum Rhythm Composer
Genome MIDI Sequencer
FreEWI (sort of)YES

Let us know if your app is missing.

How often is the registry list updated?
On demand as new applications are added, maximum once every 24 hours. Registry changes are checked by a human manually to ensure the data in the registry is valid and reasonable.

What is the specification of the inter-app messages?
You can have a look at the processMIDIMessage method of the OMACApplicationRegistry class, but here is the specification (hex spaced 7bit bytes):

     F0 1F nn {7bit bytes} F7

Where nn (message type) is one of the following:

  • 00 aa bb - app switch message with serial number aabb, where serial number is a 14 bit value with aa as MSB and bb as LSB. The serial number of an app is a unique number for each app allocated in the OMAC registry. You can get an app's serial number as a property of an OMACApplication object.

For example, to switch to app with serial number 9 in the registry, the message looks like: F0 1F 00 00 09 F7

What is this DNS Versioning thing all about?
The current version of the property list file is maintained in DNS at a fixed hostname. When your app looks to update it's property list dynamically it just needs to check the hostname with a simple gethostbyname() call and only fetches the update if needed. Thus, we can leverage the sophisticated worldwide DNS caching infrastructure to minimise update traffic. Note, this is all handled for you in the class.

It's not working. How do I get help?
Post to the Open Music App Collaboration group (linked below) or email the address below.

google group
Site Admin:
Last updated 24 October 2012