Brugerhåndbog

MIDI-syntaks

OnSong bruger en tekstbaseret syntaks til at udtrykke MIDI-kommandoer. Mens du kan bruge MIDI Events i Metadata Editor, kan du også udtrykke MIDI-kommandoer i tekst.

Afgrænsede værdier

Først og fremmest kan flere MIDI-kommandoer adskilles af forskellige tegn, herunder: et tabulatortegn, komma, semikolon, lodret streg eller linjeskift. Kommaet er den mest almindelige afgrænsning. For eksempel:

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

Kanal

Hver post kan indeholde et @-symbol. Den numeriske værdi efter symbolet er kanalen, som kommandoen skal sendes på. Da kanaler i MIDI starter på nul, ville kanal et være nul (0), kanal to ville være en (1), osv.

Hvis der ikke bruges noget @-symbol, sendes eller modtages kommandoen på alle kanaler.

Præfikser

Hver post på listen indeholder et præfiks. Dette præfiks bestemmer, hvilken type MIDI-kommando der skal sendes. Disse omfatter:

  • PC eller Ingen præfiks er en programændringshændelse.
  • N er en nogehændelse
  • CC er en kontrolændringshændelse.
  • NRPN er et ikke-registreret parameternummer.
  • SS er en sanglekturhændelse.
  • START er en startkommando.
  • STOP er en stopkommando.
  • CONTINUE er en fortsætkommando.
  • WAIT venter et bestemt tidsrum, før flere hændelser sendes.
  • F0 præfikser en SysEx-besked.
  • @ præfikser et globalt MIDI-mærkat.

Værdier

Kommandoens værdi vises lige før @-symbolet eller på slutningen af posten, hvis intet @ er givet. Dette er værdien for programændringen, kontrolændringen, noden eller sanglekturen baseret på præfikset. I tilfælde af SysEx-poster gives den hexadecimale værdi af SysEx direkte efter F0-præfikset, som bruges som overskrift for alle SysEx-kommandoer.

Underværdier

I nogle tilfælde formidles yderligere oplysninger i MIDI-kommandoen som underværdier. For eksempel kan MSB og LSB samt hastighed af kontrolværdier sendes på denne måde. Dette udtrykkes gennem tilføjelsen af et kolon i værdiportionen. Underværdien har forskellige sammenhænge afhængigt af den type MIDI-kommando, der sendes:

  • Programændring har underværdier, der stemmer overens med MSB/LSB for programændringen. Disse værdier adskilles med en periode, hvor MSB er på venstre side og LSB på højre side.
  • Kontrolændring har værdien af kontrolsættet ved hjælp af dette. Tallet kan være mellem 0 og 127. Hvis det udelades, udledes værdien 127. Du kan også adskille flere værdier med en bindestreg for at gå gennem værdier. For eksempel vil 127-0 låse værdien 127 mellem til- og fraslukket tilstand.
  • Nogehændelse har en underværdi relateret til hastigheden, med hvilken noden skal afspilles. Dette kan indstilles til en numerisk værdi mellem 0 og 127. Du kan gå gennem flere notehastighederne ved at adskille dem med en bindestreg.

Eksempler

Lad os starte med en simpel programændring. I dette scenarie bruger vi programændring 8, som også sender en MSB på 4 og en LSB på 2 på kanal 1. Eksemplet starter med den mest komplekse variation af dette og fjerner bankvalget og kanalen for at blive bredere:

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

Kontrolændringer er ens, bortset fra at venstre side af syntaksen er kontrolændringsnummeret og højre side er en valgfri værdi. Hvis værdien ikke angives, sendes 127 i stedet. Vi sender kontrolændring 106 med værdien 64 på kanal 3.

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

Lad os nu se på nogehændelser. Vi ønsker at afspille C4 på kanal 8 ved 75% hastighed, så ville vi angive følgende, fordi OnSong begynder at tælle MIDI C0 som 0 på MIDI-noteskalaen:

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

Igen er det vigtigt at huske, at når værdier fjernes fra MIDI-syntaksen, bliver MIDI-udsagnet bredere og mindre specifikt. For eksempel vil den seneste version af nogehændelsen afspille C4 ved 100% hastighed på alle kanaler.

Vi kan også forsinke MIDI ved at tilføje en WAIT-kommando. Følgende forsinker MIDI i 2 sekunder samt 500 ms (et halvt sekund). Du kan angive sekunder som 1-10 sekunder eller i millisekunder.

WAIT2, WAIT500

Endelig kan vi referere til MIDI-globaler, som er forudkonfigurerede lister over MIDI-hændelser, der kan refereres. Hvis du har en MIDI-global med "on" som mærkat (uden anførselstegn), kan du referere til denne global med følgende:

@on
OnSong 2023 — Sidst opdateret den March 11, 2020