Page 1 of 1

Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Tue, 06.06.2017 08:57:27
by djspawn
Добрый день!
Нужен алгоритм вывода столбцов по частотам, желательно просто описание.

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

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

Для примера:
Image

Хочется получить что-то вроде этого на выходе
я про сам "Спектрум анализатор"

Image

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Tue, 06.06.2017 09:17:30
by VBI
давай посмотрим на изображение и подумаем:
итак, каждый столбец - это некоторая частота звука, от самой нижней до верхней, доступной чипу.
смотрим в доку, определяем лимиты по частотам, смотрим в доку, определяем градации частот.
далее, наши действия:
- постоянно собирать данные из каналов - частота/громкость, складывать их в буффер.
- используя дату из буфера - выводи столбики на экран.

хинт: постоянно декрементируй все значения в буффере перед занесением туда новых данных

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Tue, 06.06.2017 09:25:31
by djspawn
Соответственно у нас 8 октав по 12 нот, итого 96 позиций.
Позицию определяем по соответствию значений тона канала с значениями в таблице в доке к АУ.
А как быть с шумом и огибающей ?

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Tue, 06.06.2017 16:50:30
by WBC
djspawn wrote:А как быть с шумом и огибающей ?

с шумом все просто -берешь значение из регистра 6 и выводишь его как есть, т.е. в диапазоне 0-31. Можно еще подмешать его к тоновым столбикам (частота генератора шума аналогична частоте тона, просто от нуля до нее подмешиваешь к столбикам рандом :), но это правда не точно, я сам не пробовал)
Период огибающей просто умножаешь на 16 (для типов 8\C) или 32 (для A\E) и дальше поступаешь как с тоном ;)

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Tue, 06.06.2017 19:18:18
by VBI
табличку частот придётся составить, причём она будет нелинейной
а потом чекать к какой полосе принадлежит текущая частота, а дальше - техника

+ нужно учитывать частоту енвелопа, там ещё одна табличка

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Wed, 07.06.2017 19:02:42
by djspawn
WBC wrote:с шумом все просто -берешь значение из регистра 6 и выводишь его как есть, т.е. в диапазоне 0-31. Можно еще подмешать его к тоновым столбикам (частота генератора шума аналогична частоте тона, просто от нуля до нее подмешиваешь к столбикам рандом , но это правда не точно, я сам не пробовал)
Период огибающей просто умножаешь на 16 (для типов 8\C) или 32 (для A\E) и дальше поступаешь как с тоном


То бишь смотришь в регистр миксера R7 включен ли шум и выводим значение (0-31) в позицию из значения соответствующего канала из регистров R0-1, R2-3, R4-5 сопоставленных из таблицы тона?
Так же не понятно что значит " просто умножаешь на 16 (для типов 8\C) или 32 (для A\E) и дальше поступаешь как с тоном" ? Что за типы?

спасибо за разъяснение!

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Wed, 07.06.2017 19:04:01
by djspawn
VBI wrote:табличку частот придётся составить, причём она будет нелинейной
а потом чекать к какой полосе принадлежит текущая частота, а дальше - техника

+ нужно учитывать частоту енвелопа, там ещё одна табличка


Таблицу для тона сделали, а как таблицу для огибающей посчитать?

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

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Wed, 07.06.2017 19:44:23
by WBC
djspawn wrote:выводим значение (0-31) в позицию из значения соответствующего канала из регистров R0-1, R2-3, R4-5 сопоставленных из таблицы тона?

не, если выводить 0-31, то в отдельные столбики
djspawn wrote:Так же не понятно что значит " просто умножаешь на 16 (для типов 8\C) или 32 (для A\E) и дальше поступаешь как с тоном" ? Что за типы?

берешь период из регистров R11-12, тип из R13 и умножаешь, затем итоговый период прогоняешь через табличку точно так же, как и для тона.

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Fri, 09.06.2017 09:39:05
by djspawn
Огромное спасибо за помощь и подсказку VBI и WBC

Все получилось!:)

https://youtu.be/bPa2aLGzqPc

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Fri, 09.06.2017 19:25:50
by VBI
клёво :))

Re: Spectrum Analizier (Индикатор уровней сигнала AY)

PostPosted: Thu, 17.08.2017 17:39:14
by idxi
djspawn, а можно code-example этого решения увидить? :) Спасибо.