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 im Text ausdrücken.

Begrenzte Werte

Zunächst können mehrere MIDI-Befehle durch verschiedene Zeichen getrennt werden, darunter: ein Tabulatorzeichen, Komma, Semikolon, vertikaler Strich oder Zeilenumbruch. 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 Kanäle in MIDI 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 werden soll. Diese umfassen:

  • PC oder Kein Präfix ist ein Programmwechsel-Ereignis.
  • N ist ein Noten-Ereignis
  • CC ist ein Steuerungsänderungs-Ereignis.
  • SS ist ein Liedauswahl-Ereignis.
  • START ist ein Startbefehl.
  • STOP ist ein Stoppbefehl.
  • CONTINUE ist ein Fortsetzungsbefehl.
  • F0 präfixiert eine SysEx-Nachricht.
  • WAIT implementiert eine Verzögerung.

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 Steuerungsänderung, der Note oder der Liedauswahl basierend auf dem Präfix. Bei SysEx-Einträgen wird der Hexadezimalwert des SysEx direkt nach dem F0-Präfix angegeben, das als Header für alle SysEx-Befehle verwendet wird.

Unterwerte

In einigen Fällen werden zusätzliche Informationen im MIDI-Befehl als Unterwerte vermittelt. Zum Beispiel können MSB und LSB sowie die Geschwindigkeit von Steuerungswerten auf diese Weise gesendet werden. Dies wird durch das Hinzufügen eines Doppelpunkts im Wertteil ausgedrückt. Der Unterwert hat je nach Art des gesendeten MIDI-Befehls einen anderen Kontext:

  • Programmwechsel hat Unterwerte, die sich an MSB/LSB des Programmwechsels ausrichten. Diese Werte werden durch einen Punkt mit dem MSB auf der linken und dem LSB auf der rechten Seite getrennt.
  • Steuerungsänderung hat den Wert der damit gesetzten Steuerung. Die Zahl kann zwischen 0 und 127 liegen. Wenn weggelassen, wird der Wert 127 angenommen.
  • Noten-Ereignis hat einen Unterwert, der sich auf die Geschwindigkeit bezieht, mit der die Note gespielt werden soll. Dies kann auf einen numerischen Wert zwischen 0 und 127 eingestellt werden.

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 Variation davon 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

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

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

Schauen wir uns jetzt Noten-Ereignisse an. Wenn wir C4 auf Kanal 8 mit 75 % Geschwindigkeit spielen möchten, würden wir das folgende eingeben, da OnSong das Zählen von MIDI C0 als 0 auf der MIDI-Notenskala beginnt:

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

Auch hier ist es wichtig zu bedenken, dass mit dem Entfernen von Werten aus der MIDI-Syntax die MIDI-Anweisung breiter und weniger spezifisch wird. Beispielsweise sendet die letzte Version des Noten-Ereignisses C4 mit 100 % Geschwindigkeit auf allen Kanälen.

Um eine Verzögerung zwischen anderen MIDI-Ereignissen zu implementieren, verwenden Sie den WAIT-Befehl mit einer Zahl. Die Zahl kann ein ganzzahliger Wert sein. Sie können Sekunden zum Warten als 1-10 definieren oder als Millisekunden definieren. Das Folgende zeigt, wie Sie 2 Sekunden, 10 Sekunden und eine halbe Sekunde warten können.

WAIT2, WAIT10, WAIT500
OnSong 2026 — Zuletzt aktualisiert am January 17, 2018