Files
2023-06-15 02:20:40 +10:00

69 lines
3.0 KiB
Plaintext

Формат модуля Chip Tracker 1.x
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Расширение .CHI
Модуль состоит из четырёх частей - заголовок, ордер (список по-
зиций), паттерны, сэмплы. Каждая часть выравнена по границе сек-
торов.
Заголовок имеет размер 1 сектор:
+0 (8) "CHIPv1.0"
+8 (32) имя трека (русских букв в шрифте нет)
+40 (1) tempo
Внимание! ДОЛЖНО СЧИТАТЬСЯ, что tempo измеряется в 50-х долях
секунды, хотя версии редактора до 1.3 включительно и плейер
0.01 версии играют сонг из-за допущенной ошибки несколько мед-
леннее!
+41 (1) длина сонга-1 (последняя используемая позиция) 0..255
+42 (1) позиция зацикливания (0..255)
+43 (16*4) параметры сэмплов (в порядке 0..F):
++0 (2) позиция зацикливания (равна длине для незацикленных)
++1 (2) длина. Сначала младшие байты, потом старшие.
Для неиспользованных сэмплов здесь нули.
+107 (31) зарезервировано (нулевые байты).
+138 (16*8) имена сэмплов (в том же порядке). По 8 байт на имя.
Для неиспользованных сэмплов здесь пробелы.
Список позиций имеет размер 1 сектор и содержит номера паттернов
в порядке проигрывания. Номера паттернов хранятся как 0..30,
т.е. на единицу меньше, чем показывается в редакторе. Неисполь-
зованные позиции содержат 0.
Паттерны хранятся до последнего использованного в списке пози-
ций. Каждый паттерн занимает 512 байт, которые рассматриваются
как два запареллеленных блока по 256 байт. В паттерне 64 строч-
ки, каждая из которых занимает 4 последовательных байта в первом
256-байтовом куске паттерна и ещё 4 последовательных байта во
втором. Каналы A,B,C,D хранятся именно в таком порядке. Причём
каналы A,D должны играться как правые, а B,C - как левые.
Для каждой ноты каждого канала:
в первом куске: во втором куске:
%nnnnnnCC %ssssPPPP
nnnnnn - нота (0=пусто, 1=C-1, ... 60=B-5, 63=пауза);
ssss - её сэмпл (обязательно указан!);
CC - код команды, а PPPP - её параметр:
00=sample offset. Сэмпл играется с PPPP*512-го байта, но в
поле ноты должна стоять нота;
01=slide down(-) на PPPP микросапогов каждую 1/50 секунды;
10=slide up(+) на PPPP микросапогов каждую 1/50 секунды;
Микросапог - условная единица частоты (не периода!);
Слайды действуют только в пределах текущей строчки.
11=в канале A - темп PPPP (1..15);
в канале D - конец паттерна (текущая строчка - последняя);
в каналах B,C - запрещено.
Сэмплы хранятся в 8-битном беззнаковом виде, причём каждый сэмпл
выравнивается по границе сектора (256 байт). В неиспользованной
таким образом части последнего сектора находится то же, что и в
начале цикла этого сэмпла. Если он не зациклен, то там значения
128. Сохраняются все сэмплы, кроме пустых. Максимум #BB=187 сек-
торов сэмплов.
Ещё раз внимание! поскольку из-за второй ошибки в программе Chip
Tracker Compiler v0.01 не грузит до конца модули, имеющие пустые
сэмплы, прилагаю исходник этого плейера, в котором имеются нуж-
ные исправления (скорость в том числе).