MidiVision

MidiVision turns your iOS device into a handy, portable midi protocol capture and analysis tool. Interfaces supported include Line6's Midi Mobilizer (I and II) and all iOS supported CoreMIDI interfaces. Also supported are CoreMIDI network and virtual interfaces (to other running apps)

MIDI events received on a connected MIDI interface's input are captured and displayed in a human readable and colour coded form. The events can be viewed in a compact one event per line form or a more detailed format showing also the actual raw midi bytes for the event.

Captured events can be sent out of a MIDI output either using the midi thru feature or replayed on demand.

Incoming events can also be subjected to filtering to either block out unwanted events or to focus only on specific types of events.

Captured events can be emailed both as a printable report and a standard midi file for further analysis or use in other software.

MidiVision can also continue running in the background. iOS4.3 or above is required for background operation. Unfortunately, Midi Mobilizer I cannot run in the background.

In summary, a quick and easy way to see what exactly is coming out of your midi gear without having to drag around a computer!

MidiVision is very simple to use. Along the bottom of the screen are 6 tabs that switch between the different views. Just touch each tab to change the view. Each view is described in detail below.

     Event View (Compact/Detail)

This is the main view where captured events appear as they arrive. Each event type is colour coded (can be switched off) and denoted by an event type icon. In addition, a timestamp (relative or wallclock) for each event is shown, accurate to milliseconds (as per the Midi Interface). The parameters (eg. note value/velocity) of each event are also shown.

There are two forms of the event viewer; Compact and Detail. The compact view shows each event on one line along with basic/condensed information.

The detail view shows more information but over three lines and also includes the raw bytes received. Additionally in the detail view if the bytes received are significant (say for a sysex event) the complete bytes can be viewed by touching the disclosure button.

The event view is scrollable, but if the bottom of the events is being shown, then new events that arrive will appear and the view will scroll automatically to follow the new events. The number events captured in the display is shown in the badge on the compact tab as below:

There are two scrolling 'hotspots' (at top and bottom of view) which when touched will scroll to the very first event or the very last event. The picture below shows the scroll to bottom hotspot. It's the semi-opaque button with the big arrow in it.

A new hotspot at the bottom left corner allows you to clear events from the main event views. You need to double tap that hotspot to effect a clear.

Worth mentioning also is the green bar shaped 'led' to the right of the 'Help' tab visible in the above diagram. This led blinks solid green when a Midi Interface is connected. If the led is solid red, then no events can be received. When midi events are received by MidiVision, the led will blink red (from green) briefly.

Finally, an audible 'beep' will be emitted from the iOS device when it receives midi data as a non-visual indicator of incoming events. The beeps will occur at no less than 5 second intervals while data is being received, and will beep on the first event received after more than 5 seconds of data silence. ie. It won't beep on every single event.

     Filter

The filter view allows you to filter out (or in) certain types of midi events from either being captured/displayed or being mirrored to midi thru.

Note! Adding filtering has some effect on performance, especially of midi-thru and with busy midi streams output events may be slightly out of time. See the 'known issues' section at the bottom of this document for more.

To set up a filter you need to set the filter parameters on the Filter view. 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.

    When the filter is active, the badge text on the Filter tab shows the filter state in order to remind you if other views are active.

  • Applies To

    The filter can be applied to the event display and/or the midi thru function (but not neither). Touch the checkbox to have the filter apply to the relevant subsystem. Note, by checking the midi-thru tickbox, the 'enable midi thru' option in the settings view (described later) is turned on automatically.

  • 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.

     Actions

The Actions view is where you can email, replay or clear the events that are in the event display.

You can touch the 'email events' panel to generate an email which will include reports (printable) of the events in the display as well as a standard midi file (960 ticks per quarter/120 BPM) that can be used in other software packages such as sequencer programs.

You can touch the 'clear events' panel to clear all events in the display. You may be asked to confirm you wish to clear events (depending upon the confirm to clear setting described later) before the events are cleared. Note, you can also shake your device to clear events (again depending upon the option in the settings view).

The event display can be replayed using the 'Events Replay' panel. The first event in the display will start 1 second after the play button is pressed and continue until the end or until stop/pause are pressed. If new events arrive while events are playing, they will be captured, but will not be included in the current play.

On the event display, the next event that will be played will be highlighted and the Actions tab badge will show the current state of the transport.

The green time display (Current Play Time) shows how many seconds have elapsed since play was started. The smaller red 'End' value shows the time at which the last event will be played (relative to the start).

To the right of the transport panel the current/total events are shown.

The event player can play the events through one output only and the output that will be used is shown in the transport. The app selects the output for play automatically based upon the interfaces present at the time. The order (from highest to lowest priority) for determining the play output is as follows:

  • A connected CoreMIDI network interface
  • Physical MIDI interface
  • MidiVision's own virtual output

     Settings

User defined settings that alter the behaviour of MidiVision are found on this view. All (almost) settings are 'on/off' type parameters and settings (and indeed filter settings) are remembered between app invocations.

The settings are:

  • Audible Alerts (default: On)

    Switching this on will cause audible alerts (beeps) to be presented by MidiVision when incoming data arrives. Remember that the speaker volume must be up in order to hear the beeps.

  • Colour Coding (default: On)

    Events displayed in the event view will be colour coded according to event type. Changing this setting to 'Off' will draw all events in a white colour.

  • Wallclock Time (default: Off)

    The timestamp shown on events is relative to the first event which always appears at 00:00:00.000. Changing this option to 'On' will show the absolute local wallclock times (ie. the time as defined in your device) that the events were received at.

  • MIDI Thru (default: Off)

    Events that are received by MidiVision will be echoed to the corresponding midi output if this option is switched on. Also, if the filter is active and filtering on midi-thru, then only those events that pass the filter will be echoed.

  • Thru Jitter Reduction (default: No)

    For more accurate timing of thru events at the expense of some latency (250ms) turn this on. Not recommended for live playing, but will eliminate stuttering from sequencer sources. Very noticable difference with large data volumes on Midi Mobilizer I.

  • Confirm Clear (default: On)

    If this option is set to 'On', then you will be prompted to confirm before events are cleared (either by pressing the panel in the Actions view or shaking the device). Set this to 'Off' to bypass the failsafe check and events will be cleared without user confirmation.

  • Shake to Clear (default: Yes)

    If the device is shaken then the event display will be cleared (subject to a confirmation dialog depending upon the setting above). Set this to 'Off' to prevent shaking from clearing.

  • Run in Background (default: No)

    If this option is selected, then MidiVision will continue processing events even while backgrounded (not available for Midi Mobilizer I). If there are no events for 20 minutes after backgrounding, then MidiVision will suspend to conserve your battery, but will issue a reminder to let you know it has done so.

    In addition, if an interruption to audio is detected (say an incoming call on an iPhone), then MidiVision will be suspended by iOS. In this case, also, you will receive a dialog reminder to let you know that the app was suspended.

  • Enable/Disable Inputs

    Pressing this button will bring up a panel that allows you to check all inputs which MidiVision will listen to. By default, an input is enabled when it is first seen, but if you disable an input then that input will remain disabled in between app invocations.

Known limitations and issues

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

Event Display Throughput - If the incoming midi data is heavy and sustained, MidiVision will go into 'busy mode', where it backs off from updating the event display in order to process the incoming events as a priority. You will recognise when this happens by a 'busy mode' message that will appear. Once the input load drops, MidiVision will update the display and the message will disappear.

Midi Thru Latency - Depending upon the quantity of data being input, the midi thru feature can experience some variable latency causing events output to be slightly (or not so slightly) out of time. If the midi input load is high then busy mode (as described above) will kick in which will reduce this effect but may not eliminate it. Turning off audible alerts helps and also do not interact with the application (or rotate the device) to reduce the output variation. A future firmware update from Line6 may possibly offer a hardware midi thru function. Also, you can turn on 'Jitter Reduction' which eliminates the stuttering by applying a fixed latency of 250ms

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


MidiBridge
A MIDI event router - clone, merge, filter and split MIDI streams.

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

Finally, Thanks To

Line6 Midi Mobilizer Team

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

Actions icons used under GPL license from www.carpicon.com

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.2 - © 2011 Audeonic Apps