Formát sekvence tónů

Vysvětlivky k zápisu:

VERSION, TEMPO, RESOLUTION, BLOCK_START, BLOCK_END, PLAY_BLOCK, SET_VOLUME,
REPEAT a SILENCE jsou konstanty předdefinované v rozhraní ToneControl.

x*y   znamená, že se následující proměnná může opakovat v sekvenci minimálně
      x-krát a maximálně y-krát. Není-li x uvedeno, předpokládá se x=0, není-li
      uvedeno y, nemá počet opakování žádnou horní mez.

  vše, co je na téže řádce za středníkem je komentář

/     (obyčejné lomítko) alternativa

Definice:

sekvence = verze *1definice_tempa *1definice_rozlišení *definice_bloku 1*událost_sekvence
verze = VERSION číslo_verze
číslo_verze = 1
  ; verze číslo 1
 
definice_tempa = TEMPO modifikátor_tempa
modifikátor_tempa = 5 až 127
  ; po vynásobení 4 dostaneme hodnotu tempa v
  ; úderech za minutu, defaultní hodnota je 30

definice_rozlišení = RESOLUTION jednotka_rozlišení
jednotka_rozlišení = 1 až 127
  ; udává délku jednotkové noty, možné hodnoty jsou
  ; 1/1 až 1/127, defaultní hodnota je 1/64

definice_bloku = BLOCK_START číslo_bloku
                                1*událost_sekvence
                            BLOCK_END číslo_bloku
číslo_bloku = 0 - 127
  ; za BLOCK_END musí být stejné číslo jako za
  ; BLOCK_START
 
událost_sekvence = tón / blok / hlasitost / opakování

tón = výška délka
výška = 0 až 127 nebo SILENCE
  ; výška tónu
  ; hodnota 69 odpovídá komornímu a
délka = 1 až 127
  ; délka tónu v jednotkových délkách (jednotka rozlišení)
  ; skutečná délka tónu v milisekundách se vypočítá vztahem
  ; délka * 60 * 1000 / (jednotka_rozlišení * modifikátor_tempa * 4)
 
blok = PLAY_BLOCK číslo_bloku
číslo_bloku = 1 až 127
  ; blok tohoto čísla musí být předem definovaný

hlasitost = SET_VOLUME hodnota_hlasitosti
hodnota_hlasitosti = 0 až 100
  ; udaná hodnota je v procentech z maximální hlasitosti
 
opakování = REPEAT multiplikátor tón
multiplikátor = 2 až 127
  ; počet opakování následujícího tónu