Просмотр полной версии : Плеер-конвертер VortexTracker ВИ53
DenisGrachev
13.09.2023, 10:10
Всем привет,
Столкнулся с тем что нет никакого трекера чтобы писать музыку под ВИ53, да и все активные музыканты пишут в VortexTracker. Поэтому пришлось написать плеер + конвертер для воспроизведения модулей из VortexTracker на ВИ53.
Возможно кому пригодится:
https://github.com/DenisGrachev/vt2vi53
Поддерживается: Орнаменты, Инструменты (только маска тона и отклонение тона от базового значения, накопление не поддерживается). Команды номер B,4,5
В принципе ещё можно команды 1,2,3,6 сделать, теоретически, но это скорее всего замедлит плеер, да и музыкант не просил :)
Музыка пишется в VortexTracker с учётом ограничении ВИ53 - нет огибающей, нет шума, нет громкости. Потом конвертируется из vt2 в формат vtk для проигрывания на Векторе
Плеер написан прям с колен лишь бы играл, есть куча мест для оптимизаций и прочего
Ну и естественно всё в синтаксисе z80
Удачи!
UPD
Добавил ещё один плеер, он играет сжатый пакером Ромы Василенко псг дамп, имеется версия для воспроизведения на ВИ53, но трек должен быть написан в ограничениях ВИ
https://github.com/DenisGrachev/psgVector
Видео с тестовым треком
https://youtu.be/Z8obOSdp3Eg?si=WJEZj-c6xkraQdjz
Было бы интересно сравнить с эмуляцией AY ivagor-a.
DenisGrachev
13.09.2023, 10:56
Было бы интересно сравнить с эмуляцией AY ivagor-a.
Ну если только как-то сконвертить тестовый трек из моего примера в rmp ) насколько я помню там rmp треки используются в текущем виде
rmp - это пример использования (один из возможных), а так "эмулятор AY" не зависит от конкретного проигрывателя, он работает на уровне регистров.
DenisGrachev
13.09.2023, 11:12
rmp - это пример использования (один из возможных), а так "эмулятор AY" не зависит от конкретного проигрывателя, он работает на уровне регистров.
Ну т.е. как бы играет нативный АУ плеер в виртуальные регистры и ты их уже обрабатываешь? или это препроцесс в какой то свой формат? спектрумисты последнее время ходят вокруг psg и его сжатия всякими разными бяками )
Ну т.е. как бы играет нативный АУ плеер в виртуальные регистры и ты их уже обрабатываешь? или это препроцесс в какой то свой формат? спектрумисты последнее время ходят вокруг psg и его сжатия всякими разными бяками )
Так и есть. Теоретически можно даже переключить процедуры вывода на лету и перенаправить музыку с AY на ВИ53. Но результат с точки зрения того, что видит ВИ53, в обоих случаях должен быть примерно одинаковый. Поэтому в принципе можно сравнивать. Например, взять музыку из моей интры с рыбой -- AY-Emul там уже задействован. Осталось пропустить через твой конвертер и послушать.
Музон -- https://github.com/svofski/v06c-waveintro/tree/master/music
DenisGrachev
13.09.2023, 11:37
Так и есть. Теоретически можно даже переключить процедуры вывода на лету и перенаправить музыку с AY на ВИ53. Но результат с точки зрения того, что видит ВИ53, в обоих случаях должен быть примерно одинаковый. Поэтому в принципе можно сравнивать. Например, взять музыку из моей интры с рыбой -- AY-Emul там уже задействован. Осталось пропустить через твой конвертер и послушать.
Музон -- https://github.com/svofski/v06c-waveintro/tree/master/music
Брать твой пт3 нет никакого смысла, потому что он написан не для ви53 :) Там и шум и прочее юзается.
У меня не конвертор, у меня плеер, именно с учётом того что музыка пишется для ВИ53. Т.е у меня задача не что-то там наконвертировать из одного формата в другой, а дать музыканту возможность написать трек в вортексе и чтобы он один в один звучал на векторе ) В идеале надо сделать кастомый билд вортекса конечно, вырезав всё что не подойдёт под ви )
Прикрепил в первый пост тестовый трек
Брать твой пт3 нет никакого смысла, потому что он написан не для ви53 Там и шум и прочее юзается.
PT3 может быть и нет. Ты возьми vt2, он уже обработан для совместимости с ви53.
DenisGrachev
13.09.2023, 12:07
PT3 может быть и нет. Ты возьми vt2, он уже обработан для совместимости с ви53.
Не особо он там обработан, сходу там огиба и шумы есть в инструментах ) я вообще не знаю как ещё объяснить что разные задачи то с эмулятором АУ
Возьми у меня vt2 под ви53 написанный, не обработанный и в вашем проиграй, если уж сильно сравнить надо. Думаю разницы не будет. А вот наоборот конечно будет, у меня аскетично всё
https://github.com/DenisGrachev/vt2vi53/tree/main/music
Ну т.е. как бы играет нативный АУ плеер в виртуальные регистры и ты их уже обрабатываешь?
svofski уже ответил, мне остается только подтвердить.
У меня не конвертор, у меня плеер, именно с учётом того что музыка пишется для ВИ53.
Если бы уже был плеер pt3 для 8080, то можно было бы сохранять из вортекса в pt3 и играть, просто при написании музыки учитывать ограничения таймера. Но портирование плеера pt3 для 8080 за много лет так и не началось. В итоге теперь есть уже два рабочих варианта сочинения в вортексе для таймера: 1) упакованный дамп + эмулятор AY, что использовал svofski; 2) твой вариант
DenisGrachev
13.09.2023, 12:28
svofski уже ответил, мне остается только подтвердить.
Если бы уже был плеер pt3 для 8080, то можно было бы сохранять из вортекса в pt3 и играть, просто при написании музыки учитывать ограничения таймера. Но портирование плеера pt3 для 8080 за много лет так и не началось. В итоге теперь есть уже два рабочих варианта сочинения в вортексе для таймера: 1) упакованный дамп + эмулятор AY, что использовал svofski; 2) твой вариант
Ох, я почему-то был уверен что плеер pt3 под 8080 уже есть, но вообще задача ещё та конечно, положа руку на сердце ) наверно проще взять какой-нибудь из современных psg пакеров и их плеер перенести. Надо потестить как psg в ограничениях ВИ53 жмётся ими. На досуге поиграюсь!
Не особо он там обработан, сходу там огиба и шумы есть в инструментах ) я вообще не знаю как ещё объяснить что разные задачи то с эмулятором АУ
Уже плохо помню, но предполагаю, что я выкусил только то, что давало совсем уж неблагозвучный результат в AY-Emul. А может быть и не выкусывал, а просто подогнал что-то для удобства зацикливания. Твой плеер не пропускает мимо ушей непонятные для него вещи? Чем критично наличие огибающей, если все равно ее воспроизвести никак нельзя?
Задача по-моему одна и та же -- играть музыку на ви53. Просто ты сразу говоришь, что есть ограничения и гипотетический музыкант должен это понимать. А AY-Emul старается как может, при этом не всегда заранее понятно, что получится. Но все равно, если бы был такой музыкант, который заранее знает про ограничения, было бы лучше. Отчасти AY-Emul это от отчаяния, потому что например в кругу полутора интересующихся Вектором человек трудно найти музыканта. Надеюсь, что с появлением твоего инструмента станет лучше. Хорошо бы конечно иметь специальный трекер, чтобы не держать ограничения в уме.
Есть MONOTONE (https://github.com/MobyGamer/MONOTONE), но я чего-то не пойму, может ли он несколько каналов, или он строго на писи спикер в один голос.
наверно проще взять какой-нибудь из современных psg пакеров и их плеер перенести
Плеер tbk_psg_packer_1_1 я адаптировал для 8080, это мягко говоря не сложно, но и толку от этого мало. zx0 сжимает лучше даже при использовании кольцевого буфера 256 байт, особенно если разбить регистры, как делал svofski. Простой распаковщик psg интересен своей скоростью и возможностью выровнять все ветки, когда не просто раз в прерывание записываем значения в таймер, а пытаемся регулировать громкость ШИМом, но это специфический частный случай.
Ох, я почему-то был уверен что плеер pt3 под 8080 уже есть, но вообще задача ещё та конечно, положа руку на сердце ) наверно проще взять какой-нибудь из современных psg пакеров и их плеер перенести. Надо потестить как psg в ограничениях ВИ53 жмётся ими. На досуге поиграюсь!
Какие-то плееры есть (но не pt3, есть STC, причем кажется даже два). Просто они с грехом пополам сконверчены из своих z80-прототипов, большие, медленные и смотреть на их код без боли невозможно. Проигрывание дампа получается быстрее и по размеру кода-данных в программе сопоставимо. Я делал только для AY и ВИ53 пристегивал уже потом, поэтому нет данных о том, насколько все компактно и эффективно если сделать строго только для ВИ53. Наверняка будет быстрее, но вряд ли сильно компактней потому что регистровый дамп по столбцам жмется очень хорошо. Вот тут (https://zx-pk.ru/threads/29679-szhatie-dannykh.html?p=1159514&viewfull=1#post1159514) немножко про это.
DenisGrachev
13.09.2023, 15:31
Уже плохо помню, но предполагаю, что я выкусил только то, что давало совсем уж неблагозвучный результат в AY-Emul. А может быть и не выкусывал, а просто подогнал что-то для удобства зацикливания. Твой плеер не пропускает мимо ушей непонятные для него вещи? Чем критично наличие огибающей, если все равно ее воспроизвести никак нельзя?
Задача по-моему одна и та же -- играть музыку на ви53. Просто ты сразу говоришь, что есть ограничения и гипотетический музыкант должен это понимать. А AY-Emul старается как может, при этом не всегда заранее понятно, что получится. Но все равно, если бы был такой музыкант, который заранее знает про ограничения, было бы лучше. Отчасти AY-Emul это от отчаяния, потому что например в кругу полутора интересующихся Вектором человек трудно найти музыканта. Надеюсь, что с появлением твоего инструмента станет лучше. Хорошо бы конечно иметь специальный трекер, чтобы не держать ограничения в уме.
Плеер пропускает непонятные вещи, точнее конвертер из вт2, но результат будет разный от среднего до ужасного, ибо там куча команд, огиба и прочее, всё это может влиять на тон, поэтому регистровый плеер будет звучать лучше, грубо говоря ему тон уже в канале сгенерили ) Поэтому лучше плотнее с музыкантом работать, просто ловишь любого спектрум-музыканта и говоришь ограничения.
Я хотел сделать урезанный вортекс, даже делфи 7 поставил и сбилдил из исходников, но понял что мои познания в делфях остались в начале нулевых )
Плеер tbk_psg_packer_1_1 я адаптировал для 8080, это мягко говоря не сложно, но и толку от этого мало. zx0 сжимает лучше даже при использовании кольцевого буфера 256 байт, особенно если разбить регистры, как делал svofski. Простой распаковщик psg интересен своей скоростью и возможностью выровнять все ветки, когда не просто раз в прерывание записываем значения в таймер, а пытаемся регулировать громкость ШИМом, но это специфический частный случай.
Клёво что тбкашный есть, уже можно с квазидиском демосценить получается ) Самый новый от Ромы Василенко кажется получше жмёт, да и адаптировать там под 8080 на вид не сложно. https://github.com/vasilenkoroman/psg_compressor
Основная беда у таких пакеров то что они растут чисто от времени трека, потоковый zx0 это весело, но скорее всего не так быстро.
Самый новый от Ромы Василенко кажется получше жмёт
Да, этот повеселее даже на уровнях 1-3, не говоря уже про 4-5.
потоковый zx0 это весело, но скорее всего не так быстро.
Гигачад-16 по моим замерам для AY, то есть 14 каналов, съедает от 5 до 20 строк растра, а плеер stc 29-43. Если потоков будет всего три, наверное будет быстрее. Но это надо закапываться, чтобы все это испытать и сделать замеры.
- - - Добавлено - - -
Я хотел сделать урезанный вортекс, даже делфи 7 поставил и сбилдил из исходников, но понял что мои познания в делфях остались в начале нулевых )
Трекер -- это просто очень неудобный текстовый редактор. Если сделать плеер, который подхватывает на лету изменения файла, никакого трекера не нужно и музыку можно будет писать в терминале в vim.
Гигачад-16 по моим замерам для AY, то есть 14 каналов, съедает от 5 до 20 строк растра, а плеер stc 29-43
Для сравнения проигрыватель сжатого psg (tbk) в векторовском воплощении от примерно 200 до 1600 тактов. Но, как все уже знают, степень сжатия меньше.
Есть MONOTONE, но я чего-то не пойму, может ли он несколько каналов, или он строго на писи спикер в один голос
Насколько понимаю, то что он скидывает в дамп PIT, который проигрывает PLAYER.ASM, рассчитано на одноканальный таймер при частоте прерываний 60 Гц. Но в принципе из исходника можно получить и "параллельное" исполнение (проигрывателей для которого так сразу и не видно, но не сильно искал). Одноканальный вариант в принципе должен быть интересен и постсоветским обладателям ВИ53 с одним звуковым каналом, может кто-нибудь попробует.
Но, как все уже знают, степень сжатия меньше.
В принципе, если не жалко всего кваза на один музон, то можно сжать и по столбцам и распаковать их целиком и потом быстро играть. Поточная распаковка это все-таки компромисс.
Ну и кстати еще неизвестно как бы выглядела 14-поточная распаковка, если бы ты ее написал с нуля. Может быть получилось бы сделать эквивалент гигачада-16 за 1590 тактов.
если не жалко всего кваза на один музон
Зачем сразу кваз. Для примера LESNIKv2.pt3 (Wally/Сергей Нилов) на котором я экспериментировал - 8665 байт. Сжатый psgpackerом tbk - 21492 байта. А сжатый вышеупомянутым psgcompressorом (распаковщика для 8080 на сегодня нет) с уровнем сжатия 5 - 14690 байт.
parallelno
14.09.2023, 22:44
DenisGrachev, Супер! Спасибо что делишься этим!
И спасибо svofski, ivagor, за обсуждение!
Ох! Ну раз уж появился плеер под вектор, то реализацию под Байт было супер увидеть тоже ;) Один из немногих спектрумов с ВИ53 на борту ;)
NEO SPECTRUMAN
15.09.2023, 00:32
Один из немногих спектрумов с ВИ53 на борту
ипуляцию которого не завезли
да и вообще это зубодробительный чип
вплане кривости бубулирования
- - - Добавлено - - -
АНЕП
можно набрать конфиг зх+ви53 в b2m-уляторе
я даже какуюто пищалку писал
но потом оказалось что в интоле тупые быдлятские мудаки сделали редкостную мурню вместо того чтобы как надо (в одном режиме ВНЕЗАПНО шагают с шагом в 2 + костыли)
и...
DenisGrachev
15.09.2023, 05:02
Ох! Ну раз уж появился плеер под вектор, то реализацию под Байт было супер увидеть тоже ;) Один из немногих спектрумов с ВИ53 на борту ;)
не знал даже про такое, офигеть :) есть где описание портов?
Если уж говорить о советских ретрокомпах с трехканальным звуком таймера, то стоит привести более полный список. По алфавиту (что вспомнил): Апогей, Байт, Вектор, Партнер с МЦПГ, ПК8002, Союз-Неон.
Что касается Байта, то есть же тематический сайт с соответсвующим разделом (https://zxbyte.ru/computer_byte_emulation.htm). Ну и порты:
Счетчики 0, 1, 2: 08Eh, 0AEh, 0CEh
Управление: 0EEh
Частота 1.75 МГц
NEO SPECTRUMAN
15.09.2023, 07:37
надо дружно попросить Pyk-а впилить минимальный зх+ви53 в эму80
без мультиколоров
желательно с 128К
портом FE
и снапшотами
дед мороз Pyk выходи
- - - Добавлено - - -
вот мой конфиг
79479
...а можот это и не мой конфиг
(уже не помню кого именно я делол)
возможно частота ВИ53 непральная
ибо ламбада на видео играла на октаву в другую сторону.... (не помню куда)
и не помню фиксил ли я конфиг
да и это порнография чота делать в emu
снапшотов оно не понимает (кажись)
все через tap
(выдаетсо выбор тапов если набрать load (по другому оно не открывает))
да и вообще пола с факелами и вилами
вытряхивать сорцы у б2м-ы :v2_dizzy_fire:
DenisGrachev
15.09.2023, 09:50
надо дружно попросить Pyk-а впилить минимальный зх+ви53 в эму80
без мультиколоров
желательно с 128К
портом FE
и снапшотами
дед мороз Pyk выходи
- - - Добавлено - - -
вот мой конфиг
79479
...а можот это и не мой конфиг
(уже не помню кого именно я делол)
возможно частота ВИ53 непральная
ибо ламбада на видео играла на октаву в другую сторону.... (не помню куда)
и не помню фиксил ли я конфиг
да и это порнография чота делать в emu
снапшотов оно не понимает (кажись)
все через tap
(выдаетсо выбор тапов если набрать load (по другому оно не открывает))
да и вообще пола с факелами и вилами
вытряхивать сорцы у б2м-ы :v2_dizzy_fire:
Добавил плеер для байта. Да уж, без твоих подсказок и не завести эмуль :) Действительно играет куда то в другую сторону, частота самого чипа у меня берётся прям из vt2 файла, так что это я поправил.
Надо бы венести в переменные чтобы универсальный был, ну да ладно.
https://github.com/DenisGrachev/vt2vi53/blob/main/byte/main.tap
Уже плохо помню, но предполагаю, что я выкусил только то, что давало совсем уж неблагозвучный результат в AY-Emul. А может быть и не выкусывал, а просто подогнал что-то для удобства зацикливания. Твой плеер не пропускает мимо ушей непонятные для него вещи? Чем критично наличие огибающей, если все равно ее воспроизвести никак нельзя?
Задача по-моему одна и та же -- играть музыку на ви53. Просто ты сразу говоришь, что есть ограничения и гипотетический музыкант должен это понимать. А AY-Emul старается как может, при этом не всегда заранее понятно, что получится. Но все равно, если бы был такой музыкант, который заранее знает про ограничения, было бы лучше. Отчасти AY-Emul это от отчаяния, потому что например в кругу полутора интересующихся Вектором человек трудно найти музыканта. Надеюсь, что с появлением твоего инструмента станет лучше. Хорошо бы конечно иметь специальный трекер, чтобы не держать ограничения в уме.
Есть MONOTONE (https://github.com/MobyGamer/MONOTONE), но я чего-то не пойму, может ли он несколько каналов, или он строго на писи спикер в один голос.
Оригинал ВИ53 же был и в каких-то западных компах? И в спектруме был. Да и вообще круг людей могущих написать музыку заметно шире поклонников Вектора.
Даже если музыка будет играть на Векторе. Очень много западных чиптюн музыкантов пишет музыку под множество разных платформ. Culor, AceMan и так далее.
Да уж, без твоих подсказок и не завести эмуль
А в чем проблема? ZXMAK2 я не пробовал, использовал официальный конфиг (http://bashkiria-2m.narod.ru/files/byte.rar) Emu, есть сообщение (https://zx-pk.ru/threads/34149-emulyatsiya-ay-s-ispolzovaniem-vi53.html?p=1175437&viewfull=1#post1175437), что на реале работало. В emu в отличие от ZXMAK2 нет точных таймингов байта, но для музыки по прерываниям это не критично.
- - - Добавлено - - -
Да и вообще круг людей могущих написать музыку заметно шире поклонников Вектора.
Можно увидеть/услышать примеры трехканальной музыки для 8253 за последние несколько лет? Алексей Морозов, SegaBoy, Kakos_nonos работали в этом направлении, им респект.
DenisGrachev
15.09.2023, 11:12
А в чем проблема? ZXMAK2 я не пробовал, использовал официальный конфиг (http://bashkiria-2m.narod.ru/files/byte.rar) Emu, есть сообщение (https://zx-pk.ru/threads/34149-emulyatsiya-ay-s-ispolzovaniem-vi53.html?p=1175437&viewfull=1#post1175437), что на реале работало. В emu в отличие от ZXMAK2 нет точных таймингов байта, но для музыки по прерываниям это не критично.
- - - Добавлено - - -
Можно увидеть/услышать примеры трехканальной музыки для 8253 за последние несколько лет? Алексей Морозов, SegaBoy, Kakos_nonos работали в этом направлении, им респект.
С официальным конфигом играет как положено, отлично! в ZXMAK кажется нет ви53 эмуляции, по крайней мере с ходу не нашёл
надо дружно попросить Pyk-а впилить минимальный зх+ви53 в эму80
без мультиколоров
желательно с 128К
портом FE
и снапшотами
дед мороз @Pyk выходи
У "Деда Мороза" пока не очень хорошо со свободным временем :(
Поэтому пока не буду разбрасываться, и без того много недоделанного.
Хотя, если честно, соблазн добавить хотя бы минимальную конфигурацию Спектрума есть, и когда-нибудь я, наверное, это сделаю ;)
DenisGrachev
24.09.2023, 18:13
Зачем сразу кваз. Для примера LESNIKv2.pt3 (Wally/Сергей Нилов) на котором я экспериментировал - 8665 байт. Сжатый psgpackerом tbk - 21492 байта. А сжатый вышеупомянутым psgcompressorом (распаковщика для 8080 на сегодня нет) с уровнем сжатия 5 - 14690 байт.
Чуть посидел и адаптировал плеер Ромы Василенко под 8080 и порты #14 #15, завтра ещё подчищу и отправлю Роме, пока грубенько )
79548
Тоже попробовал конверснуть тот плеер в 8080, только в мнемониках 8080 для tasm (а значит и для pretty). Для чистоты эксперимента пока не смотрел и даже не скачивал версию Дениса, но вряд ли будут серьезные различия. В архиве два варианта: fast - это аналог версии для z80, а в compact свернуты циклы и почти все out вынесены в процедуру.
- - - Добавлено - - -
Пока проверял только на леснике, если вдруг выявятся ошибки - поправлю.
metamorpho
25.09.2023, 19:37
ivagor, спасибо за перевод плеера в 8080 !!
Вставил код в pretty, там показывает в нескольких строчках синтаксические ошибки.
Я не до конца улавливаю некоторые моменты в этих плеерах.
Можно ли мне более просто объяснить.
Куда вставляется плеер ?
Где взять музыку для этого плеера ?
И как этот плеер связан с "Fast PSG Packer for compression levels [4..5]" ?
Хорошо бы если будет пример кода типа "РЫБА" как у svofski в Pretty, чтобы было совсем
понятно, где и как расположен плеер:
ORG 100H
STRINT: DI
MVI A,0C3H ; установить переход (код команды JMP) в
STA 0000H ; нулевой адрес и
STA 0038H ; адрес вызова прерывания.
LXI H,STRINT ;УСТАНОВКА СТАРТА ПО "БЛК/СБРОС".
SHLD 0001H
LXI H,INIT ;УСТАНОВКА ВЕКТОРА ПРЕРЫВАНИЯ.
SHLD 0039H
XRA A ;ВЫКЛ. ОЗУ КВАЗИДИСКА.
OUT 10H
JMP Progrm ;ПЕРЕХОД НА НАЧАЛО.
======== обработка прерываний
INIT:.......ei\ret
;============= НАЧАЛО
Progrm:
...........................
jmp Progrm
Добавил пример (https://zx-pk.ru/threads/35286-pleer-konverter-vortextracker-vi53.html?p=1186069&viewfull=1#post1186069), надеюсь он ответит на вопросы.
- - - Добавлено - - -
Где взять музыку для этого плеера ?
Берем музыку в любом формате и преобразуем в psg. Потом psg сжимаем компрессором (https://zx-pk.ru/threads/35286-pleer-konverter-vortextracker-vi53.html?p=1185615&viewfull=1#post1185615) и этот результат сжатия можно игратьвышеприведенным плеером.
- - - Добавлено - - -
Если что, сам для конверсии в psg использую AY_Emul
metamorpho
25.09.2023, 21:17
Добавил пример (https://zx-pk.ru/threads/35286-pleer-konverter-vortextracker-vi53.html?p=1186069&viewfull=1#post1186069), надеюсь он ответит на вопросы.
А если используется не TASM а Pretty ассемблер, то как внедрить в него файл с музыкой lesnikv2.5 ?
А если используется не TASM а Pretty ассемблер, то как внедрить в него файл с музыкой lesnikv2.5 ?
В прекрасм только .db ....
Готового примера с новыми плеерами у меня пока нет, есть пример с гигачадом (https://svofski.github.io/pretty-8080-assembler/?https://gist.githubusercontent.com/svofski/f41ec5939d75b69bd7a2933f81489df1/raw/a04c31d08124503cfa6799c45f7dd86658a2a10d/gigachad.asm).
В pretty можно использовать base64 (например как здесь (https://svofski.github.io/pretty-old-8080-assembler/), хотя это вроде старая версия).
хотя это вроде старая версия
Текущая версия тут https://svofski.github.io/pretty-8080-assembler/
В прекрасм только .db
В новых версиях не поддерживается db64 или под db ты обобщенно подразумеваешь и db64?
- - - Добавлено - - -
Добавил (https://zx-pk.ru/threads/35286-pleer-konverter-vortextracker-vi53.html?p=1186069&viewfull=1#post1186069) lesnikv2 в виде .db
metamorpho
25.09.2023, 23:12
Вот эти строчки Pretty выделяет красным (синтаксическая ошибка)
#define equ .equ
#define db .db
#define dw .dw
#define ds .ds
#define org .org
#define end .end
..............
#define SAVE_POS xchg\ lhld pl_track+1\ mov m,e\ inr l\ mov m,d
.....................
pl10:
SAVE_POS
................
stack_pos:
ds MAX_NESTED_LEVEL*3
DenisGrachev
26.09.2023, 05:16
Тоже попробовал конверснуть тот плеер в 8080, только в мнемониках 8080 для tasm (а значит и для pretty). Для чистоты эксперимента пока не смотрел и даже не скачивал версию Дениса, но вряд ли будут серьезные различия. В архиве два варианта: fast - это аналог версии для z80, а в compact свернуты циклы и почти все out вынесены в процедуру.
- - - Добавлено - - -
Пока проверял только на леснике, если вдруг выявятся ошибки - поправлю.
Отлично! Я тоже причесал всё ) Сделал версию Normal и Extreme, в Extreme я там прошёлся по всем веткам/ветвлениям и всё повыкидывал, он быстрее, правда не уверен что ничего не поломал, поэтому оставил версию Normal :) Плеер в принципе в любых вариантах очень быстрый.
Также добавил версию которая играет в буфер регистров АУ и возможность поиграть в VI53 (процедуру перевода частоты взял у svofski или ivagor, уже не помню :) ) Она берёт частоты из регистров АУ и по регистрам микшера и громкостей играет в ВИ53. Чтобы поиграть обратно в АУ в этом плеере надо define play_vi53 убрать просто. Хотел использовать в игре, но оказалось что мой рыхлый формат из этой темы проигрывает чуть в размере сжатому псг, но зато сам сжимается в разы лучше пакерами чем псг-пакованый. Так что в игре оставил как есть :)
Всё лежит тут:
https://github.com/DenisGrachev/psgVector
Для перевода в PSG рекомендую использовать последние версии VortexTracker, они подчищают псг и кажется ещё убирают команду 254 чтобы лучше жалось, у меня получалось по 300байт разницы с некоторыми треками )
#define equ .equ
#define db .db
#define dw .dw
#define ds .ds
#define org .org
#define end .end
Скорее всего прекрасм может обойтись без этих строк.
Что касается макросов, то надеюсь svofski подскажет, как они оформляются у него.
Про ds идей нет, опять же svofski может подсказать или можно просто попробовать изменить аргумент на 12.
- - - Добавлено - - -
Увидел, что db64 в новой версии прекрасма поддерживается, вопрос снят.
Даже если макросов в прекрасме нет, то в данном случае (учитывая всего один короткий макрос, который используется считанные разы) это не проблема - меняем SAVE_POS на соответствующую последовательность команд.
Скорее всего прекрасм может обойтись без этих строк.
Что касается макросов, то надеюсь svofski подскажет, как они оформляются у него.
Эти строки прекрасму не нужны. А макросов в нем к сожалению нет.
То, что ds не понимает equ это ошибка. Запишу на будущее =)
metamorpho
26.09.2023, 14:19
....Готового примера с новыми плеерами у меня пока нет, есть пример с гигачадом (https://svofski.github.io/pretty-8080-assembler/?https://gist.githubusercontent.com/svofski/f41ec5939d75b69bd7a2933f81489df1/raw/a04c31d08124503cfa6799c45f7dd86658a2a10d/gigachad.asm).
Если я правильно понял, то "гигачад" проигрывает музыку через AY. А мне нужен ВИ53 (т.е. только базовый Вектор-06Ц).
------------------
ivagor, пытаясь немного понять работу нового плеера обнаружил что вместо стандартных портов есть только OUT 14# и OUT #15.
Что это за порты ? Перечитал Черезова и Лебедева там похоже об этом не пишется.
И как через них воспроизводится три канала ?
А этот плеер через ВИ53 музыку играет ?
------------------
Из Википедии: "Схема «Вектора» изначально предусматривала подключение внешнего модуля расширения памяти объёмом 64 или 256 Кбайт, который назывался «квазидиском», потому что предназначался для использования в качестве дискового накопителя."
А какие квазидиски были наиболее распространены 64 или 256 Кб ?
Что это за порты ?
Порты 14h и 15h относятся к наиболее популярному варианту подключения AY/YM к вектору. Разработали его в Кирове и назвали Sound Tracker.
А этот плеер через ВИ53 музыку играет ?
Сейчас нет, для проигрывания через ВИ53 надо добавить эмулятор AY.
- - - Добавлено - - -
ВИ53 удобнее добавлять к компактному варианту плеера, в нем порты не разбросаны по всему плееру.
metamorpho
26.09.2023, 16:46
.......Сейчас нет, для проигрывания через ВИ53 надо добавить эмулятор AY. ..........
Странно, я почему-то сделал вывод что этот плеер играет через ВИ53, ведь DenisGrachev писал в начале темы: "Поэтому пришлось написать плеер + конвертер для воспроизведения модулей из VortexTracker на ВИ53."
- - - Добавлено - - -
Правильно ли я понял, что на данный момент попрежнему нету варианта плеера, который бы играл музыку, конвертируемую из VortexTracker, через ВИ53 ?
DenisGrachev
26.09.2023, 17:08
Странно, я почему-то сделал вывод что этот плеер играет через ВИ53, ведь DenisGrachev писал в начале темы: "Поэтому пришлось написать плеер + конвертер для воспроизведения модулей из VortexTracker на ВИ53."
- - - Добавлено - - -
Правильно ли я понял, что на данный момент попрежнему нету варианта плеера, который бы играл музыку, конвертируемую из VortexTracker, через ВИ53 ?
Нету плеера в мнемониках 8080, а так только у меня в этой теме их два, но в мнемонике z80 )
Правильно ли я понял, что на данный момент попрежнему нету варианта плеера, который бы играл музыку, конвертируемую из VortexTracker, через ВИ53 ?
На данный момент есть два плеера, которые могут играть музыку из Vortex Tracker через ВИ53, ссылки на них в первом посте темы. Только надо отметить, что они в мнемониках z80 и под sjasm.
В свою конверсию плеера psgcompressor я пока ВИ53 не добавлял, но любой желающий легко может сделать это по аналогии с тем, как добавлял себе ВИ53 svofski.
DenisGrachev
26.09.2023, 18:02
Можно попробовать вот этот файлик прогнать через какой-нибудь конвертер мнемоник :) Кстати есть такие?
Тут максимально всё вычищено, нет дупов, макросов итп
https://github.com/DenisGrachev/psgVector/blob/main/music/playerVI-8080-tmp.asm
UPD: Нашёл какую-то конвертилку, вот плеер в мнемониках 8080, не ручаюсь что заработает ))
https://github.com/DenisGrachev/psgVector/blob/main/music/playerVI-8080.asm
Ему нужна метка music это где модуль лежит ) играть фрейм mus_play, перед этим mus_init
metamorpho
26.09.2023, 20:29
.....Нашёл какую-то конвертилку, вот плеер в мнемониках 8080, не ручаюсь что заработает ))
DenisGrachev, спасибо !!
Собрал запустил, но пока не работает :)
DenisGrachev
27.09.2023, 07:21
DenisGrachev, спасибо !!
Собрал запустил, но пока не работает :)
Поправил файлик, брать там же ) Только ты пытаешься проиграть файл написанный без учёта ограничений ВИ, у тебя будет каша.
Прикрепил текстовичок с музыкой написанной с учётом ограничений ВИ
79558
Увы, автоматом не получилось ) я попробовал убрать явные ошибки автоконверта, он теперь начинает играть и падает, тут мои полномочия всё, я не знаю синтаксис 8080 чтобы глазами увидеть ошибки )
metamorpho
28.09.2023, 12:29
Насколько я понял на данный момент есть плеер в синтаксисе 8080, который играет музыку через ВИ53.
Но множество музыки (написанной до этого) не получиться проиграть на этом плеере, поскольку в этой музыке не учитывается ограничения ВИ53.
Поэтому чтобы играть музыку на этом плеере необходимо:
1. Написать музыку в Vortex Tracker с учётом ограничений ВИ53.
Это можно сделать самому или обратиться к тем кто пишет музыку на Vortex Tracker,
чтобы они написали музыку с учётом ограничений для ВИ53.
Ограничения и возможности в Vortex Tracker для ВИ53:
Ограничения: только прямоугольный тон, нет огибающей, нет шума, нет громкости.
Возможности: поддерживаются Орнаменты, Инструменты (только маска тона и отклонение тона от базового значения, накопление не поддерживается).
Команды номер B,4,5
2. Далее эту музыку преобразуем в формат psg, для этого используем:
- последние версии VortexTracker (https://github.com/z00m128/vortextracker25/releases/tag/2.5 похоже здесь можно его взять )
- или AY_Emul (https://bulba.untergrund.net/emulator.htm похоже здесь можно его взять )
3. Далее полученный файл.psg сжимаем специальным компрессором
(https://github.com/vasilenkoroman/psg_compressor/releases здесь можно скачать psg_pack.exe)
4. Далее вставляем эту музыку например в этот тестовый файлик (см. в приложении) после метки "music:", компилируем и наслаждаемся музыкальным шедевром.
---------------
А как пользоваться psg_pack.exe ?
Я пробовал такой вариант: psg_pack.exe file.psg - результата никакого.
DenisGrachev
28.09.2023, 12:43
Насколько я понял на данный момент есть плеер в синтаксисе 8080, который играет музыку через ВИ53.
Но множество музыки (написанной до этого) не получиться проиграть на этом плеере, поскольку в этой музыке не учитывается ограничения ВИ53.
Поэтому чтобы играть музыку на этом плеере необходимо:
1. Написать музыку в Vortex Tracker с учётом ограничений ВИ53.
Это можно сделать самому или обратиться к тем кто пишет музыку на Vortex Tracker,
чтобы они написали музыку с учётом ограничений для ВИ53.
Ограничения и возможности в Vortex Tracker для ВИ53:
Ограничения: только прямоугольный тон, нет огибающей, нет шума, нет громкости.
Возможности: поддерживаются Орнаменты, Инструменты (только маска тона и отклонение тона от базового значения, накопление не поддерживается).
Команды номер B,4,5
2. Далее эту музыку преобразуем в формат psg, для этого используем:
- последние версии VortexTracker (https://github.com/z00m128/vortextracker25/releases/tag/2.5 похоже здесь можно его взять )
- или AY_Emul (https://bulba.untergrund.net/emulator.htm похоже здесь можно его взять )
3. Далее полученный файл.psg сжимаем специальным компрессором
(https://github.com/vasilenkoroman/psg_compressor/releases здесь можно скачать psg_pack.exe)
4. Далее вставляем эту музыку например в этот тестовый файлик (см. в приложении) после метки "music:", компилируем и наслаждаемся музыкальным шедевром.
---------------
А как пользоваться psg_pack.exe ?
Я пробовал такой вариант: psg_pack.exe file.psg - результата никакого.
В целом всё правильно
Паковать psg надо с указание степени сжатия и выходного файла, например
psg_pack -l 4 music.psg music.tbk
Возможности в Vortex Tracker для ВИ53 если играть псг дамп несколько шире чем моим первым плеером, но музыка хуже сжимается пакерами и растёт в размерах вместо с длительностью мелодии
Ограничения: только прямоугольный тон, нет огибающей, нет шума, нет громкостей.
Возможности: поддерживаются Орнаменты, Инструменты без шума и огибающей
Команды номер 1,2,3,B,4,5,6
Если коротко то всё что делается чисто частотой - работает )
Всегда есть вариант поиграть на АУ, тогда тебе надо брать плеер ivagor в мнемонике 8080.
Если будешь делать игру то ещё будет проблема как совмещать со звуками, у нас в Старой Башне музыка в два канала таймера, в третьем звуковые эфекты.
metamorpho
05.10.2025, 22:38
Подскажите, в чём может быть проблема:
Вот отсюда
https://zx-pk.ru/threads/35286-pleer-konverter-vortextracker-vi53.html?p=1186069&viewfull=1#post1186069
взял код из player8080_example.zip и lesnikv2asm.zip
вот эти файлы объединил psgcomp.asm + l4_psg_player_compact.asm + lesnikv2asm
вставляю в прекрасный ассемблер и идёт какой-то гудок музыки нет.
Вот файл который вставляю
вставляю в прекрасный ассемблер и идёт какой-то гудок музыки нет.
у тебя закомментирован
#define SAVE_POS xchg\ lhld pl_track+1\ mov m,e\ inr l\ mov m,d
Или раскомментируй, или вручную вставь по месту, например так (https://caglrc.cc/pretty-testing/?https://gist.githubusercontent.com/svofski/c9c4917d5101645101c2a899fdef5639/raw/c93f5c237e85a71fdab356784740425e55adee24/lesnik.asm).
P.S. я только не понял при чем тут ви53. Если возникнет потребность продолжить обсуждение, предлагаю сделать это в другой какой-нибудь теме. Upd: например, в этой (https://zx-pk.ru/threads/36375-ay-muzyka-na-vektore.html).
metamorpho
06.10.2025, 10:18
у тебя закомментирован
#define SAVE_POS xchg\ lhld pl_track+1\ mov m,e\ inr l\ mov m,d
Или раскомментируй, или вручную вставь по месту, например так (https://caglrc.cc/pretty-testing/?https://gist.githubusercontent.com/svofski/c9c4917d5101645101c2a899fdef5639/raw/c93f5c237e85a71fdab356784740425e55adee24/lesnik.asm).
P.S. я только не понял при чем тут ви53. Если возникнет потребность продолжить обсуждение, предлагаю сделать это в другой какой-нибудь теме.
svofski, спасибо !! теперь всё работает.
Закоментировано было потому что я вручную сделал почти все вставки (их всего должно быть три) этого кода (кроме одного места - его я действительно пропустил), поэтому эта строка была не нужна.
p.s. написал в этой теме поскольку она связана с кодом из этой темы (и поскольку возможная ошибка которая могла выявиться, могла оказаться связана с плеером из этой темы - однако всё оказалось проще) - поэтому других более подходящих тем не нашёл.
В качестве практики использования новых фич прекрасма сконвертил плеер DenisGrachev в 8080/прекрасм. Сделал рыбой https://caglrc.cc/pretty-testing/?vi53player
По идее если в скрипт для сборки вкрутить C99-препроцессор, то может и tasm-ом можно собрать, но я пока не пробовал. Основная причина почему такая требовательность -- это метки в dup блоках. В принципе достаточно прогнать препроцессор один раз, потому что плеер редко требует модификаций.
Вдогонку про dup блоки и интересные эксперименты с локальными метками силами препроцессора. Когда я сам поворошил этот исходник стало интересно зачем там развернут такой здоровенный макрос. Прибыли в скорости это вроде не дает. Наверное в контексте того, подо что этот плеер писался, смысл был, но сейчас его кажется не осталось. Так что хозяйке на заметку, можно этот плеер переписать проще и компактнее.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot