Brukerveiledning
MIDI-syntaks
OnSong bruker en tekstbasert syntaks for å uttrykke MIDI-kommandoer. Mens du kan bruke MIDI-hendelser i metadataredigeringsprogrammet, kan du også uttrykke MIDI-kommandoer i tekst.
Avgrensede verdier
Først og fremst kan flere MIDI-kommandoer separeres med ulike tegn, inkludert: tabulatortegn, komma, semikolon, vertikalt strek eller ny linje. Komma er den vanligste avgrensningen. For eksempel:
1.2:0@0, PC1.2:3@0, N67@1, START, SS8
Kanal
Hver oppføring kan inneholde et @-symbol. Den numeriske verdien etter symbolet er kanalen som kommandoen skal sendes på. Siden kanaler i MIDI starter på null, ville kanal én være null (0), kanal to være én (1), og så videre.
Hvis ingen @-symbol brukes, sendes eller mottas kommandoen på alle kanaler.
Prefikser
Hver oppføring i listen inneholder et prefiks. Dette prefikset bestemmer hva slags MIDI-kommando som skal sendes. Disse inkluderer:
- PC eller ingen prefiks er en programendringshendelse.
- N er en notehendelse
- CC er en kontrollendrings-hendelse.
- NRPN er et ikke-registrert parameternummer.
- SS er en sangvalgshendelse.
- START er en startkommando.
- STOP er en stoppkommando.
- CONTINUE er en fortsettkommando.
- WAIT venter en bestemt tid før flere hendelser sendes.
- F0 starter en SysEx-melding.
- @ starter en MIDI global-tagg.
Verdier
Verdien av kommandoen vises rett før @-symbolet eller på slutten av oppføringen hvis ingen @ er gitt. Dette er verdien av programendringen, kontrollendringa, noten eller sangvalget basert på prefikset. I tilfelle SysEx-oppføringer gis den heksadesimale verdien av SysEx direkte etter F0-prefikset som brukes som overskrift for alle SysEx-kommandoer.
Underordnede verdier
I noen tilfeller formidles tilleggsinformasjon i MIDI-kommandoen som underordnede verdier. For eksempel kan MSB og LSB, samt hastighet for kontrollverdier, sendes på denne måten. Dette uttrykkes ved å legge til et kolon i verdidelen. Underverdien har annen betydning avhengig av typen MIDI-kommando som sendes:
- Programendring har underordnede verdier som stemmer overens med MSB/LSB for programendringen. Disse verdiene er separert med et punktum med MSB på venstre side og LSB på høyre side.
- Kontrollendringa har verdien av kontrollen som er angitt ved hjelp av dette. Nummeret kan være mellom 0 og 127. Hvis det utelates, utledes verdien 127. Du kan også separere flere verdier med en bindestrek for å gå gjennom verdier. For eksempel vil 127-0 låse verdien av 127 mellom på- og av-tilstander.
- Notehendelse har en underordnet verdi relatert til hastigheten som noten skal spilles med. Dette kan settes til en numerisk verdi mellom 0 og 127. Du kan gå gjennom flere noters hastigheter ved å separere dem med en bindestrek.
Eksempler
La oss starte med en enkel programendring. I dette scenariet bruker vi programendring 8 som også sender en MSB på 4 og en LSB på 2 på kanal 1. Eksemplet starter med den mest komplekse variasjonen av dette og fjerner bankvalget og kanalen for å bli bredere:
PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7
Kontrollendringar er like, bortsett fra at venstre side av syntaksen er kontrollendringsnummeret og høyre side er en valgfri verdi. Hvis verdien ikke er oppgitt, sendes 127 i stedet. Vi sender Kontrollendringa 106 med en verdi på 64 på kanal 3.
CC105:63@2, CC105:63. CC105@2, CC105
Nå skal vi se på notehendelser. Vi vil spille C4 på kanal 8 med 75 % hastighet, vi ville skrive inn følgende fordi OnSong begynner å telle MIDI C0 som 0 på MIDI-noteskalaen:
N60:95@7, N60@7, N60:95, N60
Igjen er det viktig å huske at når verdier fjernes fra MIDI-syntaksen, blir MIDI-setningen bredere og mindre spesifikk. For eksempel vil den siste versjonen av notehendelsen spille C4 med 100 % hastighet på alle kanaler.
Vi kan også forsinke MIDI ved å legge til en WAIT-kommando. Følgende vil forsinke MIDI i 2 sekunder så vel som 500 ms (halve sekund). Du kan angi sekunder som 1–10 sekunder eller i millisekunder.
WAIT2, WAIT500
Til slutt kan vi referere til MIDI-globaler som er forhåndskonfigurerte lister over MIDI-hendelser som kan refereres. Hvis du har en MIDI-global med "on" som tagger (uten sitattegn), kan du referere til den globalen med følgende:
@on