Användarmanual

MIDI-syntax

OnSong använder en textbaserad syntax för att uttrycka MIDI-kommandon. Du kan använda MIDI-händelser i Metadataredigeraren, men du kan också uttrycka MIDI-kommandon i text.

Avgränsade värden

Först och främst kan flera MIDI-kommandon separeras med olika tecken: ett tabbtecken, komma, semikolon, lodrätt streck eller ny rad. Komma är den vanligaste avgränsaren. Till exempel:

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

Kanal

Varje post kan innehålla en @-symbol. Det numeriska värdet efter symbolen är kanalen på vilken kommandot ska skickas. Eftersom kanaler i MIDI börjar på noll skulle kanal ett vara noll (0), kanal två vara ett (1) och så vidare.

Om ingen @-symbol används skickas eller tas kommandot emot på alla kanaler.

Prefix

Varje post i listan innehåller ett prefix. Det här prefixet avgör vilken typ av MIDI-kommando som ska skickas. Dessa inkluderar:

  • PC eller inget prefix är en programändrings-händelse.
  • N är en nodhändelse
  • CC är en kontrolländrings-händelse.
  • SS är en låtvalshändelse.
  • START är ett startkommando.
  • STOP är ett stoppkommando.
  • CONTINUE är ett fortsättningskommando.
  • F0 är prefix för ett SysEx-meddelande.
  • WAIT implementerar en fördröjning.

Värden

Kommandots värde visas precis före @-symbolen eller i slutet av posten om ingen @ anges. Det här är värdet för programändring, kontrolländring, nod eller låtval baserat på prefixet. I fallet med SysEx-poster anges det hexadecimala värdet för SysEx direkt efter F0-prefixet som används som rubrik för alla SysEx-kommandon.

Delvärden

I vissa fall förmedlas ytterligare information i MIDI-kommandot som delvärden. Till exempel MSB och LSB, samt hastighet för kontrollvärden kan skickas på det här sättet. Detta uttrycks genom att lägga till ett kolon i värdedelen. Delvärdet har olika sammanhang beroende på vilken typ av MIDI-kommando som skickas:

  • Programändring har delvärden som överensstämmer med MSB/LSB för programändringen. Dessa värden separeras med en punkt med MSB på vänster sida och LSB på höger sida.
  • Kontrolländring har värdet för den kontroll som användes. Numret kan vara mellan 0 och 127. Om det utelämnas antas värdet 127.
  • Nodhändelse har ett delvärde som avser hastigheten med vilken noden bör spelas. Detta kan ställas in på ett numeriskt värde mellan 0 och 127.

Exempel

Låt oss börja med en enkel programändring. I det här scenariot använder vi programändring 8 som också skickar en MSB på 4 och en LSB på 2 på kanal 1. Exemplet börjar med den mest komplexa variationen av detta och tar bort bankval och kanal för att bli mer bred:

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

Kontrolländringar är likartade förutom att vänstersidan av syntaxen är kontrolländringsnumret och högersidan är ett valfritt värde. Om värdet inte anges skickas 127 istället. Vi skickar kontrolländring 106 med ett värde på 64 på kanal 3.

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

Låt oss nu titta på nodhändelser. Vi vill spela C4 på kanal 8 med 75 % hastighet. Vi skulle skriva följande eftersom OnSong börjar räkna MIDI C0 som 0 på MIDI-notskalan:

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

Återigen är det viktigt att komma ihåg att när värden tas bort från MIDI-syntaxen blir MIDI-satsen mer bred och mindre specifik. Till exempel skickar den sista versionen av nodhändelsen C4 med 100 % hastighet på alla kanaler.

Använd WAIT-kommandot med ett tal för att implementera en fördröjning mellan andra MIDI-händelser. Talet kan vara ett heltal. Du kan definiera sekunder att vänta som 1–10, eller definiera som millisekunder. Följande visar hur du väntar i 2 sekunder, 10 sekunder och en halv sekund.

WAIT2, WAIT10, WAIT500
OnSong 2026 — Senast uppdaterad January 17, 2018