Startseite

Dateiformat Midids

Midids ist ein Dateiformat, ein Textformat, um musikalische Events aufzuzeichnen. Ich habe dieses Format entwickelt um binäre MIDI-Dateien in Textform darzustellen. Das hat den Vorteil, dass diese Dateien manuell und automatisiert editiert und verarbeitet werden können. Automatisisert z. B. durch ein Python-Skript. Das Format erlaubt es weiterhin neben den eigentlichen MIDI-Events weitere Angaben einzufügen, die in der Regel nicht Teil einer MIDI-Datei sind. Darunter fallen z. B. Positionsangaben auf einem Notenblatt,

Jede Zeile definiert ein Event. Eine Event-Zeile fängt mit einem Doppelpunkt an, davor dürfen Whitespaces stehen. Alle Zeilen, die nicht so anfangen werden schlicht ignoriert und als Kommentarzeichen gesehen.

Konvention: um Kommentarzeilen besser kenntlich zu machen, stellt man ein Hash # voran. Notwendig ist das aber nicht.

Jede Zeile soll auf maximal 1023 Zeichen beschränkt sein. Längere Zeilen werden vom Parser abgeschnitten (daher können Kommentarzeilen länger sein).

Das generelle Format eine Zeile ist:

:<timestamp> <command> [<parameter>=<value>]*

Welche Parameter erlaubt sind, hängt vom Kommando ab. Die Parameter werden mit Whitespaces getrennt. Parameternamen und auch Werte dürfen keine Whitespaces enthalten. Vor und nach dem Gleichheitszeichen sind keine Leerzeichen erlaubt.

Der Timestamp wird in Millisekunden angegeben. Er ist immer relativ zum vorhergehenden Ereignis. Der Startzeitpunkt ist null. Der Timestamp kann als Kommazahl angegeben werden, dazu muss dann ein Dezimalpunkt verwendet werden. Wissenschaftliche Notation wird nicht unterstützt. In der Regel wird aber nach Millisekunden quantisiert. Zwischen dem Doppelpunkt und dem Zeitstempel ist kein Whitespace erlaubt.

1 Kommandos

1.1 KeyOn

:<timestamp> kon t=<track> n=<note> [v=<velocity>] [i=<id>] [e=<event>]

Ein MIDI-KeyOn Event.

1.2 KeyOff

:<timestamp> koff t=<track> n=<note> [i=<id>] [e=<event>]

Ein MIDI-KeyOff Event.

1.3 Position

:<timestamp> pos pg=<page> pt=<part> [i=<id>] [e=<event>]

Dieses Event wird für den ScoreViewer benötigt, um die aktuelle Position auf dem Notenblatt anzuzeigen.

1.4 Program Change

:<timestamp> pc t=<track> p=<program> [i=<id>] [e=<event>]

Ein MIDI-PC Event.

2 Parameter

2.1 Parameter Track

Der Parameter gibt die Midids-Track an, also die Spur. Die Track ist eine Ganzzahl >= 0.

t=<track>

2.2 Parameter Note

Der Parameter gibt die Midi-Pitchnummer an, also die Tonhöhe. Die Note ist eine Ganzzahl >0 und <128. Die Note 0 ist erst einmal reserviert.

n=<note>

2.3 Parameter Id

Der Parameter dient dazu, kon und koff und andere Befehle zuzuordnen. Die Id ist eine Ganzzahl >= 0.

id=<id>

Der Parameter ist in älteren Midids-Dateien noch nicht vorhanden. Daher kann er vom Reader auch generiert werden. In einer Datei sollten entweder alle oder kein Befehl eine Id tragen.

2.4 Parameter Event

Der Parameter bezeichnet ein Event. Es kann ein beliebiger String verwendet werden. Der Parameter dient zu Debug-Zwecken. Er ist immer optional. Er sollte möglichst eindeutig sein (z. B. eine laufende Nummer)

e=<event>

2.5 Parameter Velocity

Der Parameter gibt die Midi-Velocity an, also die Lautstärke. Die Velocity ist eine Ganzzahl >0 und <128.

v=<velocity>

Der Default-Wert ist 64 (mittlere Lautstärke).

2.6 Parameter Page

Der Parameter gibt die Seitenzahl in einem PDF-Dokument an. Es ist eine Ganzzahl >= null.

pg=<page>

2.7 Parameter Part

Der Parameter gibt in Verbindung mit dem Parameter Page an, wieviel Prozent von der aktuellen Seite angezeigt wird. Der Rest des Bildschirms wird von der nächsten Seite belegt. Es ist eine Ganzzahl > 0 und <= 100.

pt=<part>

2.8 Parameter Program

Der Parameter gibt das Programm des Midids-Track an, also das Instrument. Das Programm ist eine Ganzzahl >= 0.

p=<program>