Просмотр полной версии : Самый качественный MOD плеер под Covox исходники и продолжение проекта
Немного истории , первый мод плеер был написан в Харькове Константином Белоусом (Cobra) , в 1994 году , он был рассчитан на pentagon 512к + turbo 7мГц + cash 2kb + Covox (#FB) ,читал напрямую ms-dos дискеты и поддерживал кемпстон и AY мышь ,при этой конфигурации он мог молотить с частотой выборки около 31 кГц , что больше ни кто так и не смог повторить в коде , последующие версии которые были доступны обществу могут от 10 до 20.5 кГц при таком же конфиге ,соответственно ощутимо хуже звук чем в прилагаемой версии.
Версия этого плеера как я понял сохранилась в единственном экземпляре у меня одного и свет её никогда не видел. Сохранилась по причине того ,что в те времена мы писали вместе , дружили и соседствовали неподалеку.
Мне все хотелось прикрутить к этому плееру читалку для HDD и сделать универсальным под разные машины , но для этого его надо было раздебажить , я несколько раз брался ,но увы меня не хватало на столь объемное дело , это равносильно раздебажить хорошую игруху.
Но вот наконец то уперся , три недели работы ушло на дизасм и базовую правку кода , поэтому выкладываю рабочий исходник , который пока можно собрать в сжасме. И начинаю переносить все в аласм так как я пишу только на реале , и по мере свободного времени начинаю переписывать его под задуманное.
Исходник базовый ,только с рабочими метками , там еще есть немного работы с переводом некоторых таблиц к нужному виду. Но полностью рабочий.
68988
https://a.radikal.ru/a39/1905/f6/3d3493e9038at.jpg (https://a.radikal.ru/a39/1905/f6/3d3493e9038a.png)
на github размещай проект
shurik-ua
12.05.2019, 20:03
помню был такой плеер с кешем и ковоксом и мс-дос, там ещё мышь нарисована была - но на этот не похож
вот на твоём же канале ) -
https://www.youtube.com/watch?v=LYsv-hFtCzU
помню был такой плеер с кешем и ковоксом и мс-дос, там ещё мышь нарисована была - но на этот не похож
Да , это продолжение от этой версии ,но в продолжении увы низкая выборка и хуже звук. Поэтому и затеял дизасм.
shurik-ua
12.05.2019, 20:54
а фат драйвер какой юзаешь ?
а фат драйвер какой юзаешь ?
Где ? в плеере код писан 1994 году , я буду прикручивать немо ,какой еще не решил , хотелось бы что то готовое найти , что бы вилесипэд не изобретать , в dnaos хорошая реализация и на сколько успел потестить правильная ,может оттуда выдеру.
shurik-ua
12.05.2019, 21:13
есть у ТС-Лабсов неплохой с длинными именами и всеми плюшками - лучше его выдирать из их wild-командера.
ещё у меня есть одна из первых ихних версий которую они планировали в ПЗУ зашивать - код занимает 6кб и 1кб под переменные.
но лучше новую выдернуть.
есть у ТС-Лабсов неплохой с длинными именами и всеми плюшками - лучше его выдирать из их wild-командера.
Вот так не хочется выдирать ,не быстрое это дело как мне кажется ,надо ж не просто выдрать ,а опять дебажить.
А вот взять из dna проще , да и давно хотел zet9 отыскать ,создателя dna ,он под Харьковом вроде бы живет,если не переехал ,вот как раз и повод )
NEO SPECTRUMAN
13.05.2019, 03:27
Вот так не хочется выдирать ,не быстрое это дело как мне кажется ,надо ж не просто выдрать ,а опять дебажить.
А сорцов они не дадут?
- - - Добавлено - - -
вот что то так валяется
https://github.com/tslabs/zx-evo/tree/master/pentevo/soft/WC
https://github.com/tslabs/zx-evo/blob/master/pentevo/soft/WC/source/READ_ME.TXT
на github размещай проект
Когда код оформлю до вида - для человеков ,то выложу туда.
Сегодня еще одну табличку разобрал , она оказывается и не нужна , преобразование семплов из знаковых в беззнаковые , это делается одним старшим битом , не нужна таблица , но тогда очень молоды мы были (17-18 лет) сами не додумались ,и ни кто не подсказал )))
NEO SPECTRUMAN
13.05.2019, 10:56
Версия этого плеера как я понял сохранилась в единственном экземпляре у меня одного и свет её никогда не видел.
так выложи еще какой нить трд с примерами
чтоб запустить потестить без компилирования
ато мне лень
некоторые просто не умеют
если пригодно к использованию
можно\нужно отправить на виртуалтырыдос
так выложи еще какой нить трд с примерами
чтоб запустить потестить без компилирования
ато мне лень
некоторые просто не умеют
если пригодно к использованию
можно\нужно отправить на виртуалтырыдос
Надо за форумом следить , а не во флеймах сидеть :rolleyes: - https://zx-pk.ru/threads/26977-pentagon-obshchaya-plata-dorabotok.html?p=887844&viewfull=1#post887844
george128
13.05.2019, 14:20
Добрый день,
я брал драйвер от EVO, предварительно поубирав обработку вызовов по RST:
https://bitbucket.org/george128/fat_commander.git
использовал masm. Оно удобно что поддерживает не только NEMO, но и Z-controller.
Работает на обычном NEMO контроллере. Все по отдельным файлам. Думаю разобраться будет легко.
NEO SPECTRUMAN
13.05.2019, 16:57
Надо за форумом следить , а не во флеймах сидеть
ну да
нужно в каждой теме про платы расширения в хардварном разделе
выжидать
а не вкинет ли кто нибудь редкий мод плеер :)
да и тут слежение за парой тройкой тем
жрет дофига времени
надо бы как то разлогинитсо обратно
- - - Добавлено - - -
Конечно пришлось поплясать с бубном
чтоб вытянуть мод-ы обратно из этого тд0 :v2_scare:
какая прога умеет загонять мсдос диски в td0 туда сюда?
витаминотюн не берет о_О
- - - Добавлено - - -
Незнаю
мне моно звучание на такой частоте дискретизации
понравилось большо
чем унылое стерео на ПыЦэ плеерах
чтоб вытянуть мод-ы обратно из этого тд0
А зачем вытягивать или ты на реал перегонял ? анриал читает td0 , образы теледиском делал.
NEO SPECTRUMAN
13.05.2019, 17:25
А зачем вытягивать или ты на реал перегонял ?
чтоб сравнить с ПЦ-шными плеерами
- - - Добавлено - - -
анриал читает td0
он то читает
говорю за ПЦшный софт
чтоб быстро закинуть\не закинуть файлы в образ
щас я перегнал в FDD каким то конвертером (trx2x)
а потом натравил сверху winimage
куча программ хоть и поддерживают тд0
поддерживают только cpm trdos-овские файловые системы...
да и чтоб закинуть свои моды
тожо нужно...
но тут вопрос другой
в каких форматах можно подсунить мсдос диски анрилу
и в чем на эти образу можно накидать файлов
в каких форматах можно подсунить мсдос диски анрилу
и в чем на эти образу можно накидать файлов
я делаю td0 с реальных дискет ms-dos теледиском
Evgeny Muchkin
15.05.2019, 20:35
не только NEMO, но и Z-controller
А SMUC? Как же смук? ;)
А SMUC? Как же смук?
а откуда на скорпе кеш появится ?
можно конечно впечатать страницу памяти, но это сильно изменит логику работы
Был именно такой плеер, как на картинке в первом посте в коллекции, звук был великолепный.
Получается, что свет он видел, или были разные версии при одном и том же визуале?
Картинку очень хорошо помню с тех времен.
Был именно такой плеер, как на картинке в первом посте в коллекции, звук был великолепный.
Получается, что свет он видел, или были разные версии при одном и том же визуале?
Картинку очень хорошо помню с тех времен.
О круто , значит он пролез в свет , а если можно подробнее в какие годы , и может в курсе как приплыл в ваши края , тоже на пентагоне слушали ?
Может где то остался ? Интересует есть ли на картинке на букве P в слове patern фиолетовый атрибут. Да и вообще все что с ним связано.
или были разные версии при одном и том же визуале?
После 95 года проект развивался без меня ,поэтому возможно. Версия 2.0 которая на его основе сделана, получила удобства и мультиплатформенность но потеряла качество.
PS тем временем колупаю и исходник уже из жестко привязанного к адресам стал динамическим.
NEO SPECTRUMAN
16.05.2019, 05:24
PS тем временем колупаю и исходник уже из жестко привязанного к адресам стал динамическим.
а толку когда оно уже наверно в аласме :)
а толку когда оно уже наверно в аласме
Вот вообще не смог понять о чем ты...
NEO SPECTRUMAN
16.05.2019, 08:23
Вот вообще не смог понять о чем ты...
смысле ты говорил
что всем назло дальше будешь писать в аласме
чтоб никто не догадался :)
что всем назло какая извращенная фантазия :biggrin:
Я пишу для души на спектруме и для спектрума :)
NEO SPECTRUMAN
16.05.2019, 11:19
на спектруме
Я бы так не рисковал
конечно может с дискетами итд
можно чаще бекапится
а у меня был только мафон
и не было места хранить промежуточные стадии
да и нужно было местами найти место куда втиснуться (чисто на слух)
и чтоб не затереть следующий блок :)
и ВНЕЗАПНЫЕ потери были весьма ощутимыми...:sleep:
inozemcew
16.05.2019, 15:53
Сколько воспоминаний.. :v2_dizzy_grandfathe
Собственно с этого плейера (но версии постарее, с чисто текстовым интерфейсом) и началось мое увлечение цифровым звуком. Послушав у друга, я сразу захотел себе такой же. Пентагон 512 и турба у меня, по-моему, уже были, пришлось допаять кэш, а вместо ковокса сразу спаял саундрайв, но без ВВ55 и с другими портами. Поковыряв плейер, я переделал его под 4 DACа, заодно и отловил забавный глюк в схеме кэша. Звук стал чуть лучше. Затем спаял аппаратные регуляторы громкости в каналах. Стало получше, за счет того, что не нужно стало каждый байт семпла умножать на громкость, ушла 16кб таблица умножения, частота дискретизации поднялась на пару килогерц. Дальше уже был прямой доступ к памяти. Рендер остался программным, но вывод буферов делался с помощью ПДП. Звук стал на порядок лучше, но не идеальным. Быстрое ядро плейера было навороченным, нодовольно неточным, как при рендере, так и при выводе в DAC. Возможно, это недостаток ранней версии, а дальше это дело поправили. Никаких исходников у меня, разумеется, не было, все разбиралось и правилось чисто в коде STSом.
Зато было четыре пачки дискет с МОДами, заслушанными и затертыми до чуть не до дыр. :v2_happy:
solegstar
16.05.2019, 16:35
inozemcew, вот есть исходники (https://zx-pk.ru/threads/30305-bezvejtovyj-kontroller-ps-2-klaviatury-na-avr-cpld-dlya-zx-spectrum-i-klonov.html?p=1006043&viewfull=1#post1006043), они под DMA USC, как мы поняли с Женей по портам внутри них. это не Ваше творение вместе с Димой? :) Камиль тут пишет (https://zx-pk.ru/threads/30305-bezvejtovyj-kontroller-ps-2-klaviatury-na-avr-cpld-dlya-zx-spectrum-i-klonov.html?p=1006104&viewfull=1#post1006104), что нашел их в папке DMASOUND архива из FIDO, что как бы намекает на Вас. :)
shurik-ua
16.05.2019, 21:04
я собирал DMA USC в конце 90-х - плеер помню, там ещё проц успевал синусоиды рисовать - ну и качество конечно после ковокса небо и земля )
inozemcew
16.05.2019, 21:34
вот есть исходники, они под DMA USC, к
Да, это ранняя версия Access Player, еще похоже без GUI. К сабжу она отношения не имеет, и ничего от туда не позаимствовано, кроме идеи читать MODы с MS-DOS дисков.
Не помню, выкладывал я ее куда-нибудь или нет, но последняя версия Access Player имела версиию 1.2 и выглядела так:
https://i.ibb.co/CPh7BWt/dma.png
К сожалению, это все, что можно увидеть в эмуляторе.
(но версии постарее, с чисто текстовым интерфейсом)
А не сохранилась ? Мы текстовую версию по моему никогда не делали.
Вообще круто ,хоть кто то нашелся кто помнит эти плееры и ковырял их.
Стало получше, за счет того, что не нужно стало каждый байт семпла умножать на громкость, ушла 16кб таблица умножения
Точно таблица 16 кб была в том плеере ? В этом явно не так.
Быстрое ядро плейера было навороченным, нодовольно неточным, как при рендере, так и при выводе в DAC.
Это в текстовой версии ?
inozemcew
17.05.2019, 19:33
А не сохранилась ? Мы текстовую версию по моему никогда не делали.
Делали-делали.. Вот такую.
https://i.ibb.co/LxbwgCj/Screenshot-20190517-175933.png
К сожалению не нашел оригинала, где-то на 5ти дюймовых дискетах может есть, но с этим придется обождать . Нашлось только уже перепиленное под 4х канальный ковокс (с аппаратной громкостью или нет, не разбирался) и под ДМА. Если надо, могу скинуть.
Точно таблица 16 кб была в том плеере ?
Эм.. честно врать не буду, уже точно не помню, но где-то такая табличка таки была, почему и запомнилась.
Это в текстовой версии ?
Ага, которая v0.1. Кстати у меня нашлась и версия 1.0 вместе с сорцами под TASM4.0, но чего-то она не хочет запускаться ни на одном муляторе - черный экран и все. Если надо, тоже могу скинуть.
NEO SPECTRUMAN
17.05.2019, 20:11
А зачем используется кеш?
Сходу не смог рассмотреть иникального функционала который бы использовался
2к не нашлось в обычной памяти?
А зачем используется кеш?
Сходу не смог рассмотреть иникального функционала который бы использовался
2к не нашлось в обычной памяти?
200% скорости в турбо , он не вэйтится.
inozemcew, закидывай все что найдется , это же история !
NEO SPECTRUMAN
17.05.2019, 20:30
200% скорости в турбо , он не вэйтится.
так вполне можот быть опциональным
shurik-ua
17.05.2019, 20:49
А зачем используется кеш?
кеш также юзался для отладки хитромудрых защит - тогда эмуляторы были примитивные и не у каждого писюк имелся.
NEO SPECTRUMAN
17.05.2019, 21:09
кеш также юзался для отладки хитромудрых защит - тогда эмуляторы были примитивные и не у каждого писюк имелся.
речь кокнретно про этот плеер
ожидал увидеть кучи rst и активное использование удобных для быстрого перехода адресов и всяких там таблиц...
чот про невайтовость кеша не подумал
тк в пентевах это давно все безвайтовое
а на старом старье то не так...
Эм.. честно врать не буду, уже точно не помню, но где-то такая табличка таки была, почему и запомнилась.
Мне думается что под один ковокс идет таблица громкости 4 кб , значение #00-#FF семпла преобразуется через таблицу громкости в #00 - #3F , потом четыре значения каналов складываются тем самым получаем значение до #FF
А 16кб таблица уже была видимо в твоем плеере где было 4 ЦАП каналов, но не было ЦАП громкости , тогда надо значение семпла преобразовать через громкость ,но так как выходное значение будет от #00 до #FF то таблица будет в 4 раза больше , то есть 4кб x 4 = 16кб , может так ? :)
inozemcew
18.05.2019, 11:19
закидывай все что найдется
Версия 1.0 (https://www.dropbox.com/s/3fweks5p0ck8apa/MODPLAYv1.0.zip?dl=0)
Это похоже оригинал с авторскими сорцами, я точно здесь ничего не ковырял и не декомпилял.
речь кокнретно про этот плеер
ожидал увидеть кучи rst и активное использование удобных для быстрого перехода адресов и всяких там таблиц...
Там куча таблиц ,а куда уж быстрее , частота более 30 кГц , код написан оптимальным образом ,на быстроту , а на кой вообще кучи RST ? что это показатель скорости ?
Чтение и подготовка семплов в реальном времени через стек.
Версия 1.0
Это похоже оригинал с авторскими сорцами, я точно здесь ничего не ковырял и не декомпилял.
Спасибо огромное !
Ох сколько бы ты сэкономил мне вечеров ,выложив это месяц назад :biggrin:
Да это поздняя версия , 96 года , но парадокс в том ,что она имеет гораздо худший звук ,за счет меньшей частоты выборки при одинаковом оборудовании пентегона ,чем версия которую колупаю я.
Делали-делали.. Вот такую.
Понял откуда , вот из этой же серии ,глянь на главный экран ) - https://zx-pk.ru/threads/28413-proigryvatel-semplov-iz-mod-fajlov.html?highlight=
- - - Добавлено - - -
Кстати у меня нашлась и версия 1.0 вместе с сорцами под TASM4.0, но чего-то она не хочет запускаться ни на одном муляторе - черный экран и все.
Не работает потому что в те давние времена периферии не было как сейчас ,тут я описывал давно - https://zx-pk.ru/threads/26977-pentagon-obshchaya-plata-dorabotok.html?p=887422&viewfull=1#post887422
О круто , значит он пролез в свет , а если можно подробнее в какие годы , и может в курсе как приплыл в ваши края , тоже на пентагоне слушали ?
Может где то остался ? Интересует есть ли на картинке на букве P в слове patern фиолетовый атрибут. Да и вообще все что с ним связано.
После 95 года проект развивался без меня ,поэтому возможно. Версия 2.0 которая на его основе сделана, получила удобства и мультиплатформенность но потеряла качество.
PS тем временем колупаю и исходник уже из жестко привязанного к адресам стал динамическим.
Год примерно 1995-1996, визуал именно этот, качество было супер, по поводу фиолетового атрибута не вспомню точно, вроде был.
У меня точно не остался - когда-то коллекцию другу подарил, жива она или нет - не знаю.
Слушал на Scorpion ZS-256, после всех доработок он умел все что угодно (все что было принято с ним делать в те годы)))
Картинку как увидел - сразу в памяти всплыла, другие версии этого плеера не видел.
Попасть к нам могла через местных свапперов, Mighty/Smash H.B. (г.Севастополь), или еще каким путем - софта в Крыму море было в те годы)
А MODы у товарища с пц брал, были времена...)))
Получается, что свет он видел, или были разные версии при одном и том же визуале?
Да разные версии были при одном и том же визуале , получается , вот сейчас уже до кучи собрал 7 разных версий , и только одна ,которая в этом посту ,имеет хорошее качество , вообще надо осцилом посмотреть вывод и скважность , в этой версии такты очень точно синхронизированы , ну на сколько это возможно при скорости z80.
Да разные версии были при одном и том же визуале , получается , вот сейчас уже до кучи собрал 7 разных версий , и только одна ,которая в этом посту ,имеет хорошее качество
Понял. Тогда установить - что же точно у меня было в те года будет проблематично... Но играло превосходно!
Хотелось бы вернуться к теме проигрывания модов. в первую очередь интересует вопрос - как это вообще работает? вот есть некий сэмпл у которого родная частота, образно говоря нота "ДО", 16000гц. чтобы проиграть его на другой ноте, что для этого нужно сделать? интуитивно понимаю так: нота - частота. т.е. нужно сменить частоту проигрывания (имитация ноты). как меняется частота? между выбросами в порт ЦАПа вставляются задержки? как эти задержки рассчитываются? особенно интересует момент, когда нужно не бросать данные в порт, а спихивать в буфер. т.е. есть буфер, скажем, 256 байт. его нужно заполнять данными от мода. и кроме того, что нужно менять частоту одного семпла, нужно ещё и у другого сменить и их между собой смешать, чтобы и громкость соответствовала и нота. Есть на форуме спецы в этой области? расскажите кто нить?!
Строится куча таблиц для ресемплинга и эффектов ,в реальном времени ,выбираются семплы , через эти таблицы идет ресемплинг и наложение эффектов в буфер раз в 1\50 секунды , потом из этого буфера берется 4 потока которые складываются и на одной частоте выборки (в данном случае более 30 кгц) выводятся в ковокс.
вот есть некий сэмпл у которого родная частота, образно говоря нота "ДО", 16000гц. чтобы проиграть его на другой ноте, что для этого нужно сделать? интуитивно понимаю так: нота - частота. т.е. нужно сменить частоту проигрывания (имитация ноты). как меняется частота?
Частота зависит от скорости выборки отдельных отсчетов. Скорость движения по семплу определяется взаимоотношением между его частотой дискретизации, частотой его ноты, частотой основного цикла плеера и требуемой частотой ноты.
Пусть для определенности в семпле с частотой 8000 Гц нота до второй октавы (523.25 Гц). Пусть частота основного цикла плеера 11000 Гц и нужно воспроизвести ноту ля первой октавы (440 Гц). Скорость движения по семплу (приращение указателя) будет 440/523.25*8000/11000=0.6116. Традиционный подход - урезать точность до 1/256, чтобы дробная часть помещалась в байт, тогда round(0.6116*256)=157, а целая часть приращения=0. Аккумулируем сумму+157 и на каждое переполнение сдвигаемся по семплу на 1 позицию. Подобный подход используется во многих трекерных плеерах для спека (не обязательно для MODов), в т.ч. в этом (https://zx-pk.ru/threads/30470-samyj-kachestvennyj-mod-pleer-pod-covox-iskhodniki-i-prodolzhenie-proekta.html?p=1012128&viewfull=1#post1012128) MOD плеере. А в этом (https://zx-pk.ru/threads/26977-pentagon-obshchaya-plata-dorabotok.html?p=887844&viewfull=1#post887844) плеере для максимального ускорения используется хитрый подход, который я назвал бы кусочно-линейной аппроксимацией, не знаю, как называл сам автор.
а как узнать какая частота у сэмпла? там же в модах в сэмплах заголовок не просматривается и все плеера воспринимают его как часть сэмпла (и поэтому часто на таких сэмплах слышны щелчки).
все эти расчёты можно же в таблички засунуть наверное? и движение по сэмплу по каждому байту? и нет задержек при выбрасывании данных в порт цапа?
---
ааа. движение по сэмплу. т.е. указатель на байт в сэмпле - это вот по той формуле. т.е. не каждый байт, а результат формулы есть смещение + столько то байт внутри сэмпла?
хм. а если это сэмпла "чиповый" или просто короткий, менее килобайта?
HardWareMan
19.03.2020, 18:31
Я тоже делал упрощёнку в своём плеере, когда баловался в программировании МОД плеера. Вместо дробной части смещения и округления тупо отдельный целочисленный счётчик, который приращивается ступенчато в зависимости от выбранного питча, но с привязкой к дискретизации вывода (11025/22050/44100). По переполнению счётчика - смещаем указатель вычитывания сэмпла сэмпла (сюрприз!). Звинит, правда, но слушать можно. Насколько я знаю, этот метод типичен для фазового счётчика в плеерах на железе.
а как узнать какая частота у сэмпла?
Догадываться, какая реально у семпла частота дискретизации и нота нет необходимости, все они обрабатываются одинаково. Если автор мода сделал какой-то хитрый вариант, то он сам должен был позаботиться о том, чтобы мод нормально воспроизводился.
результат формулы есть смещение + столько то байт внутри сэмпла?
Типа того, я бы назвал это приращением указателя.
- - - Добавлено - - -
хм. а если это сэмпла "чиповый" или просто короткий, менее килобайта?
На расчеты это никак не повлияет, но спековский плеер очень короткие чиптюнные семплы (несколько десятков байт) вряд ли будет хорошо воспроизводить.
- - - Добавлено - - -
там же в модах в сэмплах заголовок не просматривается и все плеера воспринимают его как часть сэмпла (и поэтому часто на таких сэмплах слышны щелчки).
О чем речь? Заголовок мод файла с информацией о семплах обязательно обрабатывается любым мод плеером. Если речь о том, что в качестве самих аудиоданных нельзя запихнуть wav, то и не надо так делать, только raw.
ivagor, примерно понял, но тогда ещё такой вопрос - мне нужно данные не выводить в порт цапа, а складывать в буфер, который потом по прерыванию (которое генерируется по опустошению аппаратного FIFO) сбрасывается в FIFO "звуковухи". значит получается, что я все байты складываю друг за другом, без пропусков (т.е. не требуется имитировать задержки или паузы)?!
а как складывать каналы?
интересно, а в мод плеере для DMA USC, там таймера используются для имитации нот (ресэмплинг) или нет? исходники плеера вроде где-то есть, а там таблички тоже есть. он вроде качественно играл.
мне нужно данные не выводить в порт цапа, а складывать в буфер, который потом по прерыванию (которое генерируется по опустошению аппаратного FIFO) сбрасывается в FIFO "звуковухи". значит получается, что я все байты складываю друг за другом, без пропусков (т.е. не требуется имитировать задержки или паузы)?!
Конкретный способ воспроизведения не важен, генерируется поток звуковых данных, рассчитанных на воспроизведение с заданной частотой.
На всякий случай пара более конкретных примеров расчета ближе к модной действительности:
1. Частота семпла 16544 Гц, нота до третьей октавы 1046 Гц. Если частота цикла воспроизведения 33088 Гц и нужно сыграть ноту С-3 (по "классическим" обозначениям, в файле будет 214, в OpenMPT покажет C-6), то дробная часть приращения round(1046/1046*16544/33088*256)=128.
2. Все как в п.1, только частота цикла воспроизведения 44100 Гц. Тогда дробная часть приращения round(1046/1046*16544/44100*256)=96.
а как складывать каналы?
Умного тут ничего сказать не могу, если разрядность устройства воспроизведения позволяет, то просто складывать, если нет - то сначала уменьшить амплитуды, чтобы сумма влезала в диапазон. Еще компромиссный вариант - амплитуды уменьшить несильно и складывать с насыщением.
Плеер для DMA USC не смотрел.
- - - Добавлено - - -
16544
Если по американским ntscшным стандартам, то 16726 Гц. OpenMPT сохраняет как европеец (но всегда 8272).
А еще для 4 каналов строится 4 таблицы громкости , через них и идет сложение и выплевывание в ковокс. так как ковокс имеет разрядность 256 то каждый канал имеет громкость до 64
разрядность девайса или 8бит или 16бит (конфигурируемая), но канала 2.
Маленький оффтоп. Если хочется задавать частоту дискретизации семплов, но чтобы формат был не сильно сложнее mod, то наверно стоит посмотреть в сторону stm.
ivagor, примерно понимаю, что для того чтобы сэмпл играл на более высокой ноте, я делаю пропуск байт в сэмпле согласно формулы, что ты выше описал. но, что делать, когда идёт понижение октавы/ноты? ведь если подумать, то "нота" при которой сэмпл играет на своей частоте - значит я беру каждый байт сэмпла. что делать когда обратный процесс, пока не понял.
stm формат тоже хотелось бы. сейчас смотрю вообще в сторону более простого формата - ADJ от Профи (есть там такой недотрекер/плеер). он происходит от STM, но некоторые команды не реализованы. а там далее перейти к STM, MOD.
и сразу вопрос - если исключить вариант вбрасывания данных в порт, на чём, собственно, и тратится всё время процессора, то сколько по тактам жрёт проигрывания мод файла т.е. отработка нот, эффектов, громкости. без учёта работы с цапом потому как у меня работа с буфером, что существенно упрощает вывод и по идее снимает часть нагрузки. плюс ещё есть аппаратный таймер (4 канал внутри z84). CTC который. вот думаю, как совместить и есть ли смысл, ведь если обработка трека будет жрать 100к тактов, то ... печально конечно это будет.
ivagor, примерно понимаю, что для того чтобы сэмпл играл на более высокой ноте, я делаю пропуск байт в сэмпле согласно формулы, что ты выше описал. но, что делать, когда идёт понижение октавы/ноты?
Обработка единообразная, посчитали приращение указателя по семплу для данной ноты и спокойно суммируем с ним счетчик. Единственный момент, на который стоит обратить внимание - это разрядность приращения. Для какого-то применения хватит 8 бит дробной части, для большинства применений хватит 8.8, т.е. 8 бит целой части + 8 дробной. В некоторых случаях разрядность дробной части может понадобиться увеличить.
вопрос - если исключить вариант вбрасывания данных в порт, на чём, собственно, и тратится всё время процессора, то сколько по тактам жрёт проигрывания мод файла т.е. отработка нот, эффектов, громкости. без учёта работы с цапом потому как у меня работа с буфером, что существенно упрощает вывод и по идее снимает часть нагрузки. плюс ещё есть аппаратный таймер (4 канал внутри z84).
В старой версии плеера Cobrы частота основного цикла примерно 32000 Гц при 7 МГц (соответственно при 3.5 было бы 16000), в новой - примерно 11000 Гц при 3.5 МГц. Почему примерно - частота у него, к сожалению, немного плавает и в старой и в новой версии.
сейчас смотрю вообще в сторону более простого формата - ADJ от Профи (есть там такой недотрекер/плеер).
Начать точно лучше не с мод или stm. На спектруме (да и не только на спектруме) есть значительно более простые собственные трекерные форматы, с 3 каналами, практически без эффектов и громкости.
Возможно стоит это обсуждение отецпить от темы пока топикстартер не стал сильно ругаться. Сабжевого плеера касаемся, но много побочной информации.
ivagor, теперь ещё вопрос про скорость трека и кол-во ударов в минуту. как с ними быть? как тайминги тут рассчитываются?
Можно почитать здесь (https://eblong.com/zarf/blorb/mod-spec.txt) ( раздел Protracker CIA (Complex Interface Adapter) Timer Tempo Calculations: ) или еще здесь (https://modarchive.org/forums/index.php?topic=2709.0). В итоге грубо говоря нужно рассчитать, сколько времени крутить основной цикл до следующего изменения параметров цикла.
эти расчёты пока не понятны. 125 даров в минуту могут быть и на 6 скорости (что собственно там и показывают в пример) и на 3й скорости. как тогда верно это всё рассчитывать? в чём разница между скоростью и ударами в минуту?
Точнее и понятнее амижников я не напишу. Можно начать делать с тем пониманием, которое есть и сверяться с плеерами, похоже играет или нет. Ну и/или посмотреть какие-нибудь исходники плеера.
JV-Soft, кстати, в первопосте исходник не рабочий. после получения sna просто не играет (тишина).
Если в отладчике загрузить BIN, который получается после компиляции исходника и запустить его, то он работает - загружает и проигрывает моды.
а исходники которые были выложены вроде как автором в формате TASM4.0, они рабочие? там вроде косяк с кэшем, определение через порт #80 вместо #fb. я исправил, картинка плеера появилась, но и всё. даже стрелки нету.
- - - Добавлено - - -
интересно то, что как этот исходник может играть звук, если там нет строк с выводом в порт #fb (ковокс пятногона)?! или я слепой?
загрузил через отладчик в анрыле бинарный файл. как я и думал - звука нет.
какие-то проблемы с эмулятором. в одной версии нет звука на цапах, в другой не даёт выставить "турбу". сам плеер постоянно сбрасывается при попытке прочитать мод файл или проиграть его.
интересно то, что как этот исходник может играть звук, если там нет строк с выводом в порт #fb (ковокс пятногона)?!
8EBF ld bc,#40FB
загрузил через отладчик в анрыле бинарный файл. как я и думал - звука нет.
Загрузил в unreal бинарный файл, как я и думал - звук все еще есть. unreal 0.37.9
сам плеер постоянно сбрасывается при попытке прочитать мод файл или проиграть его.
Пробовал только три мод файла, они читались, игрались и не сбрасывались.
Загрузил в unreal бинарный файл, как я и думал - звук все еще есть. unreal 0.37.9
если честно не понятно. испытал 3 разные версии, везде одно и тоже. загружается мод файл и сброс. загружается и висяк, загружается и артефакты (атрибуты) на экране. потом БАЦ, начал играть. на следующем заходе опять сброс.
попробовал исходники от Иноземцева. подправил детект срамы. интерфейс прорисовывается, а стрелки нет и ничего не сделать дальше. этот (https://zx-pk.ru/threads/30470-samyj-kachestvennyj-mod-pleer-pod-covox-iskhodniki-i-prodolzhenie-proekta.html?p=1012910&viewfull=1#post1012910)исходник пробовал кто-нибудь собирать?
JV-Soft, кстати, в первопосте исходник не рабочий.
Полностью рабочий , проверен и на реале и в эмуле.
Загрузил в unreal бинарный файл, как я и думал - звук все еще есть. unreal 0.37.9
У меня 0.38 тоже все ок )
Попробовал unreal 0.39.0 и с ним есть проблема - образы .TD0 похоже подхватываются только после рестарта, в 0.37.9 такой проблемы нет
И нашел одну проблему с плеером собранным из исходника - зависает на модуле deflo~ni.mod с диска mod3 отсюда (https://zx-pk.ru/threads/26977-pentagon-obshchaya-plata-dorabotok.html?p=887844&viewfull=1#post887844). Плеер из комплекта (на диске mpl.trd) играет этот модуль, более новый плеер ("медленный") тоже играет
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot