Rev 734 | Blame | Compare with Previous | Last modification | View Log | Download
треки пакуем RLE
код NOTE_RLE - код повторения, после него 1 байт - число нулей
описание треков храним в начале
описание трека должно быть расширяемым, так что надо хранить длину описателя
сэмплы храним с указанием длины в строчках (а формат сэмпла меняться не должен?
)
треки храним в порядке: 0-я часть 0-го трека (т.е. ордер), потом 1-я часть 0-го трека (реально не бывает), потом ... то же с 1-м треком и т.д.
фрагменты используют тот же ордер, но другие инструменты или настройки каналов
db "untr"
db ver
db subver
dw смещение до сэмплов от начала файла
dw length =1..65536
dw loop
db числосэмплов (сейчас =S64)
db числофрагментов F
db числотреков N
db числочастей (сейчас =P64)
ASCIIZ название (максимум MAXSONGNAME+1 байт)
ASCIIZ автор (максимум MAXSONGNAME+1 байт)
;(может быть ещё сколько-то байт)
;sample 0 (smp_pause)
db длина в строчках
db длина зацикливания
dw 0 ;reserved
ASCIIZ название
строчки по 8 байт (для возможности расширения)
;sample 1
...
;sample S64-1 (хотя реально можно ввести до 62-го)
;описание фрагментов композиции
;фрагмент 0
dw length
ASCIIZ название
;описание треков фрагмента 0
;track 0 type
описание 8 байт
ASCIIZ название
;track 1 type
...
;track N-1 type
;фрагмент 1
...
;фрагмент F-1
;track 0 data
;part 0
dw length ;1..65536, но присутствует как минимум один байт (даже если пустой трек). для этого длину трека ищем путём поиска вправо от позиции 1
RLE
;part 1
...
;part P64-1 (хотя реально можно ввести до 61)
;track 1 data
...
;track N-1 data