Вход

Просмотр полной версии : Индикатор уровней сигнала AY.



djspawn
01.06.2017, 09:37
Добрый день!
Нужен алгоритм вывода столбцов по частотам, желательно просто описание.

По наработкам получается так, считываем с регистров АУ р0-1 - частоту канала А, р2-3 В канал, р4-5 - С канала, соответственно есть таблица соответствия этих значений с частотой. 12 нот, 8 октав.
Далее берем значение громкости каналов А,В,С и ставим соответственно данное значение в позицию рассчитанную по таблице.
Так же проверяем огибающею, генератор шума и миксер.

Заранее благодарю!

Для примера:
http://s015.radikal.ru/i331/1107/63/aff5c6f67254.png

Хочется получить что-то вроде этого на выходе
я про сам "Спектрум анализатор"
https://pp.userapi.com/c837233/v837233224/41371/vgAQVEGeUsM.jpg

djspawn
09.06.2017, 09:56
Спасибо всем, задача решена!)



https://www.youtube.com/watch?v=bPa2aLGzqPc

Shiny
09.06.2017, 12:56
кстати, а .psg в каких целях используется?

djspawn
09.06.2017, 13:34
PSG Формат файлов для контроля Programming Sound Generator (AY/YM чип) rus
Музыку из него играет.

NEO SPECTRUMAN
09.06.2017, 19:41
С канала, соответственно есть таблица соответствия этих значений с частотой. 12 нот, 8 октав.
не понимаю этих спектрограмм в которых 12 нот, 8 октав...
и выглядят они...
как халтура...


меандр на нормальной линейной спектрограмме выдаст ряд полос спадающих по амлитуде

доставать из таблицы только первый основной тон
остальные гармоники находятся из этого же значения n*2, n*3, n*4
простое плюсование координаты и отрисовка каждый раз все более меньшего столбика пока не дойдем до конца экрана


правдоподобную огибающую с тоном просто так не нарисовать
тк они модулируют друг друга

но можно сделать и с таким же подходом как и для меандра
только теперь нужен не простой спад амплитуды
а спад с некоторыми изменениями
для каждого типа огибающей понадобится свой набор

например у треугольной волны просто нет четных гармоник
то есть основной тон а остальные n*3, n*5, n*7
но и у Ау-ка нет настоящей треугольной волны
а то что есть будет как помесь треугольника и меандра

с шумом все сложнее
он стоит по всему диапазону
но в принципе
можно что то похожее нарисовать




с логарифмической шкалой будет несколько сложнее
самый простой и быстрый способ
перед отрисовкой просто по табличке
конвертить частоты из линейного вида в логарифмический

Hacker VBI
09.06.2017, 22:53
NEO SPECTRUMAN, предлагаешь через линейный вход пустить? :v2_dizzy_angel:

djspawn
09.06.2017, 23:49
не понимаю этих спектрограмм в которых 12 нот, 8 октав...
и выглядят они...
как халтура...


меандр на нормальной линейной спектрограмме выдаст ряд полос спадающих по амлитуде

доставать из таблицы только первый основной тон
остальные гармоники находятся из этого же значения n*2, n*3, n*4
простое плюсование координаты и отрисовка каждый раз все более меньшего столбика пока не дойдем до конца экрана


правдоподобную огибающую с тоном просто так не нарисовать
тк они модулируют друг друга

но можно сделать и с таким же подходом как и для меандра
только теперь нужен не простой спад амплитуды
а спад с некоторыми изменениями
для каждого типа огибающей понадобится свой набор

например у треугольной волны просто нет четных гармоник
то есть основной тон а остальные n*3, n*5, n*7
но и у Ау-ка нет настоящей треугольной волны
а то что есть будет как помесь треугольника и меандра

с шумом все сложнее
он стоит по всему диапазону
но в принципе
можно что то похожее нарисовать




с логарифмической шкалой будет несколько сложнее
самый простой и быстрый способ
перед отрисовкой просто по табличке
конвертить частоты из линейного вида в логарифмический

К сожалению оправдываться Мы не будем, если есть у вас конкретные примеры, исходные коды или ещё что-то, всегда пожалуйста! А так - это всё троллинг ))

NEO SPECTRUMAN
09.06.2017, 23:50
предлагаешь через линейный вход пустить?
все тоже самое

кормим табличке старшие 8 бит частоты
получаем кординату по горизонтали
рисуем не один а несколько столбиков
....
ПРОФИТ

затраты ресурсов минимальные

Dimon spb
10.06.2017, 00:00
Немного оффтоп, но раз уж речь зашла о столбиках: БПФ никто не пробовал реализовать? Фреймово?
Применительно к MOD-ам, что, если при загрузке каждый сэмпл обработать БПФ, сделать для каждого небольшую табличку AЧХ и выводить столбики по ней + корректировка в зависимости от ноты.
Ну как-то так.

NEO SPECTRUMAN
10.06.2017, 00:12
если есть у вас конкретные примеры,

берем меандр с повышающейся частотой и смотрим на спектрограмму
http://zx-pk.ru/attachment.php?attachmentid=61325&d=1497042031


за одно видно паразитное явление алиасинг
все гармоники отражаются от половинной частоты дескретизации а потом от 0

в реальном Ау-ке таких отражений нет

там нечто вот такое
http://zx-pk.ru/attachment.php?attachmentid=61327&d=1497043484

еще пример
https://upload.wikimedia.org/wikipedia/commons/b/b5/Spectrum_square_oscillation.jpg

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


вот наглядная анимация
из чего на самом деле состоит меандр
https://upload.wikimedia.org/wikipedia/commons/2/2b/Fourier_series_and_transform.gif

или вот
https://upload.wikimedia.org/wikipedia/commons/1/1a/Fourier_series_square_wave_circles_animation.gif



прикол в том что если набрать кучу этих синусоид на глаз по амплитуде
и правда появляется характерное звучание пилы, треугольника, меандра
даже если визуально результат на них вообще не похож
(примеров нет я не сохранял)


что, если при загрузке каждый сэмпл обработать БПФ, сделать для каждого небольшую табличку AЧХ и выводить столбики по ней + корректировка в зависимости от ноты.
а почему бы и нет?
только кому это надо?

Hacker VBI
10.06.2017, 10:29
NEO SPECTRUMAN, идея про 5 столбиков для частоты на самом деле неплоха для визуализации, нравится.

Shiny
10.06.2017, 11:34
не понимаю этих спектрограмм в которых 12 нот, 8 октав...
и выглядят они...
как халтура...

предложы лучше. Наверное, в Crazy Analyzer сделано повеселее, а тут по олдскулу

Dimon spb
12.06.2017, 18:11
а почему бы и нет?
только кому это надо?
Да кому вообще этот спектрум нужен...

Barmaley_m
06.10.2017, 01:36
Задача спектрального анализатора - преобразовать звуковой сигнал в по возможности разреженное представление, т.е. такое представление, которое почти везде равно нулю, кроме тех точек, где есть звук. Такое представление легко доступно визуальному восприятию, кроме того, оно несет минимально важную информацию, которая содержится в звуке.

Форма звукового сигнала - это не разреженное представление, т.к. оно почти везде ненулевое, и его мгновенный уровень имеет для сигнала существенное значение. Не является разреженным и спектральное представление (усредненный спектр всей песни), т.к. оно тоже почти везде ненулевое.

Вот спектрограмма (спектр в зависимости от времени) - это уже лучше. На спектрограмме можно видеть, на каких частотах есть звуки в данный момент, а на каких частотах их нет. Тем не менее, спектрограмма тоже не является оптимально разреженным представлением музыки. На ней, к примеру, ударники появляются на всех частотах. Музыкальные звуки имеют обертоны, из-за чего обертоны от низких звуков трудноотличимы от основного тона высоких звуков.

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

Я мог бы порекомендовать такую визуализацию, как скроллирующаяся "спектрограмма". Обновление идет каждый кадр по одной горизонтальной строке. Каждой точке строки соответствует определенный небольшой диапазон частот звука (или нота). Если на каком-нибудь канале частота попадает в указанный диапазон - то закрашиваем точку, в противном случае оставляем ее пустой. Если не учитывать шум и огибающую, то максимально будут закрашены всего 3 точки. На следующем кадре скроллим изображение вверх, освобождая новую строку под текущее состояние и т.д. Должно получиться очень красиво - двумерные узоры, изображающие структуру музыки.