                Формат модуля Pro Tracker v3.7x

   Расширение .m или .pt3.
   Указаны  смещения  до  областей  в модуле и их длина в байтах
(десятичные числа).

+0 (13) "ProTracker 3." - идентификационная строка. В модулях от
 Vortex Tracker отсутствует!
+13 (17) "7" (или "6","5","4", или даже "3" ) - номер подверсии.
   Следует заметить, что для модулей PTv3.4x и ниже используется
другая, "несимметричная" таблица  громкости, а в модулях PTv3.3x
используется  альтернативная частотная таблица "Pro Tracker", не
совпадающая с одноимённой современной!
+14 (16) " compilation of " (необязательное - любой текст этой
 длины).
+30 (32) название  модуля (ASCII, lat, неиспользованные  символы
 забиты пробелами).
+62 (4) " by " (не проверяется)
 (" By " при линейной таблице громкости)
+66 (32) имя автора (ASCII, lat, неиспользованные символы забиты
 пробелами).
 (то есть первые 98 байт модуля образуют соответствующую строку)
+98 (1) Для обычных AY музонов: код #20.
        Если используется TS: число паттернов N (в текущей
        версии должно быть #30). Паттерны первого AY нумеруются
        N-1,N-2,... Паттерны второго AY нумеруются 0,1,2,...
        В списке позиций стоят паттерны N-1,N-2,...
+99 (1) номер частотной таблицы: 0=Pro Tracker (она же 1625000),
 1=Sound Tracker, 2=1750000 (другое название, не соответствующее
 содержанию - ASM or PSC), 3=RealSound (она же  1625000+, плохая
 попытка передвинуть табл. 0 под 1.75MHz). Табличка занимает 192
 байта и содержит значения делителей частоты для 96 нот, начиная
 с C-1 (ДО первой октавы). Делитель частоты - значение, помещае-
 мое в соотвующие регистры AY. Младшие байты (здесь  и  ниже, за
 одним исключением, которое  будет  указано)  хранятся  первыми.
 Компилятор  PT3 (текущие версии PT3 собираются без компилятора)
 сохраняет таблицу, соответствующую модулю, в  тело  плейера  по
 относительному адресу 512. Таблицу громкости он сохраняет в том
 же теле плейера по относительному адресу 256.
+100 (1) значение темпа.
+101 (1) song end (1=в модуле всего одна позиция) - в плейере не
 используется.
+102 (1) song loop (0=зацикливание на начало).
+103 (2) Psa_chn=смещение от начала модуля до таблицы паттернов.
+105 (32*2) смещения  от начала модуля до сэмплов, начиная с ну-
 левого  сэмпла. По два байта  на сэмпл. Нулевой сэмпл в текущих
 версиях  редактора  не используется. Для  всех неиспользованных
 сэмплов смещение равно нулю.
+169 (16*2) смещения  от начала  модуля до орнаментов, начиная с
 нулевого. По два байта на орнамент.Нулевой орнамент - это отсу-
 тствие орнамента,поэтому данные этого орнамента (см.ниже) соде-
 ржат 0,1,0 (можно использовать этот орнамент по своему усмотре-
 нию,НО тогда в сонге нельзя будет использовать сэмплы без орна-
 ментов).Для всех неиспользованных орнаментов смещение равно ну-
 лю.
+201 (?) список  позиций  (ордер).   Содержит  номера  паттернов
 (0...84), умноженные  на 3. Таблица завершается  кодом #ff. Pro
 Tracker v3.3x-v3.5x не поддерживает больше 42 паттернов.
 Pro Tracker v3.6x не поддерживает больше 46 паттернов.
 Pro Tracker v3.69x, v3.7x не поддерживает больше 48 паттернов.
+Psa_chn (?*6) указатель паттернов. Содержит для каждого из име-
 ющихся паттернов смещения:
   ++0 (2) до блока данных канала (трека) A
   ++2 (2) до блока данных канала (трека) B
   ++4 (2) до блока данных канала (трека) C.
 Данные  по смещению шума (отдельная колонка в редакторе) компи-
 лируются в канал B.
+? (?*?) блоки данных каналов, то есть треки.

 Трек содержит следующие данные:
================================================================
#00 - конец трека.
 Pro Tracker не работает с модулями, в которых есть треки больше
 64 строк. Такие модули можно играть плейерами или редактировать
 в Vortex Tracker, но в Pro Tracker их загружать нельзя.
#01, delay, Lsl, Hsl - эффект Gliss(Slide) вверх или вниз. Delay
 - время  в  пятидесятых  долях секунды, по истечении которого к
 периоду  ноты  будет  прибавлена величина Lsl+256*Hsl. Смещение
 накапливается плейером в соответствующей переменной и прибавля-
 ется после формирования частоты ноты, т.е.сначала обрабатывает-
 ся  строчка  орнамента, а уже  потом... v3.7x: Если delay=0, то
 указанное  смещение  прибавляется  к ноте на всём её протяжении
 (смещение тона для подгонки под огибающие и т.п.).
#02, delay, Lmax, Hmax, Lsl, Hsl - эффект  Tone Portamento вверх
 или вниз.Delay - время в пятидесятых долях секунды,по истечении
 которого  к периоду ноты будет прибавлена величина Lsl+256*Hsl.
 Lmax+256*Hmax - максимальное  смещение (беззнаковое), после на-
 копления  которого  следует  прекратить Portamento (с PT3.6x не
 используется, т.к. возможно неправильное указание направления).
#03, offset - sample offset. Сэмпл начинает играть не сначала.
#04, offset - ornament offset. Орнамент  начинает играть не сна-
 чала.
#05, YEStime, NOtime - vibrate. Нота то звучит, то не звучит.
#08, delay, Lsl, Hsl - эффект slide envelope. К значению периода
 огибающей время от времени прибавляется Lsl+256*Hsl.
#09, tempo - указание темпа (в прерываниях на строку). Стандарт-
 ный плейер (playFAS*.H) меньше tempo=2 не играет. Если в модуле
 есть tempo=1, используйте медленные плейеры.
NB: параменты  эффектов (#0x)  лежат  не сразу после кода номера
эффекта, а ПОСЛЕ КОНЦА СТРОКИ!!! Если используется несколько эф-
фектов на одну ноту (на самом деле так не бывает),то сначала ле-
жат параменты последнего эффекта, потом предпоследнего и так да-
лее...

#10, smp*2 - выключить огибающую, перезапустить орнамент и
 изменить номер сэмпла.
#1x, Henv, Lenv, smp*2 - изменить номер сэмпла, перезапустить
 орнамент и включить огибающую типа x-1 с периодом
 Lenv+256*Henv. При включении огибающей она инициализируется,
 т.е. начинается новый период!
#20-#3f - указать смещение шума (бывает только в канале B)
#4x - указать орнамент номер x.
 (огибающая не выключается)
#50-#Af - указать  высоту ноты и ЗАКОНЧИТЬ анализ текущей строки
 канала.
#B0 - выключить Envelope.
#B1, lines - не анализировать канал в течение lines строк.
 (lines=1 соответствует одной строке). Действует не только на
 промежуток между этой и следующей нотой, но и далее, пока не
 указано другое значение lines!
#Bx, Henv, Lenv - то же, что #1x, но  без сэмпла. То есть просто
 включить огибающую типа x-1 с указанным периодом.
#Cv - указать громкость.(v=0 - пауза и ЗАКОНЧИТЬ анализ строки.)
#D0 - ЗАКОНЧИТЬ анализ строки.
#D1-#Ef - указать номер сэмпла.
#Fx, smp*2 - указать номер орнамента (x) и номер сэмпла.
 (огибающая выключается)
================================================================

+? (?*(?*4+2)) - сэмплы.
   ++0 (1) - loop
   ++1 (1) - end (1=сэмпл из одной строчки)
   ++2 (?*4) - данные:
      +++0 (1) sv +- N4 N3 N2 N1 N0 Em
      +++1 (1) Nm ts ns Tm V3 V2 V1 V0
 sv=1 - признак съезжания громкости, +- =1 соответствует её уве-
 личению; N4-0 - частота шума ИЛИ смещение огибающей (зависит от
 наличия  маски  шума): смещение  огибающей 0-15 - вниз, 16-31 -
 вверх (N4 интерпретируется как знак); V3-0 - громкость; Tn, Nm,
 Em - маски тона, шума и огибающей соотв., причём если маска ра-
 вна единице,то соответствующий элемент звука выключен; ts, ns=1
 - признаки того, что  текущее  смещение тона или шума/огибающей
 будет запомнено.
      +++2 (2) смещение периода тона (положительное - вверх, от-
 рицательное - вниз).

+? (?*(?+2)) - орнаменты.
   ++0 (1) - loop
   ++1 (1) - end (1=орнамент из одной строчки)
   ++2 (?) - данные: смещения в полутонах (0=нет смещения, поло-
 жительное смещение - вверх, отрицательное - вниз).

Alone Coder

жду дополнений!

Дополнения от 10.xi.02:
1. (Sergey Bulba): Таблица ASM or PSC не имеет отношения к соот-
ветствующим  редакторам. Модули из этих редакторов следует импо-
ртировать с таблицей Sound Tracker.
2. В модуле  может  использоваться  и 0-й сэмпл, если в треке он
хранится вместе с орнаментом (можно нулевым). Итого 32 сэмпла.
3. Проверена информация по поводу Portamento, Loop и #B1.
4. Исправлена информация по поводу сэмплов.
Дополнение от 24.ii.03:
5. Дополнено по поводу выключения огибающей.
Дополнение от 25.iii.03:
6. Стандарт PTv3.6x - 46 паттернов.
7. При переполнении смещения орнамента вниз (точнее, при отрица-
тельном номере ноты) подставляется самая низкая нота C-1. При
переполнении вверх результат не определён.
Дополнение от 26.vii.03:
8. Выше уточнены изменения для PT3.6x.
9. Максимальный  размер модуля, который можно загрузить в редак-
тор, равен #3300 байт, или #4000 байт для "cjf" версии.
Дополнение от 20.iii.04:
10. PT3+67 имеет 48 паттернов, но не гарантируется, что их будет
столько же во всех следующих версиях.
Дополнение от 29.vi.04:
11. см.про #10 и #B1.
12. в PT3.69 можно указывать номер орнамента без влияния на
огибающую. в VTII пока нельзя. все плейеры играют такое.
Дополнение от 26.viii.04:
13. на строчках сэмпла, где включен шум, накопленное смещение
огибающей игнорируется.
Дополнение от 27.x.04:
14. #1x (Sergey Bulba)
Дополнение от 6.xi.04:
15. (Sergey Bulba)
Почти все таблички сделаны неправильно (не соответствуют
идеальной шкале 1750000 и 1773400). Более-менее правильно
сделана табличка 1 (SoundTracker), традиционная для ZX Spectrum
- она подходит для импорта практически всех существующих на ZX
музыкальных редакторов. По сравнению с идеальной шкалой для
1773400 Гц сдвинута почти ровно на один тон вниз. Кроме того,
24-я нота фальшивит (в редакторе обозначена как B-2, из-за
сдвига в один тон должна звучать как A-2). Hо, к сожалению, это
единственная табличка, которая подходит под 1773400 Гц
(фирменный Спектрум 128).

Табличка номер 2 практически идеально подходит под частоту AY
1750000 Гц, все ноты звучат именно так, как они и отображаются в
редакторе.

К сожалению, таблицы нот разных версий Pro Tracker 3 достаточно
сильно отличаются (в особенности таблица 2, которая раньше имела
полное право называться ASM or PSC и идеально подходила под
частоту 1773400 Гц). Табличка 1 в этом смысле уникальна - она
одинакова во всех версиях Pro Tracker 3.

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

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

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

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

16. 48 паттернов. 64 строки. В TurboSound модулях под второй чип
используются паттерны номер (47-паттерн), в списке позиция стоят
именно эти высокие номера.

17 (19 aug 06). Дополнения про PT v3.7: +98; slide с delay=0.

18 (08 may 07). Дополнения про PT v3.7x и про Vortex Tracker.
