mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-11-07 09:29:54 +03:00
69 lines
3.0 KiB
Plaintext
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 не грузит до конца модули, имеющие пустые
|
|
сэмплы, прилагаю исходник этого плейера, в котором имеются нуж-
|
|
ные исправления (скорость в том числе).
|