I want to start by saying that I think that the ideas outlined so far
are good and I support drawing up a spec that other developers can use
as a guideline for implementing MIDI in their apps; having apps work
together increases their value and usefulness. I also want to be a
little realistic about what that collaboration will look like.
So far from what I've read the general idea is that apps will need to:
Support Network MIDI
Should create their own virtual MIDI I/O ports for routing purposes
Should implement Vol / Pan cc's for mixing
Should implement MIDI Clock (Master / Slave) and / Start / Stop /
Continue messages (if the app does anything tempo based)
I'd like to also propose some ideas:
Optionally support Program change for patch switching
Optionally adding some Sysex message for the app to identify itself
and it's capabilities. Info like:
App name, current patch name and maybe stuff like whether it supports
Program change, which midi channels, etc.. It could also contain what
the custom URL is, that is needed to launch the app. Maybe this info
blob could be an XML or JSON string to support future expansion.
The best way to foster other people adopting these would be to write
the code that does it all and release it for free..
My app, Genome MIDI Sequencer could be a very good app to use as your
main sequencing app. There are a couple things I would need to add at
minimum which are a) Background operation, and b) the ability to
choose which MIDI Endpoint each track is outputting on. Currently all
tracks output on all the Endpoints that you have enabled in the app.
Neither is a huge change. Adding some 'mixing console' type abilities
to control vol / pan on each track would also be nice to have.
And now - a few criticisms. I think that having to switch between apps
to make changes sucks. It's not very fast and makes for a poor,
frustrating workflow. That's not to say it isn't useful to have, but I
think you won't want to do anything too complicated, because it would
be too hard to manage (imagine having to set up the midi connections
in about 10 apps). The iPad (and the average iPad user) is more about
simple, quick experiences than complicated ones. The only people
willing to put up with this much frustration are going to be very
hardcore. This stuff would probably be best suited to collaboration
between 3-4 apps max.
Another issue - you can only have one instance of an app running at a
time. So if you want to make a song with 3 nLog synths in it, then
your app is going to have to support multiple midi channels and
patches at a time, something that won't be a trivial change everyone
(both UI wise and audio engine wise).
We'll also have to deal with apps eating up all the CPU because they
aren't designed to run alongside other apps. We have no idea how well
this setup will work until we actually try it with several apps.
Anyway, I think that covers it. Looking forward to hearing your