This is a guide aimed at providing some understanding about
MidiBridge (and CoreMIDI) and how to use that knowledge to your advantage to
interconnect apps, hardware and network sessions. Once the basics are
covered, some step-by-step recipes for connecting up less obvious situations
are provided.
Don't forget to turn on the 'Run in Background' option in the
MidiBridge Preferences panel. This is off by default (and purposefully as we
want the user to consciously be aware that they are allowing MidiBridge to
keep on runnin' in the background)
The above applies to MidiBridge 1.3 and earlier. As of version 1.4,
background processing is on by default (with a 15 minute idle timeout). The
idle timeout value can be changed in the Options tab of the Preferences
page. Setting it to 0 minutes turns backgrounding off completely.
First a little about CoreMIDI - port advertising
When an app runs it can register virtual ports in CoreMIDI that can be
seen by other apps and on which other apps can send or receive events. There
are two types of virtual ports (also known as endpoints) - sources
and destinations. An app doesn't have to advertise its own
virtual ports. It may choose to use the virtual ports of other apps instead.
Here's something to remember:
Just because an app doesn't advertise any ports of its own doesn't mean
that it can't be controlled via MidiBridge!
It just won't show up in:
The Interface Tab - Sources to the left of you, destinations to the right
This is the main tab in MidiBridge and from where you create connections
between sources (inputs) and destinations (outputs). These ports are usually
(but not always) in pairs and are one of the following type:
- A physical device port, like Midi Mobilizer I, SynthStation25...
- A CoreMIDI physical device port, like Midi Mobilizer II, iRig MIDI...
- The CoreMIDI network port (send/receive over wifi)
- MidiBridge's own virtual input/output ports that it advertises
- Virtual input/output ports advertised by other apps
MidiBridge can route events from any of these types to any other type,
but the routing must be between a source and a destination
from MidiBridge's point of view.
To connect source A to destinations B and C, you touch input/source port
A on the left and then touch B and C on the right and green lines will be
drawn between them to show they are connected. Touch port A again to tell
MidiBridge you're done interconnecting to that port.
Here's a screenshot of MidiBridge with just about every type of port,
connection and option set:
The above screenshot shows the following:
- A CoreMIDI network session is active (CoreMIDI Net in is yellow and the
badge '1' on the Interfaces tab button is shown)
- Arctic Keys is up and running (Arctic Keys virtual ports shown)
- Midi Mobilizer I is present and a filter on its input is active
(Midi Mobilizer ports shown and 'On' badge over filter button displayed on
input port)
- MidiBridge's own virtual ports have been created and any events received
from another app on the port MidiBridge will be passed to MidiBridge's own
output (that other apps could be listening to) and the Midi Mobilizer's
output. (Green lines going from MidiBridge to MidiBridge & Midi Mobilizer)
- Both MidiBridge and Arctic Keys ports are virtual ports (V-Cable symbol
in port)
- Events received from the Midi Mobilizer's input will be sent to Arctic
Keys and the Network session. (Grey lines running from Midi Mobilizer in to
CoreMIDI net out and Arctic Keys out - they're grey, because currently the
MidiBridge input port is selected for connection)
- You can fast switch straight to Arctic Keys by double tapping either its
input or output port (Green double arrow in port)
- The Fast-switchable Applications Panel (As of version 1.4, this panel
has been renamed from 'Compatible Applications') tells you that both Arctic Keys and MidiVision are
installed on this device, but Loopy, NLog and ThumbJam are not (can't afford
them). Touching
Arctic Keys on the App Panel will fast-switch to Arctic Keys (since we know
that is running). Touching MidiVision on the App Panel will launch
MidiVision (not currently running, but installed). Touching any of the other
apps in the App Panel (the unticked ones) will redirect you to the App Store
to see if this app is of any interest to you. IMPORTANT: The Fast-switchable Applications
panel is for fast-switching compatibility only. It is not an indicator of an
app's MIDI connectivity.
- The App Panel can be dragged around the screen using the top bar of the
panel. It can be dismissed by either pressing the 'X' at the top of the
panel or touching the 'Applications' tab that has a badge marked 'X'.
To summarise:
An input from MidiBridge's view is a source of MIDI events
from other apps, physical devices or the CoreMIDI network.
An output from MidiBridge's view is a destination that
MIDI events can be sent to and can be other apps, physical interfaces
or the CoreMIDI network.
Connecting different kinds of apps
Apps can either generate MIDI events, receive MIDI events or do both.
Apps fall into one or more of the following categories:
- The app advertises its own virtual destination and accepts input from
it. Examples: Animoog and Sunrizer.
- The app advertises its own virtual source and writes events to it.
Examples: Genome
- The app doesn't advertise anything, but will read from all
sources in the system, Example: Gadget, GarageBand
- The app doesn't advertise anything, but will write to all
destinations in the system. Example: SoundPrism Pro
- The app only supports CoreMIDI networking (don't know of a current
example, but
early versions of Genome were like this and possibly NanoStudio)
- The app advertises both a source and destination and reads/writes
to those. Examples: Arctic Keys, NLog
Categories 1,2 and 6 are easy. You just connect your desired
source/destination to the app's virtual port in MidiBridge and away you go.
You may need to tweak something in the other app to tell it you want it to
accept/send MIDI on its virtual ports (and tell it to continue working in
the background).
Category 3 apps will not show up as a separate port in MidiBridge, but
will read from MidiBridge's virtual output. To control these types of apps,
just connect your desired source to the MidiBridge destination.
Category 4 apps are the reverse of category 3. They don't show up in
MidiBridge but to use them as sources, you connect MidiBridge's virtual
source(input) to the destination you want the events to go to.
Finally, category 5 apps require a little trick to make them work. In
MidiBridge prefs, enter the word 'localhost' (without quotes) in the
CoreMIDI Network Destination field and press the Connect button. You can
also choose 'Connect Automatically' to re-start the connection when
MidiBridge launches. Essentially you are hi-jacking the CoreMIDI network to
run like a virtual port. To send events to the app that supports CoreMIDI
network, you connect a source to the CoreMIDI net destination. Vice-versa
for receiving events into MidiBridge from a category 5 app.
Application start/connect order
Now you know how to interconnect different types of apps, what about the
order in which you launch the apps? It all depends upon when each app
refreshes its view of the CoreMIDI world.
MidiBridge for example refreshes its view when it starts, when it is
returned from the background, when a physical device is connected/removed,
when a virtual port appears/disappears and when a CoreMIDI network session
starts/stops. Basically all the time. What's more is that it will
automatically re-establish any prior connections that you had set for that
port. So far, so good.
Other apps may not refresh their view so much (some just at launch or
need the user to manually refresh), so these are the rules of thumb when
setting up your connections:
- Launch MidiBridge first, so that its virtual ports are available
if need be.
- Launch category 3 apps (SampleTank, Sunrizer XS) so that they add
MidiBridge's virtual destination to the list of ports they'll receive events
on.
- Launch category 4 apps (SoundPrism Pro) so that they add MidiBridge's
virtual source to the list of ports they'll send events to.
- Launch any other apps that advertise their own inputs or outputs.
- Return to MidiBridge and make the connections (if you need to)
Unfortunately the world isn't perfect and sometimes even these rules are
not enough. If it doesn't work, you may need to switch to certain apps as
well to re-invogorate their engines. It's not exact and some trial and error
may be involved.
Giving NanoStudio a virtual input
Sorry, as of Nanostudio 1.33, this trick no longer works. We
have been in touch with Blip Interactive and hopefully will be able to work something
out.
With a little trickery it is possible to use MidiBridge to give
NanoStudio a virtual input so that it can be fed MIDI events from other
apps. Please note that NanoStudio works in the foreground so any app that
is to be used for driving it must be in the background. Note also,
that the order of these steps is crucial to work around the way in which
NanoStudio manages CoreMIDI.
- First either reboot your device or terminate all MIDI related
apps including MidiBridge and NanoStudio using the task manager. Also,
unplug all physical MIDI devices.
- Start NanoStudio first, as it resets the CoreMIDI networking facility
in iOS which breaks any other CoreMIDI Network sessions. Setup your patch
for Eden/TRG. Press the Home button and now launch MidiBridge.
- In MidiBridge connect 'MidiBridge' on the left to 'CoreMIDI Net
out' on the right and remove any other connections. Switch to the
Preferences pane in MidiBridge and:
- Ensure 'Run in Background' is 'on'
- Enter the word 'localhost' (no quotes) in the 'CoreMIDI Destination
Host/IP Address' field.
- Press the 'Connect' button
If all is well, there should be a little '2' over the Interfaces tab
button and the CoreMIDI Net interfaces should be highlighted in yellow.
- Optional If you want to also use a physical MIDI interface to control
something, then do the following (if not, skip to next step):
- Fast-switch to NanoStudio from MidiBridge's Applications panel.
- Double-tap the Home button and switch back to MidiBridge
- Now connect your physical MIDI interface and route it to MidiBridge on
the right (if you also want to control NanoStudio externally) or to the
other app which is controlling NanoStudio or even to FreEWI if you're
mapping channels and the like. Remember that NanoStudio will not
pick up the physical interface - which is what we want.
The above steps don't really appear to do much, but they are crucial in
cementing the fabric to make NanoStudio only respond to the (now
looped back) network port without picking up the physical interface.
- Now launch the app you wish to drive NanoStudio with. If it is OMAC
fast-switchable then you can launch it from the Applications pane in
MidiBridge. Configure the app to send MIDI events to 'MidiBridge' and
start the app playing.
- Double-tap the home button (or fast-switch if the app has OMAC
fast-switching capability) and switch back to NanoStudio which should now spring
into life!
Driving Animoog from BeatMaker 2
Driving Animoog from BeatMaker 2 (either as a live instrument or as a
sequencer driven part) is possible using MidiBridge. Both Animoog and
BeatMaker are complex apps and require a lot of memory. You need an iPhone
4/4S or iPad 2/3 to run both simultaneously.
Here are the steps:
- First start MidiBridge. The only connection needed is from
'MidiBridge' on the left/source to 'MidiBridge' on the right/destination.
As always, make sure 'Run in Background' on the Preferences pane is set to
'On'.
- Now start Animoog and select the sound you want. Under SETUP/MIDI
choose 'MidiBridge' and make sure that 'Background Audio' is on (the
button must be lit up green all over!)
- Finally start BeatMaker 2 and make the following adjustments by
pressing the 'i' (info) button and choosing 'MIDI SETUP'. Turn all
inputs OFF (to prevent infinite MIDI loops). Turn off all outputs
except MidiBridge. Press the 'OUT' button at the bottom so it is
lit up.
Now when you play in BeatMaker, Animoog will sound.
MidiBridge Cookbook
Here are two step by step guides for the 'tricky' apps like SampleTank
and SoundPrism.
- SampleTank/Sunrizer XS
- Make sure that the app will continue in the background. In SampleTank
the word 'On' must be red!
- Connect your source port to MidiBridge destination in MidiBridge
- SoundPrism PRO
- Make sure that MIDI On/Off is 'On' in SP preferences.
- Connect the source port MidiBridge to your desired destination in
MidiBridge
Simple, really!
Connecting two iDevices running MidiBridge together over WiFi
You want to control an app/output on your iPad wirelessly from your iPod
and both are running MidiBridge. You need to connect the two devices
together by initiating a connection from one to the other:
- On one of the devices, (lets call it A), go to the Settings app of the
device. Select 'General', then 'Network', then 'WiFi' and then click the
accessory button on the network you are currently joined to. Make a note of
the IP address.
- Start MidiBridge on A
- On B, start MidiBridge and enter the IP Address you wrote down in the
'CoreMIDI Destination Host/IP Address' field and then press the Connect
button. Both devices should let you know a connection has been established.
- On device A (for example) connect your event source to the CoreMIDI Net
out destination.
- On the other device, connect the CoreMIDI Net in source to the
destination port you want to exert control over.
NB. Both devices must be connected to the same Wi-Fi network, in case that
isn't obvious.
The 'Fast-switchable Applications' Panel - or what is OMAC and why do I care?
OMAC stands for Open Music App Collaboration and is a group of iOS music
app developers who are working together to create unofficial standards for
music apps in terms of MIDI and audio interaction. One of the prongs of this
is the OMAC App Registry for app fast-switching where users can rapidly
switch to other music apps without using the Home button from within the
app itself.
Audeonic is committed to this and hence as of MidiBridge version 1.3 (and
MidiVision 1.5) a 'Fast-switchable Applications' panel has been added that lets
you fast-switch or launch OMAC compatible applications.
Just because an app doesn't feature in the OMAC 'Fast-switchable Apps' list
doesn't mean that it can't be controlled via MidiBridge!
The list shown in this window has little to do with MIDI connectivity and
much to do with fast-switching. The list shows all fast-switchable apps
available for the device and, if they are ticked, then touching that app's
entry in the list will launch or switch-to that app.
If the app isn't ticked, then the app is not installed on the device and
touching the app's entry will take you to the App Store to see if that
particular app is of interest to you with the knowledge that if you do
install it, you'll be able to fast-switch/launch it from MidiBridge
directly.
Again, do not let yourself be confused by what this panel stands for. It
is only for fast switching and an app's absence from this list does not mean
that MidiBridge cannot send/receive events to/from it.
If your favorite app isn't on the list, then please let the developer
know. Full details on what they need to do are at the google group 'Open
Music App Collaboration' in the 'Introducing OMAC Registry' thread
here.
Video Help
The amazing people at iDesignSound, MusicApps.com.br and Tim Behrens have
all made videos showing MidiBridge in action. Here are the links, and thanks
to those above for making the movies.
iDesignSound
MidiBridge & SynthStation25 Allows Control of any CoreMIDI iPhone App!
iDesignSound
MidiBridge + Akai SynthStation25 = Wireless MIDI Controller Keyboard!
MusicApps.com.br
Resurrecting your MIDI Mobilizer I with MidiBridge app
MusicApps.com.br
Controlling SampleTank for iOS with SoundPrism Pro using MidiBridge
Tim Behrens
Geo Synthesizer controlling SampleTank via Midi Bridge - Part 1
Tim Behrens
Geo Synthesizer controlling SampleTank via Midi Bridge - Part 2
|