в DMA Ultrasound стояла 8253 - как раз для этих целей
Карта на логике без прямой поддержки TSFM с возможностью проигрывания TSFM сторонним плеером, 5-7$
Карта на логике с поддержкой TSFM ,цена 7-10$
Карта на CPLD , цена не знаю примерно 20$ может и больше
в DMA Ultrasound стояла 8253 - как раз для этих целей
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну и последнее на сегодня , подсчеты такие -
что бы написать корректный и полноценный парсер VGM нам надо в 79 тактов уложить -
выборка команды из озу
проверка на окончание банка памяти
обработка команды ,самое логичное умножение кода команды на 3 для получения вектора на таблицу jump-ов исполнения команд
исполнение команды - запись регистров FM или DAC иногда с чередованием.
если в это время играет DAC ,то все делать надо параллельно
Все это каждый раз и за 79 тактов как то сложновато ,если не сказать больше ...
Что скажут господа программисты светлые головы ?
- - - Добавлено - - -
не ,подсчеты показали что таймер мне уже не нужен , почитай выше , 79 тактов ...
Остальные нужные задержки я уже просчитал и реализовал.
- - - Добавлено - - -
PS расчет прост ,требование VGM выбирать и исполнять команды с частотой 44.100кгц
3.5мГЦ (Z80) / 44100 = 79.3 такта на все.
Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.
44.100 выбрано видимо чтобы играть на ПЦ онли - для 8-бит это избыточно имхо - на ГС 37.500 вроде даже, но и это много.
Есть некоторые идеи , и как минимум треть плеера написана , VGM нам хорош по той причине что много музыки.
на счет нативных драйверов тоже будет , но это проект больше зимний ,для долгих вечеров , там каждую мелодию надо править и пересобирать вручную , или писать "исправитель"
А пока VGM , спортивное программирование )
- - - Добавлено - - -
видимо да , под PC точили
У GS хоть 320 тактов в прерывании )))
Хотя на нашем прекрасном пентагоне с КЕШ в турбо есть 158 тактов при 44100 , а это уже не мало И напрашивается плеер как с поддержкой обычного ZX и нашего пентагона.
Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.
Переписал по новой FM часть плеера ,и это прошу заметить еще без 4 каналов SN (в пути в Эстонии застряли)
- - - Добавлено - - -
PS на экране это не глюки , атрибуты и полоски ,что бы понимать что парсер делает.
- - - Добавлено - - -
PPS на данный момент плеер весит 5 кб со всеми делами, думаю в изначально намеченные 16 кб уложусь.
Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.
Пофилософствую немного на тему DAC+PCM , проанализировал некоторое количество VGM треков и максимальная частота PCM в них 32 кгц.
Это радует , у меня как раз выходит в плеере такая частота под DAC , но стал остро вопрос о том что PCM у нас может быть разной частоты от 8 до 32кГц.
и нам в реальном времени надо делать resampling , и делать очень быстро , и делать так ,что бы воспроизведение семпла с любой частотой не изменяло время задержек ,
Сначала попробовал строить таблицы ,но из этого ничего не вышло , медленно.
Потом через деление частот семплирования и семпла попробовал пропускать ненужную инфу PCM ,тоже огород.
И сегодня изобрел (я наверно не первый, скажите если было)
И так самый быстрый resampling в realtime , получаем коэффициент для ресамплинга делением частоты (22050) семпла на частоты вывода (32000)
пример 22050 / 32000 = 0,69
Далее делаем наш адрес выборки не 16 битным ,а 24 битным hl=xxxx,xx
Это ресамплинг без потери данных ,с одинаковым временем и частотой вывода и очень очень быстрыйКод:LD HL,#C000 ;начало PCM семпла LD A,#9C ; 255-99 для счета до 100 что бы не морочится с десятичной арифметикой LD E,#45 ; коэффициент ресамплинга 0,69 resampl OUT (port),(HL) ;macros вывод в цикле идет с частотой 32000 гц ADD A,E ; наш дополнительный десятичный адрес после запятой ,XX JP NC,resampl ;дополнительный десятичный адрес указывает когда извлечь следующее значение для DAC , иначе выводится текущее ADD A,#9C ;не теряем результат переполнения нашего десятичного (0-99) значения после запятой INC HL ; собственно заветный момент ресамплинга JP resampl
Или уже было такое и я не молодец ?
- - - Добавлено - - -
PS на данный момент парсер главных команд FM+PSG работает с частотой до 40кгц ! так что Z80 не так уж плох
Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.
мне кажется что нужно сделать чтобы кол-во тактов в процедуре было одинаковым независимо от условного перехода.
и вроде бы ты сделал семплер с аккумулятором фазы - в журнале Радио за 91-ый год чтото похожее описывалосб.
да это не проблема ,семо собой в плеере допилю
Честно три вечера просидел , чуть моск не лопнул. Обязательно подниму журнал, почитаю.Код:LD HL,#C000 ;начало PCM семпла LD A,#9C ; 255-99 для счета до 100 что бы не морочится с десятичной арифметикой LD E,#45 ; коэффициент ресамплинга 0,69 resampl wait 7+6+10 takt resampl_1 OUT (port),(HL) ;macros вывод в цикле идет с частотой 32000 гц ADD A,E ; наш дополнительный десятичный адрес после запятой ,XX JP NC,resampl ;дополнительный десятичный адрес указывает когда извлечь следующее значение для DAC , иначе выводится текущее ADD A,#9C ;не теряем результат переполнения нашего десятичного (0-99) значения после запятой INC HL ; собственно заветный момент ресамплинга JP resampl_1
Быстрее по моему уже не выйдет ,или есть мысли ?
- - - Добавлено - - -
shurik-ua, а какой номер журнала если помнишь ,а то все листать долго будет )
Последний раз редактировалось JV-Soft; 15.05.2018 в 01:39.
Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.
ошибся немного - 1992 №№11-12
в 1991 №5 - теория
Последний раз редактировалось shurik-ua; 15.05.2018 в 02:30.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)