PDA

Просмотр полной версии : Плеер-конвертер 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

svofski
13.09.2023, 10:35
Было бы интересно сравнить с эмуляцией AY ivagor-a.

DenisGrachev
13.09.2023, 10:56
Было бы интересно сравнить с эмуляцией AY ivagor-a.

Ну если только как-то сконвертить тестовый трек из моего примера в rmp ) насколько я помню там rmp треки используются в текущем виде

ivagor
13.09.2023, 11:01
rmp - это пример использования (один из возможных), а так "эмулятор AY" не зависит от конкретного проигрывателя, он работает на уровне регистров.

DenisGrachev
13.09.2023, 11:12
rmp - это пример использования (один из возможных), а так "эмулятор AY" не зависит от конкретного проигрывателя, он работает на уровне регистров.

Ну т.е. как бы играет нативный АУ плеер в виртуальные регистры и ты их уже обрабатываешь? или это препроцесс в какой то свой формат? спектрумисты последнее время ходят вокруг psg и его сжатия всякими разными бяками )

svofski
13.09.2023, 11:25
Ну т.е. как бы играет нативный АУ плеер в виртуальные регистры и ты их уже обрабатываешь? или это препроцесс в какой то свой формат? спектрумисты последнее время ходят вокруг 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. Т.е у меня задача не что-то там наконвертировать из одного формата в другой, а дать музыканту возможность написать трек в вортексе и чтобы он один в один звучал на векторе ) В идеале надо сделать кастомый билд вортекса конечно, вырезав всё что не подойдёт под ви )

Прикрепил в первый пост тестовый трек

svofski
13.09.2023, 11:44
Брать твой пт3 нет никакого смысла, потому что он написан не для ви53 Там и шум и прочее юзается.
PT3 может быть и нет. Ты возьми vt2, он уже обработан для совместимости с ви53.

DenisGrachev
13.09.2023, 12:07
PT3 может быть и нет. Ты возьми vt2, он уже обработан для совместимости с ви53.

Не особо он там обработан, сходу там огиба и шумы есть в инструментах ) я вообще не знаю как ещё объяснить что разные задачи то с эмулятором АУ
Возьми у меня vt2 под ви53 написанный, не обработанный и в вашем проиграй, если уж сильно сравнить надо. Думаю разницы не будет. А вот наоборот конечно будет, у меня аскетично всё

https://github.com/DenisGrachev/vt2vi53/tree/main/music

ivagor
13.09.2023, 12:09
Ну т.е. как бы играет нативный АУ плеер в виртуальные регистры и ты их уже обрабатываешь?
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 жмётся ими. На досуге поиграюсь!

svofski
13.09.2023, 13:00
Не особо он там обработан, сходу там огиба и шумы есть в инструментах ) я вообще не знаю как ещё объяснить что разные задачи то с эмулятором АУ


Уже плохо помню, но предполагаю, что я выкусил только то, что давало совсем уж неблагозвучный результат в AY-Emul. А может быть и не выкусывал, а просто подогнал что-то для удобства зацикливания. Твой плеер не пропускает мимо ушей непонятные для него вещи? Чем критично наличие огибающей, если все равно ее воспроизвести никак нельзя?

Задача по-моему одна и та же -- играть музыку на ви53. Просто ты сразу говоришь, что есть ограничения и гипотетический музыкант должен это понимать. А AY-Emul старается как может, при этом не всегда заранее понятно, что получится. Но все равно, если бы был такой музыкант, который заранее знает про ограничения, было бы лучше. Отчасти AY-Emul это от отчаяния, потому что например в кругу полутора интересующихся Вектором человек трудно найти музыканта. Надеюсь, что с появлением твоего инструмента станет лучше. Хорошо бы конечно иметь специальный трекер, чтобы не держать ограничения в уме.

Есть MONOTONE (https://github.com/MobyGamer/MONOTONE), но я чего-то не пойму, может ли он несколько каналов, или он строго на писи спикер в один голос.

ivagor
13.09.2023, 13:13
наверно проще взять какой-нибудь из современных psg пакеров и их плеер перенести
Плеер tbk_psg_packer_1_1 я адаптировал для 8080, это мягко говоря не сложно, но и толку от этого мало. zx0 сжимает лучше даже при использовании кольцевого буфера 256 байт, особенно если разбить регистры, как делал svofski. Простой распаковщик psg интересен своей скоростью и возможностью выровнять все ветки, когда не просто раз в прерывание записываем значения в таймер, а пытаемся регулировать громкость ШИМом, но это специфический частный случай.

svofski
13.09.2023, 13:16
Ох, я почему-то был уверен что плеер 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 это весело, но скорее всего не так быстро.

ivagor
13.09.2023, 16:21
Самый новый от Ромы Василенко кажется получше жмёт
Да, этот повеселее даже на уровнях 1-3, не говоря уже про 4-5.

svofski
13.09.2023, 17:04
потоковый zx0 это весело, но скорее всего не так быстро.
Гигачад-16 по моим замерам для AY, то есть 14 каналов, съедает от 5 до 20 строк растра, а плеер stc 29-43. Если потоков будет всего три, наверное будет быстрее. Но это надо закапываться, чтобы все это испытать и сделать замеры.

- - - Добавлено - - -


Я хотел сделать урезанный вортекс, даже делфи 7 поставил и сбилдил из исходников, но понял что мои познания в делфях остались в начале нулевых )

Трекер -- это просто очень неудобный текстовый редактор. Если сделать плеер, который подхватывает на лету изменения файла, никакого трекера не нужно и музыку можно будет писать в терминале в vim.

ivagor
13.09.2023, 17:11
Гигачад-16 по моим замерам для AY, то есть 14 каналов, съедает от 5 до 20 строк растра, а плеер stc 29-43
Для сравнения проигрыватель сжатого psg (tbk) в векторовском воплощении от примерно 200 до 1600 тактов. Но, как все уже знают, степень сжатия меньше.


Есть MONOTONE, но я чего-то не пойму, может ли он несколько каналов, или он строго на писи спикер в один голос
Насколько понимаю, то что он скидывает в дамп PIT, который проигрывает PLAYER.ASM, рассчитано на одноканальный таймер при частоте прерываний 60 Гц. Но в принципе из исходника можно получить и "параллельное" исполнение (проигрывателей для которого так сразу и не видно, но не сильно искал). Одноканальный вариант в принципе должен быть интересен и постсоветским обладателям ВИ53 с одним звуковым каналом, может кто-нибудь попробует.

svofski
13.09.2023, 17:22
Но, как все уже знают, степень сжатия меньше.
В принципе, если не жалко всего кваза на один музон, то можно сжать и по столбцам и распаковать их целиком и потом быстро играть. Поточная распаковка это все-таки компромисс.

Ну и кстати еще неизвестно как бы выглядела 14-поточная распаковка, если бы ты ее написал с нуля. Может быть получилось бы сделать эквивалент гигачада-16 за 1590 тактов.

ivagor
13.09.2023, 18:07
если не жалко всего кваза на один музон
Зачем сразу кваз. Для примера LESNIKv2.pt3 (Wally/Сергей Нилов) на котором я экспериментировал - 8665 байт. Сжатый psgpackerом tbk - 21492 байта. А сжатый вышеупомянутым psgcompressorом (распаковщика для 8080 на сегодня нет) с уровнем сжатия 5 - 14690 байт.

parallelno
14.09.2023, 22:44
DenisGrachev, Супер! Спасибо что делишься этим!
И спасибо svofski, ivagor, за обсуждение!

breeze
14.09.2023, 23:05
Ох! Ну раз уж появился плеер под вектор, то реализацию под Байт было супер увидеть тоже ;) Один из немногих спектрумов с ВИ53 на борту ;)

NEO SPECTRUMAN
15.09.2023, 00:32
Один из немногих спектрумов с ВИ53 на борту
ипуляцию которого не завезли
да и вообще это зубодробительный чип
вплане кривости бубулирования

- - - Добавлено - - -

АНЕП

можно набрать конфиг зх+ви53 в b2m-уляторе
я даже какуюто пищалку писал

но потом оказалось что в интоле тупые быдлятские мудаки сделали редкостную мурню вместо того чтобы как надо (в одном режиме ВНЕЗАПНО шагают с шагом в 2 + костыли)
и...

DenisGrachev
15.09.2023, 05:02
Ох! Ну раз уж появился плеер под вектор, то реализацию под Байт было супер увидеть тоже ;) Один из немногих спектрумов с ВИ53 на борту ;)

не знал даже про такое, офигеть :) есть где описание портов?

ivagor
15.09.2023, 06:12
Если уж говорить о советских ретрокомпах с трехканальным звуком таймера, то стоит привести более полный список. По алфавиту (что вспомнил): Апогей, Байт, Вектор, Партнер с МЦПГ, ПК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

newart
15.09.2023, 10:26
Уже плохо помню, но предполагаю, что я выкусил только то, что давало совсем уж неблагозвучный результат в AY-Emul. А может быть и не выкусывал, а просто подогнал что-то для удобства зацикливания. Твой плеер не пропускает мимо ушей непонятные для него вещи? Чем критично наличие огибающей, если все равно ее воспроизвести никак нельзя?

Задача по-моему одна и та же -- играть музыку на ви53. Просто ты сразу говоришь, что есть ограничения и гипотетический музыкант должен это понимать. А AY-Emul старается как может, при этом не всегда заранее понятно, что получится. Но все равно, если бы был такой музыкант, который заранее знает про ограничения, было бы лучше. Отчасти AY-Emul это от отчаяния, потому что например в кругу полутора интересующихся Вектором человек трудно найти музыканта. Надеюсь, что с появлением твоего инструмента станет лучше. Хорошо бы конечно иметь специальный трекер, чтобы не держать ограничения в уме.

Есть MONOTONE (https://github.com/MobyGamer/MONOTONE), но я чего-то не пойму, может ли он несколько каналов, или он строго на писи спикер в один голос.

Оригинал ВИ53 же был и в каких-то западных компах? И в спектруме был. Да и вообще круг людей могущих написать музыку заметно шире поклонников Вектора.
Даже если музыка будет играть на Векторе. Очень много западных чиптюн музыкантов пишет музыку под множество разных платформ. Culor, AceMan и так далее.

ivagor
15.09.2023, 10:47
Да уж, без твоих подсказок и не завести эмуль
А в чем проблема? 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
15.09.2023, 21:13
надо дружно попросить 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

ivagor
25.09.2023, 17:06
Тоже попробовал конверснуть тот плеер в 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

ivagor
25.09.2023, 20:16
Добавил пример (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 ?

svofski
25.09.2023, 21:55
А если используется не TASM а Pretty ассемблер, то как внедрить в него файл с музыкой lesnikv2.5 ?

В прекрасм только .db ....
Готового примера с новыми плеерами у меня пока нет, есть пример с гигачадом (https://svofski.github.io/pretty-8080-assembler/?https://gist.githubusercontent.com/svofski/f41ec5939d75b69bd7a2933f81489df1/raw/a04c31d08124503cfa6799c45f7dd86658a2a10d/gigachad.asm).

ivagor
25.09.2023, 21:55
В pretty можно использовать base64 (например как здесь (https://svofski.github.io/pretty-old-8080-assembler/), хотя это вроде старая версия).

svofski
25.09.2023, 21:58
хотя это вроде старая версия
Текущая версия тут https://svofski.github.io/pretty-8080-assembler/

ivagor
25.09.2023, 22:10
В прекрасм только .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байт разницы с некоторыми треками )

ivagor
26.09.2023, 06:21
#define equ .equ
#define db .db
#define dw .dw
#define ds .ds
#define org .org
#define end .end
Скорее всего прекрасм может обойтись без этих строк.
Что касается макросов, то надеюсь svofski подскажет, как они оформляются у него.
Про ds идей нет, опять же svofski может подсказать или можно просто попробовать изменить аргумент на 12.

- - - Добавлено - - -

Увидел, что db64 в новой версии прекрасма поддерживается, вопрос снят.

ivagor
26.09.2023, 09:06
Даже если макросов в прекрасме нет, то в данном случае (учитывая всего один короткий макрос, который используется считанные разы) это не проблема - меняем SAVE_POS на соответствующую последовательность команд.

svofski
26.09.2023, 10:58
Скорее всего прекрасм может обойтись без этих строк.
Что касается макросов, то надеюсь 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 Кб ?

ivagor
26.09.2023, 15:09
Что это за порты ?
Порты 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 )

ivagor
26.09.2023, 17:11
Правильно ли я понял, что на данный момент попрежнему нету варианта плеера, который бы играл музыку, конвертируемую из 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

вставляю в прекрасный ассемблер и идёт какой-то гудок музыки нет.

Вот файл который вставляю

svofski
06.10.2025, 01:51
вставляю в прекрасный ассемблер и идёт какой-то гудок музыки нет.
у тебя закомментирован

#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. написал в этой теме поскольку она связана с кодом из этой темы (и поскольку возможная ошибка которая могла выявиться, могла оказаться связана с плеером из этой темы - однако всё оказалось проще) - поэтому других более подходящих тем не нашёл.

svofski
12.10.2025, 17:36
В качестве практики использования новых фич прекрасма сконвертил плеер DenisGrachev в 8080/прекрасм. Сделал рыбой https://caglrc.cc/pretty-testing/?vi53player


По идее если в скрипт для сборки вкрутить C99-препроцессор, то может и tasm-ом можно собрать, но я пока не пробовал. Основная причина почему такая требовательность -- это метки в dup блоках. В принципе достаточно прогнать препроцессор один раз, потому что плеер редко требует модификаций.

svofski
13.10.2025, 14:55
Вдогонку про dup блоки и интересные эксперименты с локальными метками силами препроцессора. Когда я сам поворошил этот исходник стало интересно зачем там развернут такой здоровенный макрос. Прибыли в скорости это вроде не дает. Наверное в контексте того, подо что этот плеер писался, смысл был, но сейчас его кажется не осталось. Так что хозяйке на заметку, можно этот плеер переписать проще и компактнее.