GTR

Введение

Это компилированные модули Global Tracker, автора проекта – Максим Красса (Doctor Max). Основная идея проекта максимум удобства и производительности при минимуме функций. В результате формат получился близким по возможностям к PT1.

Широкого распространения не получил, так как версия 1.0 содержала существенные ошибки. В последствии они были исправлены в версии 1.1.

Основная масса модулей GTR, которые попадали мне в руки, оказались конверсиями других форматов. Оригинальных модулей в моей коллекции всего два и написаны они в GTR v1.0 (один за авторством Nik-O, другой – Trefi).

Формат модуля

Формат GTR можно назвать традиционным.

СмещениеРазмерОбозначениеОписание
+01DelayСкорость проигрывания.
+13IDИдентификатор "GTR".
+41VersionВерсия в BCD (0x10 – 1.0, 0x11 – 1.1).
+52AddressАдрес компиляции.
+732NameНазвание песни.
+3930SamPtrsУказатели на 15 сэмплов.
+6932OrnPtrsУказатели на 16 орнаментов.
+101192PatPtrsПо три указателя на каналы A, B, C для 32-х паттернов.
+2931NumOfPossДлина списка позиций.
+2941LoopPosНомер позиции для зацикливания.
+295NumOfPossPositionsСписок позиций в порядке проигрывания (номера паттернов, умноженные на 6, друг за другом).
+PatPtrs[]?PatChnsОписатели каналов паттернов (описаны ниже).
+SamPtrs[]?SamplesСэмплы (описаны ниже).
+OrnPtrs[]?OrnamentsОрнаменты (описаны ниже).

Описатель канала паттерна

Представляет собой строку байтов, оканчивающуюся 0xFF.

БайтОписание
0x00..0x5FУстановить ноту. Выйти.
0x60..$6FУстановить сэмпл (0..14).
0x70..$7FУстановить орнамент (0..15). Для версий после 1.0: выключить огибающие.
0x80..$BFПропустить указанное количество строк (0..63). Действует однократно.
0xC0..$CF, EnvУстановить тип огибающей (0..15). Установить младший байт периода огибающих в Env. Включить огибающие.
0xD0..$DFВыйти.
0xE0Выключить звук. Для версий после 1.0: выйти.
0xE1..$EFУстановить громкость (1..15).

Сэмпл

Представляет собой два байта заголовка и список тиков.

СмещениеОписание
+0Тик для зацикливания.
+1Количество тиков.
+2Тики сэмпла друг за другом, по 4 байта на тик. Структура тика:
+0 Амплитуда.
+1 Бит 7: 1, если огибающие разрешены. Бит 6: маска шума. Бит 5: маска тона. Биты 4-0: шум (смешивается с другими каналами логической операцией "ИЛИ").
+2 Двухбайтовое отклонение тона (число со знаком).

Орнамент

Также представляет собой два байта заголовка и список тиков.

СмещениеОписание
+0Тик для зацикливания.
+1Количество тиков.
+2Тики орнамента друг за другом (отклонения тона в полутонах), по 1 байту на тик (число со знаком).

Громкость канала

Global Tracker относится к одному из четырёх трекеров на ZX Spectrum (PSM, STP, SQT и GTR), в которых наиболее рационально сделано регулирование громкости канала: с учётом того, что выходная характеристика ЦАП и AY, и YM близка к логарифмической, из амплитуды сэмпла просто вычитается величина (15-громкость).