pt3 must die?

Музыка

Postby TS-Labs » Sun, 04.06.2017 08:26:31

Адцкая жесть! =)
User avatar
TS-Labs
 
Posts: 4780
Joined: Thu, 26.07.2012 01:29:56

Postby WBC » Sun, 04.06.2017 20:50:20

UPDATE: поправил сырцы в предыдущем посте

вот такой псто на гяфе (спасибо карбо за наводку):
В PT3 и в PT2, кстати, по разному завершается портаменто: в PT2 частота доходит до заданной и не переходит её. А в PT3 частота сперва переходит заданную, а потом уже идет остановка портаменто. В обоих случаях потом происходит корректировка конечной частоты (вариант, когда конечная частота совпадает с текущей, не рассматривается, так как в этом случае оба плеера работают одинаково). В PT3 явная ошибка. Вот думаю, все-таки оставить один из вариантов для компактности. Что кто посоветует? На первый взгляд, PT3 более популярен и надо именно PT3-шный вариант оставлять...

от себя добавлю - на самом деле назвать это ошибкой трудно, т.к. при окончании портаменто накопление от него все равно обнулится перед вычислением итогового периода (проверено на псг-дампах, да и Бульба об этом пишет ниже)
wbc \\ b-state

я немножк упоролся с аватарой, извините (:
User avatar
WBC
 
Posts: 244
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Postby WBC » Mon, 05.06.2017 15:33:32

в общем, pt3md потихоньку движется, и потихоньку дотопал до промежуточной версии 0.3:
  • переписал упаковку паттернов - теперь в среднем трек весит на 5-7% меньше, чем в pt3
  • проверил envelope as note и понакладывал орнаменты - работает! особого применения я не придумал еще, но пусть будет :) пример - envtest.pmd\psg, там начало как раз играется нотами на огибающей+орнаментом
  • исправлено портаменто - теперь оно полностью совместимо с вортексом (и с пт3.6+ соответственно)
  • добавил в pmdconv возможность забить метаданные (частоту клока\чипа, ay\ym и раскладку каналов):
    Code: Select all
    Pro Tracker 3.x -> pt3md module converter - by wbcbz7 z8.o5.zol7
    usage: pmdconv.exe [filename.pt3] <filename.pmd> <arg>...

     --autospd - use autospeed (experimental)

     --clk     - chip clock rate in hz
     --int     - int rate in hz
     --stereo  - stereo layout (abc/acb/bac/mono)
     --chip    - chip type (ay/ym)

    example: pmdconv.exe module.pt3 --clk=1750000 --int=48.8 --stereo=abc --chip=ay
  • автоскорость - экспериментальная фича, направленная на упаковку модулей с ломаными ритмами. Идея проста - если в паттерне повторяется пачка B.03 B.04 и так по кругу, то можно убрать эти команды из паттерна, затем просто менять скорость согласно зацикленной последовательности (тех самых B.03 B.04). Запилил простенький крянчер, в итоге - конечные pmd по размеру меньше pt3 до 20-25%, но...в случае особо зверски сломанных ритмов (особенно с расставленными рандомно командами B.xx) начинаются тормоза и пропуски фреймов :(
    Посему, хоть фича и вполне эффективна, но планируется к выпиливанию.

и, в завершение, несколько предложений и планов:
  • выпилить автоскорость (особо треки не сжимает, зато такты будет жрать ппц)
  • как развитие - переписать pt3md_pattern_hdr - оставить только указатели, а длину паттерна сослать в ордерлист (можно будет вычислять адреса в списке паттернов пачкой add hl, hl)
  • увеличить длину ордерлиста (на всякий случай, тем более в pt3 она ограничена лишь 64кб)
  • подумать насчет команды 8zxy (volslide) - в принципе в pmd2psg она уже есть, но не проверена + не факт, что нужна
  • подумать, как логически будет увязываться envelope as note с обычным периодом
  • продумать формат дополнительных полей
  • начать запиливать турбу! :)
  • и все-таки подумать над нормальным названием! :D
Attachments
pt3md!_0.3.zip
(1.08 MiB) Downloaded 18 times
wbc \\ b-state

я немножк упоролся с аватарой, извините (:
User avatar
WBC
 
Posts: 244
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Postby WBC » Tue, 06.06.2017 18:43:56

продолжаем забивать гвозди! =)

Пройдемся теперь по другой достаточно больной теме - тоновым табличкам. "Полюбоваться" на них (а точнее на их версии от pt3.5+ и, соответвственно, вортекса) можно вот здесь
Про их степень кривизны уже сказано многое и в документации к трекерам, и на всяких форумах, поэтому процитирую самые важные выдержки. Про попытки вставить таблицы для натурального звукоряда взамен темперированного, заюзанного в pt3, я не говорю и даже не осуждаю их, наоборот, я за эксперименты, и поэтому в pt3md поддержаны кастомные таблички ;)

Итак, выдежки из ptdoc.txt и мануала к вортексу:
ptdoc.txt от pt3.6 wrote:+99 (1) номер частотной таблицы: 0=Pro Tracker, 1=Sound Tracker,
2=ASM or PSC, 3=RealSound. ...
...
Дополнения от 10.xi.02:
1. (Sergey Bulba): Таблица ASM or PSC не имеет отношения к соот-
ветствующим редакторам. Модули из этих редакторов следует импо-
ртировать с таблицей Sound Tracker. Таблица ASM or PSC рассчита-
на так,чтобы при тактовой частоте AY 1.7744 MHz ноты в редакторе
совпадали с одноименными нотами фортепиано. (Таблица Real Sound
- аналогично, но для 1.75 MHz.)


ptdoc.txt от pt3.7 wrote: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.


Теперь к делу. Во-первых, таблица #1 перенесена с оригинального SoundTracker с парой ошибок (отмечены звездочками):
Code: Select all
PT3NoteTable_ST: PT3ToneTable = (
$0EF8, $0E10, $0D60, $0C80, $0BD8, $0B28, $0A88, $09F0, $0960, $08E0, $0858, $07E0,
$077C, $0708, $06B0, $0640, $05EC, $0594, $0544, $04F8, $04B0, $0470, $042C, *03FD,
$03BE, $0384, $0358, $0320, $02F6, $02CA, $02A2, $027C, $0258, $0238, $0216, $01F8,
$01DF, $01C2, $01AC, $0190, $017B, $0165, $0151, $013E, $012C, $011C, *010A, $00FC,
$00EF, $00E1, $00D6, $00C8, $00BD, $00B2, $00A8, $009F, $0096, $008E, $0085, $007E,
$0077, $0070, $006B, $0064, $005E, $0059, $0054, $004F, $004B, $0047, $0042, $003F,
$003B, $0038, $0035, $0032, $002F, $002C, $002A, $0027, $0025, $0023, $0021, $001F,
$001D, $001C, $001A, $0019, $0017, $0016, $0015, $0013, $0012, $0011, $0010, $000F);

p.s. вместо 0x10A должно быть 0x10B, вместо 0x3FD - 0x3F0.

Сразу можно заметить, что табличка сформирована из первой строки простыми сдвигами:
Code: Select all
dst[(i * NOTES) + j] = (src[j] >> i); // i - номер ноты [0..11], j - номер октавы [0..7]


Так как частоты (и соответственно периоды и делители генераторов) соотносятся в соотношении 2 : 1, то значения следующих октав можно посчитать простым делением на 2^octave с округлением, но здесь авторы таблички (и по совместительству, судя по всему, авторы SoundTracker, где она и применялась) не сильно парились и заменили деление сдвигом без округления. Результат - табличка слегка фальшивит на очень высоких октавах, но зато тон, сформированный ей, в теории проще промодулировать огибающей - ее частота ровно в 16 раз меньше, чем у генераторов тона при одинаковых делителях (вот пример)
Про тот факт, что эта табличка рассчитана под 1.77 МГц и при этом еще и смещена на два полутона вниз, я и говорить не буду =)

Табличка #2 рассчитана под 1.75 МГц и сформирована уже делением с округлением:
Code: Select all
dst[(i * NOTES) + j] = (src[j] >> i) + ((src[j] >> (i - 1)) & 1);

Судя по табличкам, с округлением распаковываются также таблички 0 и 3 (за исключением старого варианта 0-й таблички из pt3.3)

Если таблички хранятся в плеере целиком, то проблем с ними нет, но что делать, если места не хватает и их нужно упаковать, но при распаковке нужно учитывать необходимость округления (а в особо извращенныхых случаях - еще и учитывать их косяки)? Правильно - патчить на лету! :)

Возьмем плеер от Votrex Tracker II. В конце есть такая табличка:
Code: Select all
NT_DATA   DB (T_NEW_0-T1_)*2 ; wbcbz7 note: здесь, судя по всему, находятся указатели на "патчеры"(?)
   DB TCNEW_0-T_
   DB (T_OLD_0-T1_)*2+1 ; +1 - не округлять результат деления
   DB TCOLD_0-T_
   DB (T_NEW_1-T1_)*2+1
   DB TCNEW_1-T_
   DB (T_OLD_1-T1_)*2+1
   DB TCOLD_1-T_
   DB (T_NEW_2-T1_)*2
   DB TCNEW_2-T_
   DB (T_OLD_2-T1_)*2
   DB TCOLD_2-T_
   DB (T_NEW_3-T1_)*2
   DB TCNEW_3-T_
   DB (T_OLD_3-T1_)*2
   DB TCOLD_3-T_

T_

; патчеры?
TCOLD_0   DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
   DB #18+1,#24+1,#3C+1,0
TCOLD_1   DB #5C+1,0
TCOLD_2   DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
   DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
TCNEW_3   DB #56+1
TCOLD_3   DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
TCNEW_0   DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
   DB #BC+1,#BE+1,0
TCNEW_1 EQU TCOLD_1
TCNEW_2   DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
   DB #BA+1,#BC+1,#BE+1,0

EMPTYSAMORN EQU $-1
   DB 1,0,#90 ;delete #90 if you don't need default sample

;first 12 values of tone tables (packed)

T_PACK   DB #06EC*2/256,#06EC*2
   DB #0755-#06EC
...


и начало депакера таблички:
Code: Select all
;NoteTableCreator (c) Ivan Roshin
;A - NoteTableNumber*2+VersionForNoteTable
;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)

   LD HL,NT_DATA
   PUSH DE
   LD D,B ; B = 0
   ADD A,A
   LD E,A
   ADD HL,DE
   LD E,(HL)
   INC HL
   SRL E ; та самая +1 отправляется в флаг переноса
   SBC A,A
   AND #A7 ;#00 (NOP) or #A7 (AND A)
   LD (L3),A ; патчим код на лету
   EX DE,HL

... ; опущено
   LD DE,23
   LD IXH,8

L2   SRL B
   RR C
L3   DB #19   ;AND A or NOP
   LD A,C
   ADC A,D   ;=ADC 0
   LD (HL),A
   INC HL
   LD A,B
   ADC A,D
   LD (HL),A
   ADD HL,DE
   DEC IXH
   JR NZ,L2


Думаю, комментарии излишни :)

Теперь, собственно, вопрос. Эмулировать косяки первой таблички мне абсолютно не хочется, поэтому этот факт опустим. Что же делать с учетом "округлять\не округлять" при распаковке табличек? Честно говоря, мне не очень хотелось обклеивать новый формат рудиментами и костылями от старого, но, видать, флаг "округлять\не округлять при распаковке" добавить таки придется, тем более что он много тактов жрать не будет, зато пропадут проблемы с неточностями сконвертированных из pt3 модулей. Есть еще идеи? ;)
wbc \\ b-state

я немножк упоролся с аватарой, извините (:
User avatar
WBC
 
Posts: 244
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Postby moroz1999 » Wed, 07.06.2017 22:13:36

WBC wrote:Есть еще идеи? ;)

Очень глупый вопрос от человека без матчасти: а, можно ли как-то при конверсии pt3 уже учитывать этот флаг?
User avatar
moroz1999
 
Posts: 1856
Joined: Wed, 01.08.2012 11:23:51

Postby WBC » Thu, 08.06.2017 09:07:23

конечно можно и даже учитывается (но пока что не в релизном билде, я его только позавчера прикрутил + еще есть меееееелкие глючки в сложных случаях вроде тремор+огибающая), тем более в скорости не потеряем вообще ничего ;)
wbc \\ b-state

я немножк упоролся с аватарой, извините (:
User avatar
WBC
 
Posts: 244
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Postby idxi » Sun, 20.08.2017 15:27:58

Код нового pmd-плеера где можно почитать? :) thx
idxi
 
Posts: 34
Joined: Mon, 03.07.2017 16:54:54

Postby g0blinish » Sun, 20.08.2017 16:12:52

товарищь, ты ебанулся али как?
пердачок защеканца лвд после чтения моих постов..

[14:29:28] <Alone> На пентагоне картинки на бордюре рисуют. Это вообще нечестно

Теперь поезд ваш в депо, а мой локомотив мчится на укрепление демосцены спектрума.(с)Пиздунков
User avatar
g0blinish
Упырь говнофорума
 
Posts: 3573
Joined: Tue, 18.06.2013 10:59:01

Postby idxi » Sun, 20.08.2017 18:00:34

Точно Упырь..

но не суть..

--
в далеких 90-х начале 2000-х меня интересовало "плеерность".. даже утилиты писаны разные были.. вот упоминание нашлось одной http://zxpress.ru/article.php?id=383
а на этом ресурсе даже с Help'ом)
FLASH MUSIC MODULE CONVERTOR v1.1
+ STR MUSIC DECOMPILER v1.1.

я с им еще музон в ST конвертил из 5-й части Shock'a MD.. и вроде 2-й части та что с мультколором.)
/me даж иходнике в xas'e сохранилсь.. ипать-колотить) сколько лет в личном архиве то..)

помнится даже дергалку блока данных из SQT-траскероского плеера и его конвертацию в PT2.4 писал.. оно даже работало... возможно найду тот исторический проект (для меня) в исходниках..

а щас что то какой та далекий от всего.. забылось все. да. вспоминается, конечно. не такими быстрыми тэмпами как хотелось ба
шо нить да наколдую полезного.. вскоре.. главное несцать.. EVO и была прикуплена для этих целей чичас.. осталось монитору найти.. и фигачить-фигачить.
уж темболее свои пылкие фразы аля "ебанутость или иже с ими.." - в себе и при себе, содержите/держите пжлст - ок?) ибо не по теме.
вот и замечательно..
Last edited by idxi on Sun, 20.08.2017 19:06:41, edited 2 times in total.
idxi
 
Posts: 34
Joined: Mon, 03.07.2017 16:54:54

Postby WBC » Sun, 20.08.2017 18:37:02

плеера пока что нет, да и вообще pt3md щас доведен до более-менее рабочей (в теории) альфы и законсервирован до написания софтов (читай - трекера =), где все добро можно было бы заюзать :)
wbc \\ b-state

я немножк упоролся с аватарой, извините (:
User avatar
WBC
 
Posts: 244
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Postby idxi » Sun, 20.08.2017 21:45:32

vdac2 1024x768 же держит?) Уж если писать трекер под живой современный spec, то включая поддержки чего там AYX32 умеет.. xm, mod.. 4x3 cha.. etc. ну. вощем под TSConf.. :)

long global idea...
idxi
 
Posts: 34
Joined: Mon, 03.07.2017 16:54:54

Postby TS-Labs » Sun, 20.08.2017 22:37:31

idxi wrote:vdac2 1024x768 же держит?)

Держит, но на своем видеоконтроллере, который к тсконф никаким боком. Отдельная видеокарта со своей памятью и всем-всем.
Зато делать трекер для фт812 - свыше прописано.
ФТ812 позволяет наделать кучу окон, независимых экранок по сути, для паттернов, индикаторов, менюшек. Которые можно таскать мышкой, например. Аппаратные независимые окна. Каждый с прозвольным графрежимом ну и все такое.
User avatar
TS-Labs
 
Posts: 4780
Joined: Thu, 26.07.2012 01:29:56

Postby WBC » Mon, 28.08.2017 19:07:19

TS-Labs wrote:Зато делать трекер для фт812 - свыше прописано.

я быстрее дему на фт812 напишу, чем трекер :D
wbc \\ b-state

я немножк упоролся с аватарой, извините (:
User avatar
WBC
 
Posts: 244
Joined: Fri, 19.09.2014 10:23:23
Location: Omsk \ Russia

Previous

Return to Music

Who is online

Users browsing this forum: No registered users and 1 guest

cron

x