Användarmanual

MIDI-syntax

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

Avgränsade värden

Först och främst kan flera MIDI-kommandon separeras av olika tecken inklusive: ett tabbavsnitt, kommatecken, semikolon, lodrätt streck eller nyrad. Kommatecknet ä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 där kommandot ska skickas. Eftersom kanaler i MIDI börjar på noll, skulle kanal ett vara en nolla (0), kanal två en (1), osv.

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

Prefixer

Varje post i listan innehåller ett prefix. Detta prefix bestämmer vilken typ av MIDI-kommando som ska skickas. Dessa inkluderar:

  • PC eller ingen prefix är en programändrings-händelse.
  • N är en noteringshn-händelse
  • CC är en kontrolländrings-händelse.
  • SS är en låtval-händelse.
  • START är ett startkommando.
  • STOP är ett stoppkommando.
  • CONTINUE är ett fortsättningskommando.
  • F0 föregå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. Detta är värdet för programändringen, kontrolländringen, noten eller låtvalet 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 kan MSB och LSB, såväl som hastighet för kontrollvärden skickas på detta sätt. Detta uttrycks genom tillägget av ett kolon i värdedelen. Delvärdets sammanhang skiljer sig åt beroende på vilken typ av MIDI-kommando som skickas:

  • Programändring har delvärden som överensstämmer med programändringens MSB/LSB. Dessa värden separeras med en punkt med MSB till vänster och LSB till höger.
  • Kontrolländring har värdet för kontrollen som ställs in med detta. Siffran kan vara mellan 0 och 127. Om det utelämnas antas värdet 127.
  • Nothändelse har ett delvärde som relaterar till hastigheten med vilken noten ska 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 detta scenario 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 bankväljaren och kanalen för att bli mer omfattande:

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

Kontrolländringar är liknande förutom att vänstersidan av syntaxen är kontrolländrings-numret 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

Nu låt oss ta en titt på nothändelser. Vi vill spela C4 på kanal 8 vid 75% hastighet, vi skulle ange följande eftersom OnSong börjar räkna MIDI C0 som 0 på MIDI-notskalan:

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

Igen är det viktigt att komma ihåg att när värden tas bort från MIDI-syntaxen blir MIDI-uttalandet mer omfattande och mindre specifikt. Till exempel skickar den sista versionen av nothändelsen C4 vid 100% hastighet på alla kanaler.

För att implementera en fördröjning mellan andra MIDI-händelser använder du WAIT-kommandot med ett nummer. Numret kan vara ett heltalsvärde. 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 2023 — Senast uppdaterad January 17, 2018