Benutzerhandbuch

MIDI-Syntax

OnSong verwendet eine textbasierte Syntax zum Ausdrücken von MIDI-Befehlen. Während Sie die MIDI-Ereignisse im Metadaten-Editor verwenden können, können Sie MIDI-Befehle auch als Text ausdrücken.

Begrenzte Werte

Zunächst können mehrere MIDI-Befehle durch verschiedene Zeichen getrennt werden, einschließlich: ein Tabulatorzeichen, Komma, Semikolon, senkrechter Strich oder neue Zeile. Das Komma ist das häufigste Trennzeichen. Beispiel:

1.2:0@0, PC1.2:3@0, N67@1, START, SS8

Kanal

Jeder Eintrag kann ein @-Symbol enthalten. Der numerische Wert nach dem Symbol ist der Kanal, auf dem der Befehl gesendet werden soll. Da die MIDI-Kanäle bei Null beginnen, wäre Kanal eins eine Null (0), Kanal zwei eine Eins (1) usw.

Wenn kein @-Symbol verwendet wird, wird der Befehl auf allen Kanälen gesendet oder empfangen.

Präfixe

Jeder Eintrag in der Liste enthält ein Präfix. Dieses Präfix bestimmt, welche Art von MIDI-Befehl gesendet wird. Dazu gehören:

  • PC oder Kein Präfix ist ein Programmwechselereignis.
  • N ist ein Notenereignis
  • CC ist ein Kontrolländerungsereignis.
  • NRPN ist eine nicht registrierte Parameternummer.
  • SS ist ein Liedauswahleereignis.
  • START ist ein Startbefehl.
  • STOP ist ein Stoppbefehl.
  • CONTINUE ist ein Fortfahrtsbefehl.
  • WAIT wartet eine bestimmte Zeit, bevor weitere Ereignisse gesendet werden.
  • F0 leitet eine SysEx-Nachricht ein.
  • @ leitet ein globales MIDI-Tag ein.

Werte

Der Wert des Befehls erscheint direkt vor dem @-Symbol oder am Ende des Eintrags, wenn kein @ angegeben ist. Dies ist der Wert des Programmwechsels, der Kontrolländerung, der Note oder der Liedauswahl basierend auf dem Präfix. Im Fall von SysEx-Einträgen wird der Hexadezimalwert der SysEx direkt nach dem F0-Präfix angegeben, das als Header für alle SysEx-Befehle dient.

Unterwerte

In einigen Fällen werden zusätzliche Informationen im MIDI-Befehl als Unterwerte übermittelt. Beispielsweise können MSB und LSB sowie die Geschwindigkeit von Kontrollwerten auf diese Weise gesendet werden. Dies wird durch das Hinzufügen eines Doppelpunkts im Wertteil ausgedrückt. Der Unterwert hat unterschiedliche Bedeutung je nach dem Typ des gesendeten MIDI-Befehls:

  • Programmwechsel hat Unterwerte, die sich an MSB/LSB des Programmwechsels ausrichten. Diese Werte werden durch einen Punkt getrennt, wobei sich das MSB auf der linken Seite und das LSB auf der rechten Seite befinden.
  • Kontrolländerung hat den Wert der mit diesem eingestellten Steuerung. Die Zahl kann zwischen 0 und 127 liegen. Wenn nicht angegeben, wird der Wert 127 angenommen. Sie können auch mehrere Werte mit einem Bindestrich trennen, um durch Werte zu gehen. Beispielsweise wird 127-0 den Wert 127 zwischen ein- und ausgeschaltet latchieren.
  • Notenereignis hat einen Unterwert, der sich auf die Anschlagsdynamik bezieht, mit der die Note gespielt werden soll. Dies kann auf einen numerischen Wert zwischen 0 und 127 eingestellt werden. Sie können mehrere Notengeschwindigkeiten durchlaufen, indem Sie sie mit einem Bindestrich trennen.

Beispiele

Beginnen wir mit einem einfachen Programmwechsel. In diesem Szenario verwenden wir Programmwechsel 8, der auch ein MSB von 4 und ein LSB von 2 auf Kanal 1 sendet. Das Beispiel beginnt mit der komplexesten Variante und entfernt die Bankauswahl und den Kanal, um breiter zu werden:

PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7

Kontrolländerungen sind ähnlich, außer dass die linke Seite der Syntax die Kontrolländerungsnummer und die rechte Seite ein optionaler Wert ist. Wenn der Wert nicht angegeben ist, wird stattdessen 127 gesendet. Wir senden Kontrolländerung 106 mit einem Wert von 64 auf Kanal 3.

CC105:63@2, CC105:63. CC105@2, CC105

Schauen wir uns nun Notenereignisse an. Wir möchten C4 auf Kanal 8 mit 75 % Anschlagsdynamik spielen, wir würden Folgendes eingeben, da OnSong mit dem Zählen von MIDI C0 bei 0 auf der MIDI-Notenskala beginnt:

N60:95@7, N60@7, N60:95, N60

Es ist wichtig zu beachten, dass mit der Entfernung von Werten aus der MIDI-Syntax die MIDI-Anweisung breiter und weniger spezifisch wird. Beispielsweise sendet die letzte Version des Notenereignisses C4 mit 100 % Anschlagsdynamik auf allen Kanälen.

Wir können MIDI auch verzögern, indem wir einen WAIT-Befehl hinzufügen. Folgende verzögert die MIDI um 2 Sekunden sowie 500 ms (eine halbe Sekunde). Sie können Sekunden als 1–10 Sekunden oder in Millisekunden angeben.

WAIT2, WAIT500

Abschließend können wir auf globale MIDI-Variablen verweisen, die vorkonfigurierte Listen von MIDI-Ereignissen sind, die referenziert werden können. Wenn Sie eine globale MIDI-Variable mit „on" als Tag haben (ohne Anführungszeichen), können Sie diese globale Variable wie folgt referenzieren:

@on
OnSong 2026 — Zuletzt aktualisiert am March 11, 2020