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