Это компилированные модули Fast Tracker, проект Сергея Матвеева (Orion), доработанный с версии 1.07 Александром Плужниковым (Sand).
В формат были заложены возможности, позволяющие при гипотетическом импорте проглотить практически без потерь модули таких различных семейств трекеров, как ASC–PSC и ST–PT3. Несмотря на это, удалось найти всего несколько десятков оригинальных модулей (т.е. не являющихся конверсиями с других форматов).
Поскольку идеи не оригинальны, формат какие-то моменты улучшил, какие-то ухудшил, а какие-то повторил без изменений (вплоть до того, что унаследовал и известные проблемы).
FTC не повторил ошибки PSC, и регулирует в сэмпле, как и положено, амплитуду, а не громкость канала.
Однако вариант портаменто реализован не такой, как в ASC (это идеал, который ни один трекер больше не повторил), а такой, как в PT3 (параметр команды не количество тиков, а шаг изменения тона). Правда сделано это уже без ошибок, допущенных в PT3.
А вот проблемные таблички тона и громкости просто скопированы из проекта PT 1.xx–3.xx без изменений, а это фальшивые ноты и нерациональный способ управления громкостью канала.
FTC (в отличие от ASC) не позволяет указать период огибающей без типа. Однако (в отличие от PT3), один и тот же тип огибающей не пишется в R13 (то есть переинициализировать огибающую не получится). То есть PT3 и FTC допустили почти (т.е. зеркально) одну и ту же ошибку.
FTC отказался от части не особо часто используемых возможностей и спец. команд как ASC, так и PT2 (не говоря уж о PT3), но он тем не менее остался наиболее навороченным из всех известных трекеров. Поэтому причину низкой популярности, возможно, нужно искать в чём-то другом.
Начиная с версии 1.07 проект избавился от неудачной таблички нот. Вместо неё у музыканта (как и в PT3) появился выбор из двух вариантов. Но в отличие от PT3, это выбор из двух корректных вариантов: оригинальная табличка из Sound Traker для частоты 1773400 Гц (фирменный ZX Spectrum) и собственная для 1750000 Гц (отечественные клоны).
А в версии 1.08 редактор был избавлен от ещё одного недостатка: отсутствие переинициализации огибающей одного типа. И не просто избавлен – появился выбор между прежним поведением и новым через совершенно новый эффект, ни в одном другом трекере не присутствующий. Запускается эффект спец. командой "Full env+tone retrig".
Задача, которую решает новый эффект при одновременном выводе тона и огибающих, – сделать так, чтобы период огибающей и период тона всегда начинались в одном и том же месте: почти одновременно (c фиксированной задержкой). У тона нет переинициализации, поэтому, когда в тоновые регистры пишется новое значение периода, сперва "дотикивает" предыдущий (сколько осталось до нового значения, случайное число), и только после этого начинает тикать с нуля новый. Но если записать 0 в тоновые регистры, "дотикивание" заканчивается уже на следующем такте AY. После этого можно писать нужное значение тона, отсчёт сразу пойдёт с нуля, то есть с начала.
То есть если записать тип огибающей в R13, потом 0 в тон, подождать хотя бы 1 такт AY, и записать уже нужный тон, то и получится ретриг. При ретриге тон+огибающая всегда будет звучать одинаково. А без ретрига (как в других редакторах) расставленная по разным строкам паттерна одна и та же нота с тем же периодом огибающей будет звучать то погромче, то потише, то вообще еле слышно.
В формате много "лишних" данных с точки зрения плеера. Поскольку с других точек зрения я формат FTC не изучал, о части таких данных сделаны лишь предположения.
Смещение | Размер | Обозначение | Описание |
---|---|---|---|
+0 | 8 | Pretitle | Строка "Module: ". |
+8 | 42 | Title | Название песни. |
+50 | 1 | ToneTable | Для версий до 1.07 символ ";" (таблица ST от PT 1.xx–3.xx), иначе номер таблицы нот (1 – оригинальная ST для 1,7734 МГц; 2 – собственная FT для 1,75 МГц). |
+51 | 18 | Version | Строка "Fast Tracker v1.00", версия может быть от 1.00 до 1.08. |
+69 | 1 | Delay | Скорость проигрывания. |
+70 | 1 | LoopPos | Номер позиции для зацикливания. |
+71 | 4 | Unknown | Неизвестно (в плеере не используется). |
+75 | 2 | PatsPtr | Указатель на паттерны. |
+77 | 2 | SamTtlsPtr | Указатель на названия сэмплов (в плеере не используется). |
+79 | 2 | OrnTtlsPtr | Указатель на названия орнаментов (в плеере не используется). |
+81 | 1 | Unknown | Неизвестно (в плеере не используется). |
+82 | 64 | SamPtrs | Указатели на 32 сэмпла (описан ниже). |
+146 | 66 | OrnPtrs | Указатели на 33 орнамента (описан ниже). |
+212 | ? | PosList | Список позиций (описан ниже). |
+SamTtlsPtr | ? | SamTtls | Сжатые имена сэмплов (в плеере не используются). |
+OrnTtlsPtr | ? | OrnTtls | Сжатые имена орнаментов (в плеере не используются). |
+PatsPtr | ? | ChanPatPtrs | На каждый паттерн по три указателя на описатели каналов A, B, C; 0xFFFF – конец списка. |
? | ChanPats | Описатели каналов паттернов (описаны ниже). | |
? | Samples | Список сэмплов (с разделительным байтом 0, который в плеере не используется). | |
? | Ornaments | Список орнаментов (с разделительным байтом 0 и некоторыми другими элементами, которые в плеере не используются). |
Как и в других трекерах, является последовательностью байтов с 0xFF на конце (который может и отсутствовать).
Байты | Описание |
---|---|
0x00..0x1F | Установить сэмпл (0..31). |
0x20..0x2F | Установить громкость (0..15). |
0x30 | Выключить звук. Выйти. Пропустить 0 строк. |
Включить огибающие (тип 1..14). Установить период огибающих в EnvP. Плеер записывает указанный тип огибающей в R13 только в том случае, если он отличается от предыдущего значения. | |
0x3F | Отключить огибающие. |
0x40..0x5F | Выйти. Пропустить 0..31 строк. |
0x60..0xCB | Установить ноту (0..107, в реальности плеер обрезает верхнюю границу результата после всех добавок смещений до 95). Выйти. Пропустить 0 строк. |
0xCC..0xEC | Установить орнамент (0..32). |
Запустить слайд с шагом TSlStp на прерывание (двухбайтовое число со знаком). | |
0xEE, TSlStp | Запустить портаменто от предыдущей ноты с шагом TSlStp (однобайтовое число без знака). |
0xEF, Val | До версии 1.08 диапазон параметра Val – 0..255: установить период шума (биты 7–5 игнорируются). Начиная с версии 1.08, для Val=0..31: установить период шума; для Val=254 запустить эффект "Full env+tone retrig", остальные значения Val отсеиваются компилятором. |
0xF0..0xFE, Delay | Установить скорость проигрывания. |
Байты | Описание |
---|---|
+0 | Номер тика для зацикливания. |
+1 | Длина сэмпла в тиках, уменьшенная на 1. |
+2 | Список тиков по 5 байт. Каждый тик: +0 Бит 7: 1, если прибавка к периоду шума накапливается. Бит 6: маска шума. Биты 5–0 – прибавка к периоду шума. +1 Младший байт прибавки к периоду тона. +2 Бит 7: 1, если прибавка к периоду тона накапливается. Бит 6: маска тона. Биты 5–0 – старшие биты прибавки к периоду тона (тоновый регистр 12-битный, поэтому получается 12-битное число со знаком, остальные биты не важны). +3 Бит 7: 1, если прибавка к периоду огибающих накапливается. Бит 6: 1, если огибающие разрешены. Бит 5: 1, если включено изменение амплитуды сэмпла на 1. Бит 4: 1, если это уменьшение амплитуды сэмпла, 0 – увеличение. Биты 3–0 – амплитуда. +4 Прибавка к периоду огибающих (число со знаком). |
Байты | Описание |
---|---|
+0 | Номер тика для зацикливания. |
+1 | Длина орнамента в тиках, уменьшенная на 1. |
+2 | Список тиков по 2 байта. Каждый тик: +0 Бит 7: 1, если прибавка к периоду шума накапливается. Бит 6: 1, если прибавка к ноте накапливается. Биты 5–0 – прибавка к периоду шума. +1 Прибавка к номеру ноты в полутонах. |
По два байта на позицию: номер паттерна и транспозиция (число со знаком). Список позиций оканчивается на 0xFF.