ГОСТ Р 53556.5—2013
//
a string constant
// strings no more than
255
chars
case
0xF3:
int (8) length:
unsignedint (8) str[length]:
break:
case
0xF4:
int (8) val:
break:
case
0xFF:
//end of oech
done
=1;
break:
//a whole orch file
}
}
class orcjile {
unsignedint
(16)
length:
orchjoken data [length]:
)
Файл оркестра (планировки) является строкой маркеров. Маркеры представляют собой синтаксичес
кие элементы, такие как зарезервированные слова, базовые имена кода операции и знаки препинания.
Кроме того, есть пять специальных маркеров. Маркер OxFOявляется маркером символа. Когда он встреча
ется. следующие 16битов в потоке битов должны быть номером символа. Маркер 0xF1 является маркером
значения. Когда он встречается, следующие 32 бита в потоке битое должны быть значением с плавающей
точкой. Этот маркер должен использоваться для всех символьных констант в пределах программы
SAOL
за исключением тех. с которыми встречаются в специальных целочисленных контекстах. Маркер 0xF2
является целочисленным маркером. Когда он встречается, следующие 32 бита в потоке битов должны быть
целочисленным значением без знака. Маркер 0xF3 является строковым маркером. Когда он встречается,
следующие несколько битое в потоке битов должны представлять строку символов (этот маркер в настоя
щий момент не используется). Маркер0xF4 является маркером байта. Когда он встречается, следующие 8
битов в потоке битовдолжны быть целочисленным значением без знака. Маркер OxFF является маркером
конца оркестра: этот маркер не имеет никакой синтаксической функции в оркестре
SAOL.
но показывает
конец раздела файла оркестра потока битое.
Не каждой последовательности маркеров разрешено выступать какфайл оркестра. Полная последо
вательность маркеров оркестрадолжна соответствовать производству <оркестра>.
score file definitions
class instr_event {
bit(1) hasjabel:
if (hasjabel)
symbol label:
symboliname_sym
,
float(
32)
dur,
unsignedint(8) num_pf:
float(32) pf[num_pl}:
classcontrol_event
bit(1) hasjabel:
if(hasjabel)
symbol label:
symbolvarsym:
float(22) value
}
class table_event {
symbol tname:
bit(1) destroy:
if(Idestroy) {
token tgen:
bit(1) refersJo_sample:
//a note-on event
//the instrument name
//note duration
// all the pfields (no more than
255
)}
//a control event
//the controllername
//the new value
// the name of the table
// a table destructor
//a core wavetable generator
4