ΣSigmaStudio English

PushButton Volume

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

Этот блок имеет ту же функциональность, что и алгоритм PushButton Volume, Mute, за исключением функции отключения звука (mute) при одновременном нажатии обеих кнопок GPIO.

Входные пины

NameFormat
[int/dec] - [control/audio]
Function Description
Pin 0: PushButton Upint - controlСигнал GPIO от кнопки, который увеличивает громкость
Pin 1: PushButton Downint - controlСигнал GPIO от кнопки, который уменьшает громкость
Pin 2: Interface Readn/aРегистр Interface Read для загрузки предыдущего постоянного значения данных в алгоритм
Pin 3: Interface Readdecimal - 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
Invert GPIOunchecked[checked,
unchecked]
Установка этого флажка инвертирует сигнал на входах для кнопок GPIO. Аппаратное обеспечение SigmaDSP GEN2 имеет регистровые функции для инвертирования сигнала, однако аппаратное обеспечение GEN3 этого не поддерживает. Установка или снятие этого флажка требует перекомпиляции, так как для реализации этой функции программный код добавляется или удаляется.
Hold (ms)500[0, 10000]Определяет, как долго удерживается текущий уровень громкости, прежде чем будут генерироваться повторяющиеся импульсы для увеличения/уменьшения громкости, пока кнопка удерживается нажатой.
Repeat (ms)250[0, 10000]Задает временной интервал между повторяющимися импульсами во время удержания.
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
Hold (ms)PushButtonVolAlg1holdtimeВремя удержания записывается в DSP как количество сэмплов, представляющее время в миллисекундах: Сэмплы =
HoldTime(ms)*10^-3 *Fs
Repeat (ms)PushButtonVolAlg1repeattimeВремя отпускания записывается в DSP как количество сэмплов, представляющее время в миллисекундах: Сэмплы =
HoldTime(ms)*10^-3 *Fs
Volume Table PointsPushButtonVolAlg1maxindexКоличество точек минус 1 является максимальным индексом в таблице.
Volume Table ValuesPushButtonVolAlg1table_p0
Все точки в таблице записываются в DSP в их линейном формате усиления.
SW Slew RatePushButtonVolAlg1stepЗначение скорости нарастания сигнала (slew rate), записываемое в DSP, соответствует формуле:
2^(-SW Slew Rate)

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

Элемент управления PushButton Volume позволяет двум входам GPIO от кнопок управлять пользовательской кривой громкости. Кривая громкости может быть любой линейной, логарифмической или пользовательской кривой, построенной с любым количеством точек. При нажатии кнопки «Up» (Вверх) громкость увеличивается, индексируясь вверх по значениям таблицы. При нажатии кнопки «Down» (Вниз) громкость уменьшается, индексируясь вниз по значениям таблицы. При достижении предельного индекса на любом конце громкость просто удерживается.

Когда кнопка удерживается в положении «вверх» или «вниз», алгоритм прокручивает точки усиления громкости со скоростью, определяемой временем удержания (hold) и повтора (repeat). Время удержания определяет, как долго должна удерживаться кнопка, прежде чем будет запущен новый импульс повтора. Импульс повтора определяет интервал между инкрементальным или декрементальным переходом по точкам громкости, пока кнопка удерживается.

Пример

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

Пример

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

Toolbox PathGPIO Conditioning - Volume Control - Push Button - PushButton Volume
Cores SupportedADAU170x
ADAU144x
ADAU176x
ADAU178x
“Grow Algorithm” Supportedyes - see Algorithm Growth Information
“Add Algorithm” Supportedno
Subroutine/Loop Basedno
Program RAM102*
Program RAM (Invert GPIO)106*
Data RAM31*
Parameter RAM37* - Based on 33 points in table: each point = 1 Parameter RAM

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

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

DescriptionКогда алгоритм PushButton Volume расширяется (grow), к элементу управления добавляется дополнительная пара входных/выходных пинов. Вся обработка, связанная с обработкой громкости кнопки, происходит одинаково, но расширение позволяет добавлять новые пары входных/выходных аудиосигналов для применения регулировки усиления.Информация о расширении алгоритма
Program RAM Repetition2 per growth
Program RAM Repetition (Invert GPIO)2 per growth
Data RAM Repetition1 per growth
Parameter RAM Repetitionnone

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

PushButton Volume — это функциональный блок в среде SigmaStudio, предназначенный для управления громкостью аудиосигнала с помощью внешних кнопок, подключенных к входам GPIO процессоров семейства SigmaDSP (ADAU). Данный компонент объединяет в себе логику работы нескольких стандартных модулей: обработки нажатия и удержания кнопки, инкрементального изменения значения, таблицы поиска и программного регулятора уровня. Это позволяет создать законченную систему регулировки громкости без использования дополнительных аппаратных средств. Принцип работы блока основан на обработке двух управляющих сигналов от кнопок «громче» и «тише». При нажатии на кнопку блок изменяет текущее значение усиления, перемещаясь по точкам заданной пользователем кривой громкости. Для плавности перехода используется параметр SW Slew Rate, который ограничивает скорость нарастания сигнала при смене уровня. Если кнопка удерживается нажатой, блок генерирует повторяющиеся импульсы изменения громкости. Интервал между началом удержания и первым повторным срабатыванием задается параметром Hold, а частота последующих изменений — параметром Repeat. Ключевой особенностью является возможность гибкой настройки кривой громкости через таблицу Volume Table. Пользователь может задать от 2 до 800 точек, каждая из которых представляет собой значение усиления в линейном представлении. Хотя формально диапазон значений шире, для корректной работы рекомендуется использовать значения в пределах от 0 до 1.