pt3 must die?
Posted: Sat, 13.05.2017 23:35:33
всем снова привет!
Как-то однажды в январе-феврале зашла речь о том, чем можно заменить формат .pt3 (Pro Tracker 3.x), чтобы не упираться больше в его ограничения (максимум 31 инструмент\15 орнаментов, принудительный рестарт огибающей, особенности (не)поддержки нескольких чипов, завязанность на 1.75мгц\50гц и т.д.), да и AYX-32 с его панорамами, скважностями и четырьмя аигреками поджимает; а уж тема на гф окончательно подбила меня в этом направлении Я немножко пораскинул мозгами (благо все равно делать нечего и решил накидать черновик формата на замену, назвав его (предварительно) pt3md, что означает...ну вы поняли
Написав конвертер pt3->pt3md и начав писать psg-экспортер, все как-то заглохло, и вот на майских я вспомнил о проекте, допилил недостающие части и в итоге что-то даже получилось
Сразу оговорюсь - для highperfomance проигрывания (в демы), ясное дело, есть psg, в качестве рабочего формата есть вортексовский txt, а pt3md задумывается как бинарный формат для тех случаев, когда пихать пачку псг-шек просто нецелесообразно, например в патисборники\музикдиски\компо\etc
Собственно, что задумывается:
Что уже есть:
Что точно еще не работает либо поглюкивает:
В общем, во вложении - архив с черновиком формата и тестовыми конвертерами (pmdconv - pt3->pmd, pmd2psg - pmd->psg), также - исходники и тестовые модули.
буду очень рад предложениям и фидбеку!
Как-то однажды в январе-феврале зашла речь о том, чем можно заменить формат .pt3 (Pro Tracker 3.x), чтобы не упираться больше в его ограничения (максимум 31 инструмент\15 орнаментов, принудительный рестарт огибающей, особенности (не)поддержки нескольких чипов, завязанность на 1.75мгц\50гц и т.д.), да и AYX-32 с его панорамами, скважностями и четырьмя аигреками поджимает; а уж тема на гф окончательно подбила меня в этом направлении Я немножко пораскинул мозгами (благо все равно делать нечего и решил накидать черновик формата на замену, назвав его (предварительно) pt3md, что означает...ну вы поняли
Написав конвертер pt3->pt3md и начав писать psg-экспортер, все как-то заглохло, и вот на майских я вспомнил о проекте, допилил недостающие части и в итоге что-то даже получилось
Сразу оговорюсь - для highperfomance проигрывания (в демы), ясное дело, есть psg, в качестве рабочего формата есть вортексовский txt, а pt3md задумывается как бинарный формат для тех случаев, когда пихать пачку псг-шек просто нецелесообразно, например в патисборники\музикдиски\компо\etc
Собственно, что задумывается:
- Code: Select all
Общая информация:
- Скорость проигрывания - 1..255
- Кол-во паттернов - до 255
- Кол-во инструментов - до 127 (теоретически до 255)
- Кол-во орнаментов - до 255 (+ пустой нулевой орнамент)
- Кол-во чипов - до 8
- Длина паттерна - 1..256 строк
- Длина инструмента - до 256
- Длина орнамента - до 256
- Максимальный размер - до 64 кб
в планах:
- Поддержка синхронного (sync) и асинхронного (async) режима проигрывания
- Поддержка расширенных возможностей AYX-32
Возможности по сравнению с PT3:
- возможность изменения периода огибающей без рестарта
- независимое управление смещениями шума\огибающей в инструменте
- sustain-циклы в инструментах
- полностью настраиваемая табличка периодов нот (тоновая табличка)
- свободная частота чипа и прерываний, доступная в свойствах модуля
- поля для дополнительной информации свободного формата
- автоскорость - автоматическое изменение скорости для ломаных ритмов и т.д.
- более плотная упаковка модулей
в планах:
- управление приоритетами обработки каналов
- возможность записи периода огибающей как ноты + наложение орнаментов
- возможность синхронизации с модулем и callback'ов из коробки, без доработок,
а также реализация кастомных команд
Недостатки по сравнению с PT3:
- неоптимальность внутреннего формата для обработки Z80, как следствие -
возможно низкая скорость работы плеера
Что уже есть:
- все более-менее работающие фичи pt3 (инструменты\орнаменты\паттерны\команды)
- кастомные таблички нот
- отвязаны смещения шума и огибы в инструменте
- поля с частотами клока и инта (которые все равно никто не читает)
- sustain-циклы
- envelope as note (since 0.3)
- степень упаковки на уровне pt3 (меньше пт3 на 5-7% в среднем)
- автоскорость (0.3, но будет выпилена из-за своей глюкавости)
- ~90% треков из pt3 уже играют один в один
- ну и еще по мелочи
Что точно еще не работает либо поглюкивает:
- многочиповость
- запилены пока что только те команды, которые есть в pt3
- мелкие проблемы с тремором (однако в pt3 он и так косячный)
- фундаментальное ограничение в 64кб (не думаю что прям критично, но как запилим многочиповость, то вылезет сразу)
- вангую тормознутость z80-плеера
- возможно, еще что-то
В общем, во вложении - архив с черновиком формата и тестовыми конвертерами (pmdconv - pt3->pmd, pmd2psg - pmd->psg), также - исходники и тестовые модули.
буду очень рад предложениям и фидбеку!