Humdrum Representation for MIDI


**MIDI -- Musical Instrument Digital Interface notation


The **MIDI representation is a Humdrum version of the well-known MIDI standard. MIDI is an industry standard used to exchange information between sound synthesizers. MIDI is also used in various software applications such as some music printing software. MIDI is a type of "tablature" notation. It describes a set of performance actions rather than specifying the sounded result. MIDI represents note-on, note-off, information, for various "channels." MIDI events include note-on, note-off, key-velocity, after-touch, control codes, and system-exclusive codes. MIDI does not represent many other musically-pertinent signifiers, such as ties, slurs, phrasings, ornaments, etc. MIDI does not represent rests.


It is recommended that files containing predominantly **MIDI data should be given names with the distinguishing `.hmd' extension.


The following table summarizes the **MIDI mappings of signifiers and signifieds.

0-9decimal values
/value delimiter
=barline; == double barline
-note off
Summary of **MIDI Signifiers


A sample document is given below:
!! C-major scale.
72/-60/64 72/62/64
36/-62/64 36/64/64
36/-64/64 36/65/64
36/-65/64 36/67/64
36/-67/64 36/69/64
36/-69/64 36/71/64
36/-71/64 36/72/64
Each **MIDI data token consist of three elements or components. Each element is an integer value; elements within a data token are delimited by the slash character (/).

The first element in a data token represents the number of clock ticks (since the previous event) before the event is to occur. The absolute duration of a single clock tick is determined by the MIDI clock speed, which is variable.

The second --ent in a data token represents the MIDI key number -- that is, the address of the key event. Key events can be either key-on or key-off. Key-on events are represented by positive integers, whereas key-off events are represented by negative integers. For example, -60 means to turn-off key 60.

The third element in a data token represents the MIDI key-velocity value. MIDI instruments normally interpret key-velocity as dynamic or accent information. Higher key-velocity values are associated with accented notes. Permissible key-velocity values range between 0 and 127. encodings. In the case of key-off events, the key-velocity component represents the after-touch.

Note that the key-velocity component of a data token is optional and need not appear. However, both the clock-tick value and the key-event values must be present in each **MIDI data token.

Barlines are represented using the "common system" for barlines -- see barlines.


The following Humdrum commands accept **MIDI encoded data as inputs:
centstranslates **MIDI to **cents
fadefade-in or fade-out **MIDI data
freqtranslates **MIDI to **freq
kerntranslates **MIDI to **kern
performplay Humdrum **MIDI files
pitchtranslates **MIDI to **pitch
semitstranslates **MIDI to **semits
smfgenerate standard MIDI file
solfgtranslates **MIDI to **solfg
tonhtranslates **MIDI to **Tonh
The following Humdrum commands produce **MIDI data as outputs:
midiproduces **MIDI output from **kern input
recordrecords **MIDI data from a MIDI input


The following tandem interpretations can be used in conjunction with **MIDI:
MIDI channel*Ch1
meter signatures*M6/8
key signatures*k[f#c#]
Tandem interpretations for **MIDI


barlines, **cents, **freq, **kern, **pitch, **semits, **specC, **Tonh