MIDILOG - Apple OSX Core MIDI Log Utility

 

Overview


MIDILOG is an Apple OSX Core MIDI logging utility. MIDILOG translates MIDI messages into human-readable form, according to the MIDI Manufacturers Association specification. The level of logging detail can be adjusted and there are various formatting options.


MIDILOG can run in “advertising” or “listening” mode, This allows MIDILOG to connect to any OSX Core MIDI source, or create of a MIDI destination, which can be addressed by any OSX-compatible MIDI application.


MIDILOG runs as a native UNIX command-line utility, making it fast and light. This allows concurrent MIDILOG sessions, as well as scripting for personalization and persistent settings. (A MIDILOG man page is also included.)


MIDILOG receives and responds to OSX Core MIDI notifications. These are optionally logged and MIDILOG will automatically adjust its configuration according to any relevant changes.


MIDILOG runs on Intel and PPC (OSX 10.4 and higher).


Audience


MIDILOG is geared toward MIDI hardware/software developers, as well as, musicians and engineers who just want to know what’s going on under the “Core MIDI hood”. If you use OSX and you have MIDI gear – you probably want MIDILOG!


Translation


MIDILOG translates raw MIDI messages into human-readable form. This is according to the MIDI Manufacturers Association MIDI specification. MIDILOG provides a standard translation for all MIDI status messages, including program changes, notes, controllers, pitch bend, channel pressure, song position pointer, etc. The MIDILOG music key can be set to change the pitch translation, as well as the music meter to adjust the relative song position.


RS Port 1 144 Note On-1 62 D3 100

RS Port 1 144 Note On-1 62 D3 0

RS Port 1 144 Note On-1 65 F3 100

RS Port 1 144 Note On-1 65 F3 0

RS Port 1 224 Pitch Bend-1 0 57 -896

RS Port 1 176 Control Change-1 5 Portamento Time MSB 118

RS Port 1 176 Control Change-1 16 General Purpose-1 MSB 89

RS Port 1 176 Control Change-1 74 Sound Control-5 (Brightness/Cutoff) LSB 91


MIDILOG responds to all OSX Core MIDI notifications. These may be logged and the MIDILOG client automatically reflects any relevant changes thereafter. For example, if a source name changes, the client will use the new name.


+CORE SETUP CHANGED

+MIDILOG Setup has Changed ...

+MIDILOG is Rebinding ...

+MIDILOG is Listening to ...

IAC Driver Bus 1 (Apple Computer, Inc./IAC Driver/Bus 1) Source

Key Pro 88 Port 1 (Evolution Electronics Ltd./Keystation Pro 88/Port 1) Source

Key Pro 88 Port 2 (Evolution Electronics Ltd./Keystation Pro 88/Port 2) Source

+MIDILOG is Ready (type ? for help) ...


MIDILOG will display the manufacturer, model and name, and show all external destinations, which are connected to a Core MIDI source.


POD (MOTU/MIDI Express XT/Port 5) Source; POD (Line 6/POD/Port 1) External Destination

MPX (MOTU/MIDI Express XT/Port 6) Source; MPX (Lexicon/MPX-500/Port 1) External Destination


Log Levels


MIDILOG supports 5 logging levels (0-4).


MIDILOG level 0 shows the raw data that is passing through the OSX Core MIDI system.


<-579065033> {1} [0] <24720785846380> *3 <BA480C> 186 72 12

<-269986415> {1} [0] <24725280822718> *3 <903964> 144 57 100

<-269986415> {1} [0] <24725400822773> *3 <903900> 144 57 0


MIDILOG level 1 shows the MIDI integer values only. (There is a leading zeros option to align these values.)


154 101 61

154 105 0

186 121 127

186 121 0


MIDILOG level 2 shows the MIDI integer values and their translations according to the MIDI Manufacturers Association specification.


RS Port 1 224 Pitch Bend-1 0 61 -384

RS Port 1 224 Pitch Bend-1 0 64 +0

RS Port 1 176 Control Change-1 5 Portamento Time MSB 122

M88-USB Port 1 186 Control Change-11 72 Sound Control-3 (Release Time) LSB 23


MIDILOG level 3 adds the MIDI packet timestamp to level 2 (i.e., the time since the computer was last restarted).


M88-USB Port 1 01:06:40.393 186 Control Change-11 4 Foot Pedal MSB 30

M88-USB Port 1 01:06:41.086 186 Control Change-11 2 Breath MSB 13

M88-USB Port 1 01:06:53.016 186 Control Change-11 67 Soft Pedal 0 Off

M88-USB Port 1 01:06:53.340 186 Control Change-11 68 Legato Pedal 0 Normal


MIDILOG level 4 shows the raw MIDI data and all related translations.


<-579065033> M88-USB Port 1 {1} [0] <25990595366762> 01:14:47.341 *3 <9A6650> 154 Note On-11 102 F#6 80

<-579065033> M88-USB Port 1 {1} [0] <25990776382588> 01:14:47.522 *3 <9A6600> 154 Note On-11 102 F#6 0

<-579065033> M88-USB Port 1 {1} [0] <25991014381997> 01:14:47.760 *3 <9A6A57> 154 Note On-11 106 Bb6 87

<-579065033> M88-USB Port 1 {1} [0] <25991172363628> 01:14:47.918 *3 <9A6A00> 154 Note On-11 106 Bb6 0


MIDILOG also provides a verbose option, which shows headers and labels related to all logged values.


+PROXY display=M88-USB Port 1 +PACKETLIST {1} -PACKET [0] status=154, function=Note On, channel=11, note=105, pitch=A6, velocity=96

+PROXY display=M88-USB Port 1 +PACKETLIST {1} -PACKET [0] status=154, function=Note On, channel=11, note=105, pitch=A6, velocity=0

+PROXY display=M88-USB Port 1 +PACKETLIST {1} -PACKET [0] status=154, function=Note On, channel=11, note=108, pitch=C7, velocity=0


Note: MIDILOG will optionally log the delay between the MIDI packet timestamp and current one. This shows how well the CPU and MIDI gear is performing, and how much realtime delay is occurring.


RS Port 1 +0.001017 144 Note On-1 55 G2 100

RS Port 1 +0.000174 144 Note On-1 55 G2 0

M88-USB Port 1 +0.000079 154 Note On-11 82 Bb4 107

M88-USB Port 1 +0.000084 154 Note On-11 82 Bb4 0


Operational Modes


MIDILOG can connect to one or more MIDI sources (listening mode) or create a MIDI destination, which can be used by any OSX Core MIDI-compatible application (advertising mode).


Listening Mode













By default, MIDILOG listens to all OSX Core MIDI sources. (This can be adjusted for specific sources, by specifying their unique ids via a command-line parameter.) MIDILOG will log and translate any MIDI messages that are sent by these devices to the terminal window.


Advertising Mode












MIDILOG can be set to advertise a MIDI destination, which can be addressed via any OSX Core MIDI-compatible application. MIDILOG appears to the application as any other MIDI output device. Simply connect the application to MIDILOG and MIDILOG will log these messages to the terminal window.


The unique id for the destination can be set via a command-line parameter to create a persistent MIDI destination for OSX Core MIDI applications.


Terminal Window


MIDILOG runs as an OSX command-line utility. Several MIDILOG clients can be started via different terminal windows. Each will act completely independent from one another.


The MIDILOG startup parameters allow control over the:

  1. Advertising/listening mode

  2. Name

  3. Unique ids

  4. Music key

  5. Log level

  6. Music meter


MIDILOG runtime commands enable the user to:

  1. Write the MIDILOG context

  2. Pause the MIDILOG client

  3. Restart the MIDILOG client

  4. Write MIDILOG proxies

  5. Set log level

  6. Get simple help


MIDILOG formatting commands can be used during startup and at runtime:

  1. Join MIDI packet lists

  2. Use quotes

  3. Use uppercase (caps)

  4. Show timestamp delay

  5. Show leading zeros

  6. Show headers and labels (verbose)


Compatibly


MIDILOG is fully Intel and PPC-compatible (OSX 10.4 and higher).

Features

  1. BulletLogs OSX Core MIDI Messages.

  2. BulletTranslates MIDI messages.

  3. Bullet“Advertising” or “listening” mode.

  4. BulletSimple to detailed logging levels.

  5. BulletHandles OSX Core MIDI notifications.

  6. BulletNative unix command line utility.

  7. BulletOperates with any OSX-compatible MIDI application or device.

  8. BulletIntel and PPC-compatible.

© John Ebner, 2009. All rights reserved.