ΣSigmaStudio English

Rotary Volume

Блок Rotary Volume управляет уровнем громкости входного аудиосигнала, используя входы GPIO вращающегося энкодера. Этот блок объединяет функциональность блоков Rotary Encoder, Up/Down Control, Index lookup Table и SW External Volume control в одном алгоритме управления. Пользователь имеет возможность задать произвольную кривую громкости, которая будет прокручиваться вращающимся энкодером.Rotary Volume

Входные пины

NameFormat
[int/dec] - [control/audio]
Function Description
Pin 0: Rotary Input Upint - controlУправляющий сигнал с GPIO вращающегося энкодера, который увеличивает громкость
Pin 1: Rotary Input Downint - controlУправляющий сигнал с GPIO вращающегося энкодера, который уменьшает громкость
Pin 2: Interface Readn/aРегистр Interface Read для загрузки предыдущего постоянного значения громкости в алгоритм
Pin 3: Input Audiodecimal - audioАудиовход для регулятора громкости

Выходные пины

NameFormat
[int/dec] - [control/audio]
Function Description
Pin 0: Interface Writen/aРегистр Interface Write для сохранения постоянного значения громкости для последующего вызова
Pin 1: Output Audiodecimal - audioВыходной аудиосигнал с отрегулированной громкостью

Элементы управления GUI

GUI Control NameDefault ValueRangeFunction Description
Debounce20[0, 1000]Счетчик выборок для времени антидребезга на вращающемся энкодере
Volume Table Points33 pts[2, 800]Задает размер таблицы: количество точек, используемых в кривой таблицы громкости.
Volume Table Values1[-16, 15.99]Точки таблицы представляют собой фактические значения усиления для кривой громкости в линейном представлении. Хотя диапазон поддерживает полные значения [-16, 15.99], значения таблицы обычно должны находиться в диапазоне [0, 1] для правильной регулировки усиления. Пользователь имеет полный контроль над этой таблицей и может добавить линейную, логарифмическую или произвольную кривую изменения громкости.
SW Slew Rate12[1, 23]Управляет скоростью нарастания сигнала (slew) для плавного перехода громкости между соседними точками усиления

Информация о параметрах DSP

GUI Control NameCompiler NameFunction Description
DebounceRotaryVolAlg1countmaxЦелое число напрямую записывается в DSP.
Volume Table ValuesRotaryVolAlg1table_p0
Все точки таблицы записываются в DSP в их линейном формате усиления.
SW Slew RateRotaryVolAlg1stepЗначение скорости нарастания сигнала (slew rate), записываемое в DSP, вычисляется по формуле:
2^(-SW Slew Rate)

Описание алгоритма

Регулятор громкости Rotary Volume позволяет использовать входы GPIO от вращающегося энкодера для управления произвольной кривой громкости. Кривая громкости может быть любой: линейной, логарифмической или произвольной, и может быть построена с использованием любого количества точек. При повороте энкодера громкость будет увеличиваться или уменьшаться в соответствии с кривой громкости в таблице. Переход между точками таблицы является плавным, и его скорость определяется параметром Slew rate. Время антидребезга (Debounce) используется для сглаживания фактического физического входа GPIO вращающегося энкодера.

Пример

На следующем изображении показано, как два входа GPIO используются для управления алгоритмом громкости в блоке Rotary Volume. Алгоритм Rotary Volume был расширен для поддержки стереофонического аудио. Mux-переключатель позволяет сравнивать прямой сигнал со входов и сигнал с отрегулированной громкостью, направляемый на выходы. Блоки Interface Read и Interface Write позволяют сохранять и восстанавливать последний уровень громкости.

Пример

Детали алгоритма

Toolbox PathGPIO Conditioning - Volume Control - Rotary - Rotary Volume
Cores SupportedADAU170x
ADAU144x
ADAU176x
ADAU178x
“Grow Algorithm” Supportedyes - see Algorithm Growth Information
“Add Algorithm” Supportedno
Subroutine/Loop Basedno
Program RAM88*
Data RAM41*
Parameter RAM36* - Based on 33 points in table: each point = 1 Parameter RAM

*Числа основаны на одном экземпляре алгоритма без дополнительных операций «add» или «grow»

Информация о расширении алгоритма

DescriptionКогда алгоритм Rotary Volume расширяется, к управлению добавляется дополнительная пара входных/выходных пинов. Вся обработка, связанная с вращающимся энкодером и регулировкой громкости, остается прежней, но расширение позволяет добавлять новые пары входных/выходных аудиосигналов для применения регулировки усиления.Информация о расширении алгоритма
Program RAM Repetition2 per growth
Data RAM Repetition9 per growth
Parameter RAM Repetitionnone

Rotary Volume в SigmaStudio: настройка и параметры

Rotary Volume — это специализированный блок в среде SigmaStudio, предназначенный для управления уровнем громкости аудиосигнала с помощью внешнего вращающегося энкодера, подключенного к входам GPIO сигнального процессора ADAU семейства SigmaDSP. Данный компонент относится к категории GPIO Conditioning и объединяет в себе функциональность нескольких стандартных узлов: обработчика вращающегося энкодера, логики Up/Down Control, таблицы поиска и программного регулятора громкости. Такой подход позволяет реализовать законченный узел управления уровнем в одном алгоритме, не собирая цепочку из отдельных блоков вручную. Принцип работы Rotary Volume основан на чтении двух управляющих сигналов с GPIO энкодера: импульсы увеличения и уменьшения громкости поступают на входы Rotary Input Up и Rotary Input Down. Алгоритм преобразует эти сигналы в приращения индекса внутри таблицы громкости Volume Table. Пользователь имеет возможность задать произвольную кривую изменения усиления, которая может быть линейной, логарифмической или любой другой формы. Таблица содержит до 800 точек, каждая из которых представляет собой значение усиления в линейном представлении. Хотя диапазон значений допускает установку от -16 до 15.99, для корректной работы рекомендуется использовать диапазон от 0 до 1. Для обеспечения плавности перехода между соседними точками кривой предусмотрен параметр SW Slew Rate, который управляет скоростью нарастания сигнала. Значение этого параметра записывается в DSP в виде коэффициента, вычисляемого по формуле 2^(-SW Slew Rate).