ΣSigmaStudio English

Одиночный регулятор громкости

Блок «Одиночный регулятор громкости» — это регулятор громкости, управляемый через GUI. Он обеспечивает доступ как к алгоритмам со слей (slew), так и без него.singlevolumecontrol1.jpg

Щелкните правой кнопкой мыши по границе или заголовку блока, чтобы добавить алгоритмы, которые добавляют пины, управляемые регулятором. Каждый пин может быть связан с другим алгоритмом (со слей или без) под управлением этого регулятора. Будьте внимательны при выборе нескольких алгоритмов. На блоке нет видимых обозначений, указывающих, соответствует ли каждый пин алгоритму со слей или без. Функция «Пользовательский комментарий» может помочь вам отслеживать, какие пины какому алгоритму соответствуют.

Контекстное меню также позволяет выбирать различные режимы слей (slew). Одиночный регулятор громкости

Минимальное/максимальное значение и шаг регулятора можно настроить. Чтобы изменить настройки регулятора, щелкните по нему правой кнопкой мыши, что вызовет всплывающее окно управления (показано ниже).

singlevolumecontrol2.jpg

Регулировка регулятора громкости с микроконтроллера

Предполагается, что у вас есть работающая платформа микроконтроллера с кодом интерфейса SigmaDSP, основанным на «Взаимодействие процессоров SigmaDSP с микроконтроллером».

SigmaStudio GUI позволяет пользователям выбирать значение усиления в dB. Однако внутри процессоров SigmaDSP значение регулятора громкости хранится как линейное усиление. SigmaStudio автоматически выполняет это преобразование. В системе с контроллером контроллер должен преобразовывать ввод пользователя в dB в линейное значение.

Линейный масштабный коэффициент хранится в десятичном формате (8.24 или 5.23).

Чтение значений громкости из SigmaDSP

double read_volume_control(int controlAddress) {
 double linear_gain = SIGMA_READ_REGISTER_FLOAT(controlAddress);
 return 20 * log10(linear_gain);
}

Пример использования:

// Выведи текущую громкость в dB; настрой MOD_SWVOL1_ALG0_TARGET_ADDR в соответствии с твоим регулятором громкости
Serial.println(read_volume_control(MOD_SWVOL1_ALG0_TARGET_ADDR));

Запись значений громкости в SigmaDSP

void write_volume_control(int controlAddress, double dBGain) {
 double linearGain = pow(10, dBGain / 20);
 SIGMA_WRITE_REGISTER_FLOAT(controlAddress, linearGain);
}

Пример использования:

// Установи текущую громкость регулятора на -30 dB
write_volume_control(MOD_SWVOL1_ALG0_TARGET_ADDR, -30);

Adjusting the Volume Control from a Microcontroller в SigmaStudio: настройка и параметры

Блок «Одиночный регулятор громкости» (Single Volume Control) в среде SigmaStudio предназначен для управления уровнем сигнала в проектах на процессорах семейства SigmaDSP Analog Devices. Это GUI-ориентированный компонент, который обеспечивает доступ к алгоритмам обработки как со слей-режимом (slew), так и без него. Регулятор позволяет задавать минимальное и максимальное значение усиления, а также шаг изменения, что делает его гибким инструментом для построения аудиотрактов. При работе с блоком важно понимать, что внутри процессора ADAU значение громкости хранится не в децибелах, а как линейный масштабный коэффициент в формате с фиксированной точкой 8.24 или 5.23. Интерфейс SigmaStudio автоматически выполняет преобразование из dB в линейное значение при настройке через графический интерфейс. Однако при управлении регулятором с внешнего микроконтроллера разработчику необходимо самостоятельно реализовать это преобразование, используя стандартные математические функции. Для чтения текущего уровня громкости из SigmaDSP используется функция, которая считывает линейное значение из регистра по адресу controlAddress и преобразует его в децибелы через логарифмическую зависимость: 20 * log10(linear_gain). В примере кода для Arduino подобная операция выполняется с помощью макроса MOD_SWVOL1_ALG0_TARGET_ADDR, который указывает на целевой регистр конкретного регулятора в адресном пространстве DSP.