Из газеты AlCoNews#12, Рязань, 08.10.2002 Автор: Alone Coder (Dima Bystrov) Формат модуля Pro Tracker v3.x Указаны смещения до областей в модуле и их длина в байтах (десятичные числа). +0 (13) "ProTracker 3." - идентификационная строка. +13 (17) "5" (или "4", или даже "3" ) - номер подверсии. Следует заметить, что для модулей PTv3.4x и ниже используется другая, "несимметричная" таблица громкости, а в модулях PTv3.3x используется альтернативная частотная таблица "Pro Tracker", не совпадающая с одноименной современной! +14 (16) " compilation of " +30 (32) название модуля (ASCII, lat, неиспользованные символы забиты пробелами). +62 (4) " by " +66 (32) имя автора (ASCII, lat, неиспользованные символы забиты пробелами). +98 (1) один пробел. (то есть первые 99 байт модуля образуют соответствующую строку) +99 (1) номер частотной таблицы: 0=Pro Tracker, 1=Sound Tracker, 2=ASM or PSC, 3=RealSound. Табличка занимает 192 байта и содер- жит значения периодов для 96 нот,начиная с C-1 (ДО первой окта- вы). Период - значение, обратное частоте ноты, помещаемое в со- ответствующие регистры AY. Младшие байты (здесь и ниже,за одним исключением,которое будет указано) хранятся первыми. Компилятор PT сохраняет таблицу, соответствующую модулю, в тело плейера по относительному адресу 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...41), умноженные на 3. Таблица завершается кодом #ff. Pro Tracker v3.3x-v3.5x не поддерживает больше 42 паттернов. +Psa_chn (?*6) указатель паттернов. Содержит для каждого из име- ющихся паттернов смещения: ++0 (2) до блока данных канала (трека) A ++2 (2) до блока данных канала (трека) B ++4 (2) до блока данных канала (трека) C. Данные по смещению шума (отдельная колонка в редакторе) компи- лируются в канал B. +? (?*?) блоки данных каналов, то есть треки. Трек содержит следующие данные: ================================================================ #00 - конец трека. #01, delay, Lsl, Hsl - эффект Gliss(Slide) вверх или вниз. Delay - время в пятидесятых долях секунды, по истечении которого к периоду ноты будет прибавлена величина Lsl+256*Hsl. Смещение накапливается плейером в соответствующей переменной и прибавля- ется после формирования частоты ноты, т.е.сначала обрабатывает- ся строчка орнамента,а уже потом... #02, delay, Lmax, Hmax, Lsl, Hsl - эффект Tone Portamento вверх или вниз.Delay - время в пятидесятых долях секунды,по истечении которого к периоду ноты будет прибавлена величина Lsl+256*Hsl. Lmax+256*Hmax - максимальное смещение (беззнаковое), после на- копления которого следует прекратить Portamento. (Вот здесь меня следует поправить, поскольку информация непрове- ренная.) #03, offset*4 - sample offset. Сэмпл начинает играть не сначала. #04, offset - ornament offset. Орнамент начинает играть не сна- чала. #05, YEStime, NOtime - vibrate. нота то звучит, то не звучит. #08, delay, Lsl, Hsl - эффект slide envelope. К значению периода огибающей время от времени прибавляется Lsl+256*Hsl. #09, tempo - указание темпа (в прерываниях на строку). Стандарт- ный плейер меньше tempo=3 не играет. #1x, Henv, Lenv, smp*2 - изменить номер сэмпла и включить огиба- ющую типа x-1 с периодом Lenv+256*Henv. При включении огибающей она инициализируется, т.е. начинается новый период! #20-#3f - указать смещение шума (бывает только в канале B) #4x - указать орнамент номер x. #50-#Af - указать высоту ноты и ЗАКОНЧИТЬ анализ текущей строки канала. NB: параменты эффектов (#0x) лежат не сразу после кода номера эффекта, а ПОСЛЕ КОНЦА СТРОКИ!!! Если используется несколько эф- фектов на одну ноту (на самом деле так не бывает),то сначала ле- жат параменты последнего эффекта, потом предпоследнего и так да- лее... #B0 - выключить Envelope. #B1, lines - не анализировать канал в течение lines строк. (lines=1 соответствует... чему???) #Bx, Henv, Lenv - то же, что #1x, но без сэмпла. То есть просто включить огибающую типа x-1 с указанным периодом. #Cv - указать громкость.(v=0 - пауза и ЗАКОНЧИТЬ анализ строки.) #D0 - ЗАКОНЧИТЬ анализ строки. #D1-#Ef - указать номер сэмпла. #Fx, smp*2 - указать номер орнамента (x) и номер сэмпла. ================================================================ +? (?*(?*4+2)) - сэмплы. ++0 (1) - loop*4 ++1 (1) - end*4 (4=сэмпл из одной строчки) ++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=нет смещения, поло- жительное смещение - вверх, отрицательное - вниз). жду дополнений!