Но здесь имеется нюанс: Звук всё равно получается "бинарным" - как модем.
Имеет смысл попробовать заряжать конденсатор через резистор, сразу звук станет не бинарным. На ардуино у меня получился резистор 1к, конденсатор 0.01-0.1 мкФ. Тогда записывать звук надо в виде продолжительности сигнала INTE. Чем выше амплитуда, тем дольше продолжительность. Выбрать, например, 4 дискретных значения для продолжительности - два бита. В этом случае звук можно будет хорошо сжимать или удобно упаковывать. Даже без конденсатора должно получиться, если подстроиться под запаздывание диффузора.
13 Apr 2024 05:34
Alikberov
Maniac
Joined: 14 Oct 2019 18:10 Posts: 328 Location: Tashkent
Итак, на сегодня тему проигрывателя музыки по технологии DSD можно закрыть. Дальше оптимизировать уже некуда: Практически предельная производительность!
Shaos wrote:
Давай лучше плеер выкатывай без F1 и F3 - и там посмотрим
Уже не сегодня. На аудиоплеер много усилий потратил.
Shaos wrote:
Вот "мусорный" мультик с попроавленным под экспериментальный формат плеером в нулевой странице:
"Мусорный мультик"...
Shaos wrote:
Поэтому возвращаемся к изначальной идее звук в старшем бите один раз на каждые 4 символа...
Переписывать весь код нужно, как уже понял и сказал выше. Так как он по сути - сам генератор кода, лучше довести его до ума и сделать гибким.
P.S.: Пока выкладываю архивы с плеером и двумя мелодиями для оценки. (Судя по длительности, темп слегка ускорен: На "музыкальных ROM-Дисках" это нужно учитывать.) Теперь я точно убедился, что лучшего качества звука уже не добиться (по крайнер мере, с моим уровнем).
Attachments:
File comment: Direct Stream Player Play-DSD.rkr.zip [259 Bytes]
Downloaded 13 times
Пытаюсь превратить текущий плеер в бездырочный (без F1 и F3) - пока выходит 7.43 FPS при звуке в старшем бите каждого четвёртого символа и звук стал заметно лучше
Сейчас осталось заполнение экрана правильно поправить - уже весь мозг сломал
Attachment:
Screenshot from 2024-04-13 14-28-05.png [ 63.21 KiB | Viewed 657 times ]
P.S. Каждый четвёртый символ это 16 отсчётов звука на строку - может не мудрствовать лукаво, а просто тупо в 2 байта их упаковать и записывать в начало каждой строки побитно двигая в порт по ходу отрисовки символов этой строки?
P.P.S. Тогда уже и адрес строки можно туда же присовокупить до кучи (адрес с конца для LXI SP) - будет 68 байт на строку или 9.6 полных кадров на страницу (коих может быть больше, если от кадра к кадру будет много повторяющихся строк)
P.P.P.S. В этом случае даже прогрессбар можно сделать опциональным (и со звуком), правда оно не будет кратно 256 и придётся либо химичить, либо укорачивать видимую область строки до 60 символов...
Пытаюсь превратить текущий плеер в бездырочный (без F1 и F3) - пока выходит 7.43 FPS при звуке в старшем бите каждого четвёртого символа и звук стал заметно лучше
Сейчас осталось заполнение экрана правильно поправить - уже весь мозг сломал
Уже стало лучше
Attachment:
Screenshot from 2024-04-13 14-50-16.png [ 51.99 KiB | Viewed 655 times ]
Осталось понять как начальное смещение правильно установить...
Screenshot from 2024-04-13 18-20-48.png [ 60.57 KiB | Viewed 628 times ]
Даже немного выровнял по сравнению с оригиналом, чтобы ровно по середине окна Emu80 с урезанными краями было
Получилось 7.46 FPS с "плавным" звуком (в том числе в титуле и статусе), а также номером страницы в правом-верхнем углу:
Code:
R,1FF G
Тут правда такой момент получился - чтобы звук по длине совпал с видеорядом, пришлось считать, что в кадре не 800 звуковых отсчётов (и не 803, как можно было бы предположить при двух дополнительных озвученных строки на каждые 10 кадов), а 818.46
Значит ли это, что титул и статус играются не раз в 10 кадров, а в каждом кадре? Наверное их лучше таки убрать (либо перейти на 100% гибкую систему, когда у каждой строки будет адрес откуда мы её "пляшем" и тогда титул и статус можно добавлять, а можно не добавлять - по желанию автора видео)...
P.S. Понял! Это мой косяк! Сейчас пережму...
...пережал - теперь тут плеер в каждой странице и ровно 803.2 звуковых отсчёта на кадр или 5992 Гц при частоте кадров 7.46
Также написал в первое сообщение описание текущего формата (округлив FPS до 7.5):
Ромдиск Апогея по схеме vinxru делится на страницы по 32 килобайт каждая - в одну такую страницу влезает 10 кадров 64x50 (3200) один за другим, со двигом к концу, чтобы освободить первые 768 байт страницы под плеер (0x0000...0x027F) и 2 спец.строки - статус (0x0280...0x02BF) и титул (0x02C0...0x02FF). Строки располагаются последовательно друг за другом, но каждая строка записана задом-наперёд т.к. копирование в экранную область происходит через указатель стека с помощью команды PUSH. Каждый четвёртый символ своим старшим битом задаёт значение сэмпла звука, который будет послан в магнитофонный выход. В пределах кадра получается 800 сэмплов звука или 8000 сэмплов на страницу плюс ещё 32 сэмпла записаны в строках титула и статуса - т.е. всего 8032 в странице или в среднем 803.2 сэмпла на кадр. Текущая версия плеера выдаёт порядка 7.5 FPS видео (и 6 кГц 1-битного звука), что позволяет записать в 8 мегабайтный ромдиск до 341 секунды (5 мин 41 сек).
Только что обнаружил, что в плеере есть перемотка!!!
P.S. А кто такие ALSTROEMERIA RECORDS?
Attachment:
Screenshot from 2024-04-13 20-24-44.png [ 33.7 KiB | Viewed 607 times ]
P.P.S. Это типа официальные владельцы музончика?
Attachment:
Screenshot from 2024-04-13 20-51-27.png [ 80.46 KiB | Viewed 606 times ]
P.P.P.S. Я думаю эту версию плеера рождённую за 1 неделю общих усилий официально можно считать публичным релизом v1.0
P.P.P.P.S. Позже добавил в архив PUBLIC DOMAIN исходник конвертера vhs5t-maker.c (но следует учесть, что самая новая версия этого архива всегда будет прицеплена к первому сообщению этой темы)
Attachments:
File comment: Конвертеры и плеер - бинарник и сырец - сорри за сырцы в таком виде - сначала дизассемблировал через 86rk.ru, а потом уже правил :) vhs5t.zip [11.43 KiB]
Downloaded 15 times
P.S. Каждый четвёртый символ это 16 отсчётов звука на строку - может не мудрствовать лукаво, а просто тупо в 2 байта их упаковать и записывать в начало каждой строки побитно двигая в порт по ходу отрисовки символов этой строки?
P.P.S. Тогда уже и адрес строки можно туда же присовокупить до кучи (адрес с конца для LXI SP) - будет 68 байт на строку или 9.6 полных кадров на страницу (коих может быть больше, если от кадра к кадру будет много повторяющихся строк)
P.P.P.S. В этом случае даже прогрессбар можно сделать опциональным (и со звуком), правда оно не будет кратно 256 и придётся либо химичить, либо укорачивать видимую область строки до 60 символов...
Я тут прикинул - теперешний плеер декодирует около 377 строк в секунду, т.е. если строки будут иметь адреса (предположим, что в скорости оно не сильно потеряет), то для пущей эстетики можно делать видео не в полный рост, а скажем letterbox (16:9 с чёрными полосками сверху и снизу) - это будет примерно 37 строк, что должно дать 10 FPS...
Я попытался переделать код и удалить короткие строки (F1 оставляем для формата в 74 байта на строку, так как важна не сама длина пакета ПДП, а её стабильность), а вставка STA по заданной маске. Но код - умирает! (Собственный код в исходном виде поправить не могу! )
Да Вы проделали внушительную работу по взлому моего кода!
После стабилизации варианта я выложу исходник в свой репозиторий, как и Победит.
Сейчас он выглядит как-то так.
Attachments:
Снимок экрана_2024-04-14_03-49-58.png [ 54.5 KiB | Viewed 554 times ]
14 Apr 2024 02:07
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22769 Location: Silicon Valley
Users browsing this forum: No registered users and 1 guest
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum