Последняя редакция 31.07.23

В данном документе описаны ограничения различных музыкальных редакторов ZX
Spectrum, возможности их форматов файлов и возможные потери при конвертировании
их в формат Pro Tracker 3. Более подробное описание каждого из форматов можно
найти в справочной системе Ay_Emul v2.9, вышедшей в декабре 2022 года.

Pro Tracker 3
-------------
Музыкальный редактор Pro Tracker 3 любой подверсии накладывает следующие
ограничения на свои модули (в скобках указаны возможности редактора версии
3.58 и выше):

1)  максимальное количество паттернов - 42 (~48);
2)  нумерация паттернов - от 0 до 41 (~47);
3)  минимальная длина паттерна - 5 строк (1 строка);
4)  максимальная длина паттерна - 64 строки;
5)  диапазон скоростей проигрывания - от 1 до 63 (начальная), командой установки
    скорости можно установить скорость вплоть до 255;
6)  вывод в регистры R11R12 AY возможен только одновременно с выводом в R13, за
    исключением команд скольжения, а также смещения частоты огибающих в сэмпле;
7)  каналы анализируются в порядке "A,B,C", в результате чего, при одновременном
    управлении шумом в нескольких каналах, реальное управление будет
    осуществляться последним каналом в указанном порядке; то же самое касается
    одновременного выбора типа огибающей в разных каналах;
8)  если в сэмпле включено накопление частоты огибающей, то при одновременном
    использовании таких сэмплов в разных каналах все накопления суммируются;
    таким образом можно обойти ограничение на максимальное приращение в сэмпле
    (-16..+15 единиц); к сожалению, в существующих версиях редактора и плееров
    на ZX накопление происходит в байте, что для огибающей не всегда достаточно;
9)  максимальное количество позиций - 256;
10) диапазон номеров нот - от 0 до 95;
11) диапазон номеров сэмплов - от 1 до 31;
12) диапазон номеров орнаментов - от 0 до 15, причем нулевой орнамент -
    фиксированный (пустой);
13) типы огибающей - от 1 до 14;
14) периоды огибающей - от 0 до 65535;
15) максимальная длина орнамента - 64;
16) максимальная длина сэмпла - 64;
17) команда выхода из цикла сэмпла - отсутствует;
18) команда выхода из цикла орнамента - отсутствует;
19) сэмплы и орнаменты всегда зациклены;
20) возможность задания отклонения тона в сэмпле относительно базового - есть;
21) возможность задания отклонения тона в сэмпле относительно предыдущего
    значения (накопление) - есть;
22) возможность задания отклонения шума (или периода огибающей) в сэмпле
    относительно базового - есть;
23) возможность задания отклонения шума (или периода огибающей) в сэмпле
    относительно предыдущего значения (накопление) - есть;
24) возможность задания отклонения частоты тона в орнаменте относительно
    базового - есть;
25) возможность задания отклонения частоты тона в орнаменте относительно
    предыдущего значения (накопление) - нет;
26) возможность задания отклонения частоты шума в орнаменте - нет;
27) имеется четыре фиксированные таблицы нот;
28) уровни громкости задаются специальной таблицей (не линейной, но и, к
    сожалению, не логарифмической).

Формат файла Pro Tracker 3 способен хранить больше, чем это позволяет сам
редактор (в скобках - для версий 3.58 и выше):

1)  максимальное количество паттернов - 43 (85);
2)  максимальный номер паттерна - 42 (84);
3)  минимальная длина паттерна - 1 строка;
4)  максимальная длина паттерна - ограничена только размерами памяти (64К);
5)  орнамент 0 может быть не пустым;
6)  максимальная длина орнамента - 255;
7)  максимальная длина сэмпла - 255 (в ZX-плеерах - 64);
8)  максимальное количество позиций - ограничено только размерами памяти,
    но формально 255 (если ориентироваться на избыточное одноименное поле);
9)  диапазон скоростей проигрывания - от 1 до 255;
10) диапазон номеров сэмплов - от 0 до 31 (использовать 0-й сэмпл не так просто,
    как может показаться на первый взгляд).

Vortex Tracker II
-----------------

Vortex Tracker II изначально ориентирован на формат файла Pro Tracker 3, а не
на музыкальный редактор Pro Tracker 3. Так, он использует следующие способности
формата:

1)  максимальное количество паттернов - 85;
2)  максимальный номер паттерна - 84;
3)  минимальная длина паттерна - 1 строка;
4)  максимальная длина паттерна - 256 строк;
5)  диапазон скоростей проигрывания - от 1 до 255;
6)  максимальная длина орнамента - 255.

Во всем остальном действуют ограничения редактора Pro Tracker 3. Данное
расширение возможностей редактора Pro Tracker 3 необходимо для более
качественного импорта музыкальных модулей других музыкальных редакторов ZX
Spectrum. Снимать ограничение на длину сэмпла нежелательно, так как это не
совместимо не с одним плеером на ZX (63*4=252, вычисления в байте). Длина
орнамента сделана максимально возможной для разворачивания орнаментов во время
импорта ASC, PSC, FTC и FXM.

Ответы на возможные вопросы, связанные с переносом модулей на ZX Spectrum.
--------------------------------------------------------------------------

1. Что нужно делать, чтобы модуль, написанный в Vortex Tracker II, проиграть в
   своей программе на ZX Spectrum?

 Достаточно воспользоваться плеером Vortex Tracker II v1.0 PT3 player for ZX
 Spectrum. Данный плеер поставляется как отдельно в исходниках и кодах, так и
 экспортируется из редактора Vortex Tracker II. Имеются адаптации к наиболее
 популярным ассемблерам ZX.

2. Для меня скорость проигрывателя важнее правильности звучания некоторых
   эффектов. Что нужно делать, чтобы модуль, написанный в Vortex Tracker II без
   проблем проигрывался на ZX Spectrum стандартным плеером компилированных
   модулей PT3, встроенным в редактор PT 3.x?

 - Начальная скорость проигрывания не должна быть меньше 2 (в старых плеерах -
   не меньше 3).
 - Команды установки скорости не должны устанавливать скорость меньше 2 (в
   старых плеерах - не меньше 3).
 - При использовании старых плееров (от PT 3.5x и младше) количество различных
   паттернов не должно превышать 43.
 - Проверять на слух правильность звучания команд 3xxx. Данное мероприятие
   нужно проводить для того, чтобы не было неприятных неожиданностей в самый
   неподходящий момент (например, на пати). Даже если Ваш модуль правильно
   звучит в редакторе ProTracker 3+69, это еще не значит, что его же плеер
   играет его так же.

3. Что нужно делать, чтобы модуль, написанный в Vortex Tracker II без проблем
проигрывался на ZX Spectrum в редакторе Pro Tracker 3?

 - Количество различных паттернов в таком модуле не должно превышать 42 (начиная
   с версии PT 3.58 - не более 46, PT 3.692 - не более 48, см. документацию).
 - Не должно быть паттернов длиной более 64 строк;
 - Не должно быть орнаментов длиннее 64 строк.

В редакторе на ZX начиная с версии PT 3.691, опознаются модули как с новым
заголовком VT II, так и с расширением '.pt3', теперь не нужно никаких хитрых
манипуляций, чтобы загрузить VT II модуль в спектрумовский редактор.

Программы Quick Commander Андрея Богдановича, BestView Ивана Рощина и The
Viewer от Kpacku распознают и играют модули как с расширением '.pt3', так и
'.m'.

В Vortex Tracker II встроен собственный плеер для ZX Spectrum. Этот плеер
используется функцией экспорта в формат Hobeta, .AY типа EMUL, SCL и TAP. Данные
форматы используются для переноса файлов с/на ZX Spectrum средствами различных
программ (Spectrum Navigator, плагины для Far Manager и другие).

Vortex Tracker II также способен использовать новую интерпретацию команды 3xxx,
которая теперь поддержана и в Pro Tracker 3.6x. Плеер-эмулятор Ay_Emul и
предлагаемые в VT II плееры для ZX и Atari ST умеют тонко интерпретировать
формат PT3, выбирая в зависимости от версии в заголовке как тоновые и
громкостные таблицы, так и способ проигрывания команд 1.xx, 2.xx и 3xxx.

ASC Sound Master 0.xx-2.xx
--------------------------

В редакторе ASM нижний предел скорости - 3, но это искусственное ограничение,
т.к. и плеер компилированных модулей, и сам формат позволяют использовать
скорости вплоть до 1.

Формат файла ASC имеет следующие отличительные особенности, которые не
укладываются в рамки формата PT3-файла:

1) диапазон номеров паттернов - от 0 до 255;
2) вывод в регистр R11 AY не совмещен с выводом в регистр R13 AY; при
   конвертировании в PT3 приходится к каждому выводу в R11 искусственно
   добавлять вывод в регистр R13 предыдущего значения;
3) задание отклонения частоты тона в орнаменте только относительно
   предыдущего значения (накопление); при конвертировании в PT3 формируется
   новый орнамент, формирование которого заканчивается либо при корректном
   его зацикливании, либо при выходе отклонения из диапазона -$55..$55, либо по
   достижению максимальной длины орнамента в PT3, равной 255;
4) задание отклонения частоты шума в орнаменте; к сожалению, такое поведение
   орнамента нельзя конвертировать в PT3, поэтому данная информация теряется;
5) максимальное количество орнаментов - 32; поскольку в PT3 всего 16 орнаментов,
   из которых один - пустой, при конвертировании выделяются первые 16
   встреченных орнаментов, после чего среди них осуществляется попытка поиска
   пустого орнамента; остальные орнаменты теряются;
6) максимальное количество сэмплов - 32; если в модуле используются все 32
   сэмпла, то последний используемый сэмпл теряется, поскольку количество
   сэмплов в PT3 не более 31;
7) присутствует команда выхода из цикла сэмпла; в PT3 такой возможности нет,
   поэтому данная команда заменяется командой выключения звука (R--); в
   принципе, при наличии свободного сэмпла, с его помощью можно сделать аналог
   выхода из цикла другого сэмпла, но в Vortex Tracker II это не сделано;
8) присутствует команда постепенного нарастания или затухания звука; при
   конвертировании в PT3 осуществляется попытка заменить данную команду
   расставленными в различных строках командами установки громкости (от 1 до
   15), но в общем случае это конечно же не помогает, поскольку в ASM данная
   команда реализована не с помощью громкости, а с помощью добавок к текущей
   амплитуде сэмпла; другими словами эта команда может заставить звучать сэмпл
   даже с нулевой амплитудой (в пределах текущей громкости); конечно такое
   поведение в PT3 повторить невозможно (например, смотрите модуль ENIGMA.asc
   Igoval'a);
9) своя табличка нот; в конвертере предложена к использованию табличка 1 PT3,
   как наиболее похожая на табличку ASM, табличка 2 хоть и имеет название "ASM
   or PSC", однако в ней отрезаны первые две ноты оригинальной таблички ASM, к
   тому же в последних версиях Pro Tracker 3 она мало похожа на оригинал вообще;
10)сэмпл может быть не зациклен; проблема конвертирования решается просто - если
   длина сэмпла меньше 64, в конце создается дополнительный пустой тик, на
   который и происходит зацикливание;
11)команда портаменто (скольжение от ноты к ноте) сделана с учетом доработки
   текущего отклонения (от какой-либо предыдущей команды скольжения); это
   соответствует новой интерпретации команды 3xxx в Vortex Tracker II; тем не
   менее, при импорте в VT предусмотрена возможность максимально близко
   конвертировать портаменто даже под старое поведение PT3-плееров;
12)параметр команды портаменто в ASC в отличие от PT3 определяет не скорость,
   а время, за которое скольжение должно закончиться (что более удобно для
   музыканта, так как ритмический рисунок часто диктует одинаковое время
   портаменто для разных нот, к сожалению, авторы PT3 об этом не подумали);
13)по этой же причине, команда портаменто с первой нотой паттерна в ASC работает
   правильно всегда: вне зависимости от того, какой паттерн по списку позиций
   стоит ранее, портаменто укладывается в заданное время; в PT3 это невозможно,
   правильно сконвертируется только первая комбинация таких паттернов.

Версии 0.x отличаются лишь отсутствием понятия "Позиция цикла" (подразумевается
зацикливание только на начало). Однако есть три модуля еще более старой нулевой
версии (AT.ay, CHIP'DAL.ay, TENNIS.ay), в которых еще и более простая структура
паттернов (сэмплы, орнаменты и позиции такие же), за счёт чего они были без
потерь сконвертированы в ASC (ищите их в версии 5.7 архива Tr_Songs, а
оригиналы с плеером - в одной из предыдущих).

Примечание: при применении портаменто с первой нотой паттернов и при различном
чередовании таких паттернов ноты, от которых начинается скольжение, могут быть
разными, следовательно, для того, чтобы портаменто закончился в нужный с точки
зрения ритма момент, нужны различные скорости, что в PT3 невозможно; вероятно
вы уже сталкивались с этим при импортировании ASC-модулей.

Все перечисленные проблемы несовместимости в конвертере VT II более менее
разрешены.

Остается добавить, что в целом формат ASC дает музыканту больше возможностей,
чем PT3 (за небольшим исключением).

Pro Sound Creator 1.00-1.07
---------------------------

Прежде всего, хочется отметить не оптимальность формата PSC, что зачастую
приводит к большим размерам модулей данного формата (хотя возможно это мне
просто попадались модули, в которых не отсеяны неиспользуемые сэмплы,
орнаменты или паттерны, такой режим сохранения есть в том же PT2). В целом
формат является развитием формата ASC. Pro Sound Creator - достойная
альтернатива Pro Tracker 3, не говоря уж о самом ASC Sound Master.

В целом проблемы конвертирования из PSC в PT3 те же, что и из ASC в PT3, за
исключением следующего:

1) вывод в регистры R11R12 AY возможен только одновременно с выводом в R13 (как
   и в PT3), однако включение/выключение огибающей в канале производится
   независимо, поэтому при конвертировании в PT3 при каждом включении огибающей
   приходится дублировать связку R11R12R13, причем в каждый канал, где огибающие
   включаются (избыточную информацию приходится удалять вручную);
2) в PSC при каждом выводе в R11R12 накопление отклонений частоты огибающей
   в сэмпле фактически начинается заново, в то время как в PT3 для этого есть
   только один способ - установка ноты; поскольку в PT3 установка ноты
   производит и ряд других инициализаций, использовать её нельзя; в качестве
   примера модуля, который не конвертируется правильно именно по этой причине,
   можно привести Pandemonium.psc Skull Chaser'а;
3) присутствует команда выхода из цикла орнамента; это реализовать в PT3
   невозможно, поэтому команда просто игнорируется;
4) крайне сложно реализовать команду установки базы для шума, поскольку она
   для каждого канала разная, а в PT3 - одна для всех; кроме того колонка
   для шума в PSC содержит относительные смещения (в PT3 - абсолютные), а
   накопление происходит в каждом канале отдельно в итоге даже пишущий в PSC
   музыкант не сразу сможет сообразить, что в итоге будет слышно (все сильно
   зависит от конкретной комбинации сэмплов) - только подбором; в Vortex Tracker
   II сделан простейший анализ сэмплов, в большинстве случаев ошибок нет и
   конвертированный PT3 звучит сносно;
5) команды затухания или нарастания громкости реализовать проще, поскольку
   в PSC, в отличие от ASC, регулируется не амплитуда сэмпла, а громкость
   канала;
6) максимальное количество паттернов может быть любым, но судя по избыточной
   информации в формате, их все-таки не больше 256;
7) количество позиций - не ограничено;
8) орнамент может быть не зациклен; при конвертировании приходится делать
   зацикливание на последний тик конечного орнамента;
9) портаменто, как и в PT3, задается скоростью (в единицах на прерывание),
   поэтому эта команда импортируется один к одному;
10)величина разницы частот для портаменто определяется упрощенно - по регистру
   тона и новой (или текущей) ноте. Это неправильно, потому что значение в
   регистре тона может быть смещено сэмплом и орнаментом, но при выбранном
   способе оптимизации (только один канал за прерывание) в PSC реализовать
   портаменто таким же, как и в ASC, нельзя.

Во всем остальном возникают те же проблемы, что и с ASC Sound Master.

Sound Tracker
-------------

Это первый музыкальный редактор типа 'Tracker' на ZX Spectrum. При
конвертировании в PT3 возникают следующие сложности:

1) каждая позиция проигрывания в ST содержит не только номер паттерна, но и
   транспозицию; поскольку паттерны в PT3 не транспонируются, приходится
   создавать новый паттерн с другими (транспонированными) нотами;
2) сэмплы в ST всегда имеют 32 позиции, причем они могут быть не зациклены; тем
   не менее первые 32 тика сэмпла отыгрываются всегда; для не зацикленных
   сэмплов при конвертировании добавляется холостой 33 тик;
3) после зацикливания сэмпла в ST происходит переход к позиции цикла, причем
   второй раз перед следующим переходом на цикл сэмпл может и не доиграть до
   последней (32 позиции); в последнем случае к существующим 32 тикам исходного
   сэмпла конвертер добавляет дополнительные N тиков из тела цикла;
4) орнаменты имеют длину также 32 тика, но не имеют собственной точки цикла;
   в ST орнаменты зацикливаются синхронно с используемым сэмплом; при
   конвертировании приходится строить таблицы соответствия орнаментов сэмплам
   (для корректного определения тела цикла); тем не менее иногда это может
   и не дать правильного результата (поскольку один и тот же орнамент может
   быть использован с разными сэмплами).

В остальном ST без особых проблем укладывается в рамки PT3. Вы можете найти
музыку ST в разных форматах - ST1, STC и ST3, это по сути одно и то же (просто
первое - некомпилировано, т.е. сохранена соответствующая область памяти прямо
из редактора, второе - компилировано, а третье - перекомпилировано утилитой от
KSA).

Flash Tracker
-------------

Этот редактор ничем не отличается от Sound Tracker. Практически это тот же
Sound Tracker, но без транспозиции паттернов, что только облегчает процесс
конвертирования в PT3. Информация о трекере поступила ко мне от Евгения
Барского в виде архива мелодий и исходника плеера, самого редактора мне так
найти и не удалось. Возможно, никакого трекера и нет, а есть простая
перекомпиляция модулей ST :) Обратная перекомпиляция без потерь возможна и даже
реализована на ZX (мне известен как минимум один такой перекомпилятор).

Sound Tracker Pro
-----------------

Автор этого редактора (KSA) долго занимался улучшением ST, что не могло не
вылиться в совершенно новый проект - Sound Tracker Pro. Так же как и в ST,
паттерны могут быть транспонированы, проблема конвертирования решается также -
генерацией нового паттерна с транспонированными нотами. Имеются команды глисса
тона (скольжения) вверх и вниз (портаменто отсутствует). Имеется специальная
команда остановки глисса, в PT3 она заменяется командой "1...". Глиссандо можно
отключить только этой специальной командой или установкой орнамента. В некоторых
компиляторах STP есть ошибка, при которой удаляя вроде бы лишний (повторяющийся)
орнамент, забывают про включенную до этого команду скольжения, и она начинает
дублироваться на последующие ноты. Яркий пример: модуль "IMP49:FOOLISH GIRL",
лишь в 2002 году я задался целью и нашел версию STP, где он откомпилировался
лучше. Вообще, во всех версиях редактора встроенный компилятор содержит те или
иные ошибки. Мне это стало понятно, к сожалению, лишь в 2022 году, когда я
делал поддержку некомпилированных модулей STF в Ay_Emul. Если у вас есть
некомпилированные модули этого редактора, рекомендую компилировать их прямо
в Ay_Emul, я исправил все известные ошибки родных компиляторов и добился более
оптимального (с точки зрения размера) результата. В связи с этим, я разыскиваю
исходник модуля Visual'а Sumea_FN.stp, либо уже правильно откомпилированный
модуль (мой адрес в конце этого текста).
Сэмплы в STP могут быть не зациклены. Больше никаких других проблем при
конвертировании в PT3 нет.

Pro Tracker 1
-------------

Очередная попытка улучшить возможности Sound Tracker. Так же как в STP,
дополнительно к возможностям ST добавлены команды установки громкости. Но это
пожалуй единственное улучшение. Однако именно в PT1 впервые (видимо после
ASC) применена команда установки скорости проигрывания. Те, кому пришлось
выбирать между PT1 и STP, практически выбирали между возможностью менять
скорость проигрывания и возможностью использовать скольжение тона. Во время
конвертирования в PT3 возникает только одна проблема - орнаменты привязаны к
сэмплам также как и в STC (приходится строить таблицу соответствия).

Pro Tracker 2
-------------

Первый из семейства PT, действительно достойный внимания редактор. Он
практически полностью совместим с PT3, потерь конвертирования нет. По сравнению
с PT3, отсутствует возможность задания маски огибающих и смещения частоты
огибающих в сэмпле, нет возможности накопления тона, шума и амплитуды в сэмпле.
Присутствует команда отключения скольжения (её можно заменить на "1..." в PT3).

Global Tracker 1.x
------------------

Самый молодой из описанных в этом документе редакторов. Правда особыми
возможностями он не обладает, поскольку автор (Максим Красса) ставил перед
собой другие задачи. По возможностям его можно сравнить с Pro Tracker 1. При
конвертировании в PT3 проблем не возникает. Формат (а скорее плеер) содержит
ряд ошибок, которые ограничили его использованиие. В версии 1.1 блокирующая
ошибка была исправлена, тем не менее редактор был проигнорирован музыкантами.

Fast Tracker
------------

Как итог всему отечественному тракермейкерству :) можно представить Fast
Tracker. Это наиболее навороченный из всех выше перечисленных трекеров, хоть
и появился он в 1997 году. Прежде всего, его навороченность заключается в том,
что в FTC практически без потерь можно конвертировать все вышеперечисленное
(включая сам PT3). Однако Fast Tracker не получил в свое время широкого
распространения из-за его "не бесплатности" и не смог составить какую-либо
конкуренцию PT3.

Особого смысла описывать возможности FTC нет, поскольку он фактически
объединяет все возможности ASC, PSC, STP и PT3 вместе взятых (за исключением
некоторых специфических и редко используемых спец. команд). Стоит только
отметить, что в нём поддержаны 32 сэмпла и 33 орнамента (включая пустой).
Естественно, при конвертировании остаются только первые 31 и 16 соответственно,
при этом длина сэмпла, как и размер конвертированного орнамента, может
оказаться больше допустимого в PT3, "лишнее" при конвертировании приходится
обрезать.

В 2018 году была представлена улучшенная версия этого редактора v1.07, в
которой нотная табличка стала такой же, как в Sound Tracker (до этого
использовалась одноимённая табличка №1 из PT3), а также добавлена вторая для
частоты 1750000 Гц.

Вышедшая следом v1.08 имеет интересную спец. команду Retrig, используется для
того, чтобы разница фаз в эффектах tone+envelope была близка к нулю (без этой
команды она по сути случайна). Достигается это установкой периода тона в 0
перед установкой типа огибающих. Кроме того, это единственный способ в FTC
записать в регистр типа огибающей то же значение, что там было записано ранее
(перед выводом на звуковой чип в R13 делается соответствующая проверка). В PT3
аналога команде Retrig нет, впрочем, это частично компенсируется тем, что вывод
в R13 в PT3 производится всегда, когда тип огибающей явно указан в треке. При
импорте FTC в Vortex Tracker II для каждой встреченной команды Retrig в
соответствующий трек дублируется предыдущая связка R11R12R13, это конечно не
то, но за неимением лучшего, хотя бы так.

Еще одна особенность, которую не получается конвертировать в PT3: если
установить тип огибающей с сэмплом, в котором огибающие запрещены маской, то
период огибающей, в отличие от PT3, так и не будет записан в регистры R11R12,
из-за этой особенности неверно конвертируется Riskej\FLAPONNE.ftc из комплекта
FTC 1.08 beta 1.

SQ-Tracker
----------

И, наконец, зарубежный производитель ;) SQ-Tracker - это принципиально новый
подход к трекерству вообще. Под паттерном в этом трекере понимается не
совокупность нескольких треков каналов, как во всех остальных трекерах, а всего
лишь один канал! То есть три паттерна по идее этого трекера звучат одновременно.
В остальном возможности этого трекера на уровне PT2 (правда отсутствует команда
портаменто, но её можно заменить и простыми глиссами).

Довольно хитрый список позиций проигрывания у SQT. Каждая позиция содержит не
только три номера паттернов, но и три транспозиции, три громкости, три флага,
которыми можно запретить спецэффекты в каждом канале, и начальную скорость
(начальной скорости всего модуля поэтому просто не существует). Таким образом,
имея всего один паттерн-канал (лучше, конечно три разных), можно составить
столько разных паттернов в привычном Pro Tracker'ном понимании, что не хватит и
всех 43 имеющихся паттернов в PT3. В основном поэтому в VT II решено разрешить
использование до 85 паттернов.

Таким образом, при конвертировании в PT3, строится огромная таблица соответствия
получаемых номеров паттернов и множества указанных выше параметров. Если
паттерны отличаются хотя бы одним из параметров - это уже два разных паттерна,
ничего не поделаешь.

Теперь орнаменты. Тоже целая эпопея ;) Во-первых, длина орнамента и его
зацикливание аналогично ST. То есть его длина не менее 32 в любом случае. Если
орнамент не зациклен, то параметры цикла берутся из соответствующего сэмпла. В
отличии от ST, орнамент может быть зациклен и независимо от сэмпла. Зацикленная
часть орнамента при конвертировании копируется дополнительно в конец конечного
орнамента (тот же прием, что и при конвертировании из ST).

Ну а сэмплы конвертируются аналогично ST.

Pro Sound Maker
---------------

Это еще один трекер, выделяющийся своей необычностью. Его автор, Денис Дратов,
представил его на суд общественности в виде демоверсии еще в середине 90-х.
Основной упор был сделан на удобство, задачи выжать максимум из AY автор перед
собой не ставил.

Итак. Список позиций, как и ST, содержит номер паттерна и транспозицию. Для
транспонированных паттернов во время конвертирования в PT3 приходится создавать
новый паттерн с уже транспонированными нотами. Кроме того, каждый паттерн
проигрывается со своей скоростью (то есть начального Tempo для модуля в целом не
существует). Проигрывание может быть как зациклено на любую позицию, так и
прекращено по достижению конца списка позиций (этой полезной возможности
действительно не хватает во всех остальных трекерах ZX).

Паттерны конвертируются без особых проблем, так как отсутствуют какие-либо
спецкоманды, а ноты, сэмплы, орнаменты, огибающие и громкости устанавливаются
так же, как и в PT3.

Сэмплов всего 14, но их крайняя необычность может теоретически привести к тому,
что 31 сэмпла PT3 может и не хватить для конвертирования. Сэмплы, которые
музыкант не использовал в модуле с огибающими, конвертируются вполне однозначно,
а при использовании огибающей, для каждого из 15 уровней громкости паттерна
сэмпл с огибающей будет звучать по-разному. Дело в том, что в сэмпле PSM нет
привычной для PT3 маски огибающей, а её отсутствие вполне компенсируется
достаточно хитрым свойством амплитуды в тике сэмпла - когда разрешены огибающие,
амплитуда становится 5-битной (32 уровня), на которую так же влияет громкость
в паттерне. Таким образом, амплитуды от 0 до 15 будут звучать без огибающей,
а амплитуды от 16 до 31 - с огибающей. Длина сэмпла ограничена 32 тиками.
Тем не менее, уложиться в 64 тика сэмпла PT3 также не всегда удается, поскольку
сэмплы PSM кроме того, что могут быть просто не зациклены (в этом случае при
конвертировании добавляется холостой 33-й тик), также могут быть зациклены с
затуханием или нарастанием громкости. Кроме точки цикла в сэмпле еще существует
параметр - количество повторов перед очередным изменением громкости. Причем,
если громкость изменяется на 1, то в PT3 это конвертируется не так громоздко
(изменение громкости на единицу в сэмпл PT3 заложено), но в PSM изменение
громкости может быть любым из диапазона от -15 до +15. Все это вкупе дает
возможность небольшими силами организовать в PSM очень долгое затухание или
нарастание громкости, а в конвертере в PT3 приходиться делать очень сложный
алгоритм конвертирования, который может досрочно завершить работу по достижению
потолка в 64 тика сэмпла PT3.

С орнаментами с одной стороны проще, так как они ничем не отличаются от
орнаментов PT3, но с другой стороны их максимальное количество в PSM - 32.
При конвертировании применен тот же прием, что и в ASM - остаются первые 15 в
порядке их использования. Нулевой орнамент PT3 использован как аналог команды
отключения орнамента в PSM.

В PSM использована табличка нот для частоты 1,7734 МГц, первая нота которой -
C-1. Единственная табличка под эту частоту в современном PT3 - #1. Из-за того,
что она сделана с ошибкой, приходится смещать ноты PSM на один тон выше, из-за
чего ноты A#8 и B-8, также как и в случае с SQT, теряются (превращаются в B-8 по
табличке #1).

Не смотря на то, что огибающие в паттернах конвертируются без проблем, нельзя
не сказать об интересном решении в PSM. Дело в том, что в PSM можно задать
период огибающей тремя способами. Первый - традиционно указать только младший
байт периода (в диапазоне 0-F0), второй - указать только старший байт (в
диапазоне 0-F), и третий - указать параметр привязки периода к ноте, в этом
случае будет взято соответствующее значение в табличке нот. Это очень удобно для
музыканта, хотя и не позволяет выжать из огибающих AY максимум возможностей.

Таблички нот PT3
----------------

Табличка #0. Официальное название "ProTracker". Нигде, кроме PT3 не
используется. Она не менялась вплоть до версии PT3.4r. Начиная с других версий
PT3.4x и по сей день немного модифицирована. Не подходит ни под какую из
стандартных частот AY.

Табличка #1. Официальное название "SoundTracker". Эта табличка плавно перетекла
из Pro Tracker 2, а до этого - из Pro Tracker 1. Является модификацией таблички
от Sound Tracker. Единственная табличка, которая одинакова во всех версиях
PT3.xx. Подходит для STC, STP, FTC, GTR, PT2, PT1, FLS, с небольшой натяжкой и
под SQT и PSM (со второй ноты), ASM и PSC. Табличка достаточно близка к частоте
1773400 Гц, но смещена относительно нее на 1 тон вниз (то есть C-2 звучит как
A#1). Нота B-2 (должна звучать как A-2) в этой табличке сильно фальшивит.
Несмотря на указанные недостатки, эта табличка по какой-то причине была
использована в Fast Tracker (вплоть до 2018 года, когда в версии 1.07 была
заменена на более правильную из старого доброго ST).

Табличка #2. Официальное название "ASMorPSC". Когда она появилась впервые в
версии PT3.4r, она являлась простой модификацией таблички ASM (PSC), без первых
двух нот и в точности совпадала с рядом для частоты 1773400 Гц. Начиная с прочих
версий PT3.4x и по сей день она кардинально изменилась, вследствие чего для
конвертирования ASM и PSC подходит не больше, чем табличка #1. Первая версия
хорошо подходила под SQT. Современная табличка #2 идеально подходит под частоту
AY 1750000 Гц. Остальные таблички рассчитаны неизвестно под что :(

Табличка #3. Официальное название "RealSound". Также как предыдущая, впервые
появилась в версии PT3.4r и изменилась начиная с прочих версий PT3.4x. Табличка
является модификацией таблички #0 и смещена относительно нее на полтона вниз.
Соответственно, также не подходит не под одну стандартную частоту AY.

Таким образом, в PT3 интерес представляют только две таблички - 1 (для
конвертирования и для частоты 1,7734 МГц) и 2 (для частоты 1,75 МГц).

Для того, чтобы проверить вышесказанное, загрузите в Excel прилагаемый файл
ToneTables.csv.

Таблички громкости PT3
----------------------

Существует всего две - та, что существовала до версий 3.5x, и современная. Обе
таблички бессмысленны, поскольку вариантов подключения выходов AY и YM
к усилителю множество, в добавок к этому, AY и YM в принципе имеют разные
выходные характеристики, кроме того, даже однотипные чипы в общем случае имеют
разные выходные характеристики, поэтому скрупулезно подбирать табличку, которая
будет занимать весомый кусок памяти (целых 256 байт) и при этом идеально
звучать только на той системе, на которой она подбиралась, в равной степени и
расточительно, и бесполезно. Авторы всего четырёх трекеров (PSM, STP, SQT и
GTR) догадались, что ЦАП микросхем близок к логарифмическому и достаточно
простого вычитания величины (15-громкость) из амплитуды. Все остальные пытаются
использовать или таблички (вычисленные или подобранные на слух), или формулы
(простые пропорции типа Amp=SampleAmp*(Vol+1)/16). Не исключение и табличка,
использованная в ProTracker 3.5 и выше: она считается по формуле
Amp(i,j)=(i*j+7) div 15 или Amp(i,j)=round(i*17+byte(i>7))*j/256). Эта же
табличка, кстати, использована и в Fast Tracker всех версий.

Автор данного текста.
---------------------

Все замечания направлять Сергею Бульбе по адресу svbulba@gmail.com. Ваши
замечания могут помочь сделать импорт модулей в Vortex Tracker II более
качественным.

Благодарности.
--------------

Спасибо Дмитрию Быстрову (a.k.a. Alone Coder) за уточнения по редактору, плееру
и формату Pro Tracker 3. Успехов в написании новых версий Pro Tracker 3!

(c)2000-2023 С.В.Бульба
