MidiBridge

MidiBridge is a tool that allows you to interconnect all MIDI inputs and outputs on your iOS device. Use MidiBridge to:

  • Connect your external MIDI interface (Line6 Midi Mobilizer or iOS supported USB MIDI device) wirelessly over wi-fi to another app, computer or iOS device that supports CoreMIDI network.
  • Filter events separately on each input and output.
  • Clone events from an input to multiple outputs.
  • Split events from an input to multiple outputs.
  • Merge events from multiple inputs to one or more outputs.
Or any combination of the above.

IMPORTANT - before you dive into using MidiBridge please, please read the following section that explains how to connect inputs to outputs. Also, please take note that for best latency and throughput you will want to disable event visualisation (details here)

MidiBridge has 3 tabs at the bottom of the screen:

Interfaces, which shows all the MIDI ports in the system and is where you connect inputs to outputs and set port filters and names.
Preferences, which allows you to configure options and connect to CoreMIDI wireless hosts.
Instructions, your user guide - which you are now reading.

     Interfaces

On the interfaces tab, you will find a set of MIDI inputs and outputs that have been detected by the app. Inputs are on the left and outputs are on the right. If your iOS device is running iOS version 4.2 or greater then you will have CoreMIDI support. CoreMIDI network inputs and outputs have a wi-fi symbol embedded in them for easy identification. CoreMidi virtual inputs and outputs have a virtual cable logo embedded in them also. When the app starts, network CoreMIDI is enabled to permit incoming connections from other hosts.

Each port (input or output) has three touchable areas:

To connect inputs to outputs you do the following:

  1. Choose an input that you wish to connect from. It will change to a green colour to show it has been selected.
  2. Now touch one or more outputs to connect that output to the currently selected input. A green line from the input to the output will be shown to indicate that the two are connected.
  3. Touch the orignally selected input (or another input) to deselect that input.

The same procedure works in reverse if you wish to select an output and connect a number of inputs to it. To break a connection you simply repeat the above on a pair of inputs and outputs that are already connected.

Also, when you select a port, all connections to that port are highlighted, so, if you want to see which ports an input or output is connected to you just touch that port. Remember to touch it again to deselect it.

When MIDI events pass through a port (received on an input or sent from an output), the port will flash briefly. The flashing can be disabled from the Preferences window.

MidiBridge keeps track of the MIDI interfaces it sees and the connections made between them and will restore any connections that were made previously.

Naming of ports

You can define your own names for each port, for example the name of the instrument or MIDI device connected to it. Just touch the icon in the port and use the keyboard to change the name. The name you set will be remembered and when MidiBridge is run again your own port names will be restored.

Port Filters

Each port (input or output) has its own midi event filter.

The filter view allows you to filter out (or in) certain types of midi events from passing through the input or output. To access the filter settings of a port, touch the button.

Note! When a filter is activated for the first time, the default setting is to block no events (pass-thru)

This section describes each control and how it affects the filter:

  • Bypass/Active

    This segmented control determines whether the filter is in effect or whether it is bypassed. If bypassed, the other filter controls are not accessible and events are not checked against the filter.

    When the filter is active, an badge will be shown on the filter button in the Interfaces window in order to remind you if a filter is active on that port.

    Note also, that if an event is blocked by the filter, the port itself will not flash, but the badge will flash instead, as a visual indicator of events being blocked.

  • Mode

    The filter operates in one of two modes:

    Allow mode specifies that events which match the event types/channels specified below are used. All events that do not match the event types/channel matrix settings will be ignored. This type of filter is generally used to focus in on a particular type of event stream.

    Block mode specifies that all events received are allowed unless they match the event types/channel matrix settings. This type of filter is generally used to exclude unwanted events from the capture/midi thru.

  • Channel Matrix

    The channel matrix (shown below) allows you to choose the channels that are to be used in the filter. You select/deselect channels by touching them. In itself the channel matrix does not specify the events to filter, but is used in conjunction with the Event Type switches described in the next section.


  • Event Type On/Off

    Below the channel matrix are the event types that can be used by the filter. The event types that can be filtered are as follows:

    • Note On/Off - Note On, Note Off messages
    • Aftertouch - Channel pressure, Aftertouch messages
    • Controller - Channel Controller, Pitchwheel messages
    • Program Change - Program Change messages
    • Sysex - System Exclusive messages
    • Time/Song - MIDI Time Code, Song Position/Select messages

    Touch each of these event type buttons to toggle their inclusion (or not) in the filter.

    In addition, note, aftertouch, controller and program change event types can be also checked against the channel matrix by toggling the mini channel matrix button to the right of each of these types.

    If the matrix button for an event type is not selected then all channels for that event type are included in the filter.

    By way of example, the above two pictures show that Note On/Off messages are to be included in the (Allow) filter and that only those note on/off events that are sent on the channel specified in the channel matrix (1 and 2) will be considered. Aftertouch messages will not be considered at all.

  • Use the 'Done' button to save your filter changes or the 'Cancel' button to forget any changes made.

Filters can be used to split events from one input into multiple outputs. Simply connect the input to the outputs and then set an 'allow' filter on each output (or block filter) to allow only the desired channels for that output to be forwarded.

With keyboard controllers (or other devices) that send active sense messages, you may find that blocking TimeSong events on that input (and thus filtering out active sense) will improve performance.

CoreMIDI Wireless Networking

One of the core features of MidiBridge is the ability to connect externally connected MIDI devices to remote CoreMIDI hosts via wi-fi from your iOS device. Here are some important things you should know:

  • When MidiBridge starts, it allows incoming connections from any host on UDP port 5004 on the local network. You can initiate a CoreMIDI network connection from a Mac, PC (with appropriate software) or another iOS device running a CoreMIDI supported app (or even another MidiBridge app to interconnect two MIDI devices wirelessly).

  • Your iOS device can be connected to more than one remote host at the same time. In which case, all MIDI events from any networked host will be received by MidiBridge and all networked hosts will receive events sent to the network output.

  • MidiBridge can initiate one network connection to another host (see Preferences)

  • When one or more remote hosts are connected, the port wi-fi icon will be highlighted yellow and the badge on the Interfaces tab bar will show the total number of remote hosts connected to your device.

     Preferences

The Preferences page allows you to customise the way MidiBridge behaves and is also where you can initiate CoreMIDI network connections.

All settings (including filters, names and connections) are remembered between app invocations.

The settings are:

  • Enable/Disable Inputs (default: All enabled)

    Pressing this button will bring up a seperate panel from where you can choose to have MidiBridge disable or enable any of the input ports detected in your device. If an input is disabled, no events will be processed from that input and the input port on the Interfaces tab will be darkened.

  • Jitter/Sync Latency (default: 0 ms)

    With a value of zero, MidiBridge will pass an event to the routed outputs as fast as possible and it is best to use this value when playing live. However, for sequences or time based traffic, increasing this value (250ms works well) will delay the event and tell the system to play the event at the relative time at which it was received on each input and thus syncing the event streams without any jitter.

  • Run in Background (default: Off)

    If this option is set to 'On', then MidiBridge will continue processing MIDI when the app is backgrounded. Naturally, this can reduce battery life if there are many apps running. Note, that if no MIDI data is received for 20 minutes, MidiBridge will suspend (and inform you via notification) to preserve battery life.

  • Visual Events (default: On)

    Switching this on will cause ports (or filter badges) to flash briefly as event data is processed. Turn this off to gain more performance and reduced latency.

  • CoreMIDI Destination Host/IP Address (no default)

    In order to initiate a connection to a remote host from MidiBridge, the name of the host (network hostname) or raw IP address (eg. 192.168.1.30) should be set here.

  • CoreMIDI Destination Port (default: 5004)

    The port number to use when initiating a connection. This must match the port number set on the remote host for CoreMIDI networking for the desired session. Please note that your iOS device will only receive connections on port 5004.

  • Connect Automatically (default: Off)

    When MidiBridge starts if this option is set to 'On' then it will immediately attempt to connect to the host/port specified in the preceding settings.

  • Connection Dialogs (default: On)

    When a CoreMIDI network session is connected or disconnected (whether initiated by MidiBridge or from a remote device) informational dialogue boxes are displayed. Setting this to 'Off' will suppress these.

  • Connect (Disconnect)

    Pressing the Connect button will initiate a connection to the remote CoreMIDI host specified above manually. When one or more networking sessions are active, this button becomes a 'Disconnect' button. Pressing 'Disconnect' will terminate all network sessions; both initiated from the device and remotely initiated from another host.

Known limitations and issues

This section describes some of the known issues and limitations of MidiBridge.

Landscape Mode - Landscape mode is only supported on the iPad, although you can rotate an iPhone or iPod Touch upside down.

Sysex with CoreMIDI Network/Virtual - Currently individual SysEx messages greater than 1010 bytes are truncated/lost when sent to a CoreMIDI network or virtual output. Similarly, any sysex message greater than 256 bytes received by a CoreMIDI network or virtual input is truncated. In both of these cases MidiBridge discards the (now useless) truncated data and warns you it has had to do this via a 'once-per'session' dialog. This is an Apple iOS issue (presumably the iOS CoreMIDI network driver has a bug).

Other Audeonic Apps

We'd like to mention our other iOS apps which may be of interest to you. Touch the app icon to view in the App Store


MidiVision
A MIDI event monitor with colour-coded messages, filtering and midi-thru.

Silent4
A background iPhone utility to monitor your silent/ringer switch.

Finally, Thanks To

Rick Dangerous of Phongemeinschaft who suggested this as an enhancement to MidiVision

Line6 Midi Mobilizer Team

Tab bar icons by Joseph Wain www.glyphish.com, used under Creative Commons Attribution 3.0 United States License.

You, for downloading (and presumably purchasing) this application. We hope it will be useful to you. Please do take time to review it in the App Store for others. If you have any suggestions for improvements, have found bugs, want to vent your spleen or even need an app developer, please contact us at apps@audeonic.com or visit www.audeonic.com.



HTML handcrafted in vi by Audeonic Apps in Dublin, Ireland
Version 1.1 - © 2011 Audeonic Apps