Login

Subversion Repositories NedoOS

Rev

Rev 734 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

треки пакуем 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