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