exponenta event banner

multibandParametricEQ

Многополосный параметрический эквалайзер

Описание

multibandParametricEQ Система object™ выполняет многополосное параметрическое выравнивание независимо по каждому каналу ввода с использованием заданных центральных частот, коэффициентов усиления и качества. Можно настроить системный объект, содержащий до 10 областей данных. Можно добавить фильтры нижнего и верхнего уровней, а также фильтры верхнего и нижнего уровней (high-pass (low-cut) и low-pass (high-cut).

Для реализации многополосного параметрического эквалайзера:

  1. Создать multibandParametricEQ и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

mPEQ = multibandParametricEQ создает объект System, mPEQ, которая выполняет многополосное параметрическое выравнивание.

mPEQ = multibandParametricEQ(Name,Value) задает каждый аргумент конструкции или свойство Name к указанному Value. Неуказанные свойства и аргументы создания имеют значения по умолчанию.

Пример: mPEQ = multibandParametricEQ('NumEQBands',3,'Frequencies',[300,1200,5000]) создает объект системы многополосного параметрического эквалайзера, mPEQ, с NumEQBands установить в значение 3 и Frequencies свойство имеет значение [300,1200,5000].

Примечание

Значение, указанное NumEQBands, должно быть длиной векторов строк, заданных частотами, факторами QualityFactors и PeakGains. При создании объекта System первое указанное свойство блокирует значение.

Аргументы создания

развернуть все

Аргументы создания - это свойства, которые задаются во время создания объекта System и не могут быть изменены позже. Если явно значение аргумента создания не задано, свойство принимает значение по умолчанию.

Число диапазонов эквалайзера, указанное как целое число в диапазоне [1, 10]. Число полос эквалайзера не включает фильтры полки, фильтры верхних частот или фильтры нижних частот.

NumEQBands задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('NumEQBands',5) создает многополосный параметрический эквалайзер с 5 полосами.

Типы данных: single | double

Порядок отдельных диапазонов эквалайзера, определяемый как четное целое число. Все полосы корректора имеют одинаковый порядок.

EQOrder задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('EQOrder',6) создает многополосный параметрический эквалайзер с 3 полосами по умолчанию, все порядка 6.

Типы данных: single | double

Переключатель фильтра нижней полки, указанный как false или true.

  • false - Не включайте фильтрацию в нижней полке в реализации многополосного параметрического эквалайзера.

  • true -Включить фильтрацию нижнего блока в реализацию многополосного параметрического эквалайзера.

HasLowShelfFilter задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('HasLowShelfFilter',true) создает многополосный параметрический эквалайзер по умолчанию с включенной фильтрацией нижних блоков.

Типы данных: logical

Переключатель фильтра высокого уровня, указанный как false или true.

  • false - Не включайте высококлассную фильтрацию в реализации многополосного параметрического эквалайзера.

  • true - Включить фильтрацию в многополосном параметрическом эквалайзере.

HasHighShelfFilter задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('HasHighShelfFilter',true) создает многополосный параметрический эквалайзер по умолчанию с включенной фильтрацией высокого уровня.

Типы данных: logical

Переключатель фильтра нижних частот, указанный как false или true.

  • false - Не включайте фильтрацию нижних частот в реализации многополосного параметрического эквалайзера.

  • true - Включить фильтрацию нижних частот в реализации многополосного параметрического эквалайзера.

HasLowpassFilter задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('HasLowpassFilter',true) создает многополосный параметрический эквалайзер по умолчанию с включенной фильтрацией нижних частот.

Типы данных: logical

Переключатель фильтра верхних частот, указанный как false или true.

  • false - Не включайте фильтрацию верхних частот в реализации многополосного параметрического эквалайзера.

  • true - Включить фильтрацию верхних частот в реализации многополосного параметрического эквалайзера.

HasHighpassFilter задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('HasHighpassFilter',true) создает многополосный параметрический эквалайзер по умолчанию с включенной фильтрацией верхних частот.

Типы данных: logical

Переключатель «Избыточная выборка», указанный как false или true.

  • false - Запускает многополосный параметрический эквалайзер с частотой входных выборок.

  • true - Запускает многополосный параметрический эквалайзер с двухкратной частотой входных выборок. Избыточная дискретизация сводит к минимуму эффекты искажения частоты, вносимые билинейным преобразованием.

    Полупериодический интерполятор выполняет избыточную выборку перед выравниванием. Полуполосный прореживатель уменьшает частоту дискретизации обратно до входной частоты дискретизации после выравнивания.

Oversample задается во время создания объекта System и не может быть изменен позже. Если явно не задать его значение, свойство принимает значение по умолчанию.

Пример: mPEQ = multibandParametricEQ('Oversample',true) создает многополосный параметрический эквалайзер по умолчанию с включенной избыточной выборкой.

Типы данных: logical

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Многополосный эквалайзер

Центральные частоты диапазонов эквалайзера в Гц, задаваемые как вектор строки длины NumEQBands. Вектор состоит из вещественных скаляров в диапазоне от 0 до SampleRate/2.

Настраиваемый: Да

Типы данных: single | double

Коэффициенты качества диапазонов эквалайзера, заданные как вектор строки длины NumEQBands. Вектор состоит из вещественных скаляров в диапазоне [0,2, 700]. Любые значения за пределами диапазона являются насыщенными.

Настраиваемый: Да

Типы данных: single | double

Пиковое или понижающее усиление фильтра в дБ, указанное как вектор строки длины NumEQBands. Вектор состоит из вещественных скаляров в диапазоне [-inf, 20]. Насыщают значения выше 20.

Настраиваемый: Да

Типы данных: single | double

Фильтр нижней полки

Отсечка фильтра нижней полки в Гц, заданная как скаляр, больший или равный 0.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, задайте для параметра HasLowInterfect значение true во время создания.

Типы данных: single | double

Коэффициент наклона нижнего фильтра, заданный как действительный скаляр в диапазоне [0,1, 5]. Значения за пределами диапазона насыщены.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, задайте для параметра HasLowInterfect значение true во время создания.

Типы данных: single | double

Коэффициент усиления нижнего фильтра в дБ, заданный как действительный скаляр в диапазоне [-12, 12]. Значения за пределами диапазона насыщены.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, задайте для параметра HasLowInterfect значение true во время создания.

Типы данных: single | double

Высокопроизводительный фильтр

Отсечка фильтра высокой емкости в Гц, заданная как действительный скаляр, больший или равный 0.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, задайте для HashHighedFilter значение true во время создания.

Типы данных: single | double

Высокий коэффициент наклона фильтра, заданный как действительный скаляр в диапазоне [0,1, 5]. Значения за пределами диапазона насыщены.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, задайте для HashHighedFilter значение true во время создания.

Типы данных: single | double

Высокий коэффициент усиления фильтра в дБ, заданный как действительный скаляр в диапазоне [-12, 12]. Значения за пределами диапазона насыщены.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, задайте для HashHighedFilter значение true во время создания.

Типы данных: single | double

Фильтр нижних частот

Частота отсечки фильтра нижних частот в Гц, заданная как действительный скаляр, больший или равный 0.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите HasLowpassFilter в значение true во время создания.

Типы данных: single | double

Наклон фильтра нижних частот в дБ/октавах, заданный как действительный скаляр в диапазоне [0:6:48]. Значения, не кратные 6, округляются до ближайшего кратного 6.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите HasLowpassFilter в значение true во время создания.

Типы данных: single | double

Фильтр верхних частот

Отсечка фильтра верхних частот в Гц, заданная как действительный скаляр, больший или равный 0.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите HashpassFilter в значение true во время создания.

Типы данных: single | double

Наклон фильтра верхних частот в дБ/октавах, заданный как действительный скаляр в диапазоне [0:6:48]. Значения, не кратные 6, округляются до ближайшего кратного 6.

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите HashpassFilter в значение true во время создания.

Типы данных: single | double

Выборка

Частота входных выборок в Гц, заданная как положительный скаляр.

Настраиваемый: Да

Типы данных: single | double

Использование

Синтаксис

Описание

пример

audioOut = mPEQ(audioIn) осуществляет многополосное параметрическое выравнивание по входному сигналу, audioInи возвращает отфильтрованный сигнал, audioOut. Тип выравнивания определяется алгоритмом и свойствами multibandParametricEQ Системный объект, mPEQ.

Входные аргументы

развернуть все

Вход звука в эквалайзер, заданный как матрица. Столбцы матрицы обрабатываются как независимые аудиоканалы.

Типы данных: single | double

Выходные аргументы

развернуть все

Аудиовыход от эквалайзера, возвращаемый в виде матрицы того же размера, что и audioIn.

Типы данных: single | double

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

createAudioPluginClassСоздать класс аудиоплагинов, реализующий функциональность объекта System
visualizeВизуализация амплитудной характеристики многополосного параметрического эквалайзера
parameterTunerНастройка параметров объекта во время потоковой передачи
configureMIDIНастройка соединений MIDI между аудиообъектом и контроллером MIDI
disconnectMIDIОтключить элементы управления MIDI от аудиообъекта
getMIDIConnectionsПолучение MIDI-соединений аудиообъекта
cloneСоздать повторяющийся объект System
isLockedОпределить, используется ли объект System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System
stepЗапустить алгоритм объекта System

createAudioPluginClass и configureMIDI функции отображают настраиваемые свойства multibandParametricEQ Системный объект для пользовательских параметров:

СобственностьДиапазонОтображениеЕдиница
Frequencies[20, 20000]регистрацияHz
QualityFactors[0.2, 700]линейныйничего
PeakGains[–50, 20]линейныйdB
LowShelfCutoff[20, 20000]регистрацияHz
LowShelfSlope[0.1, 5]линейныйничего
LowShelfGain[–12, 12]линейныйdB
HighShelfCutoff[20, 20000]регистрацияHz
HighShelfSlope [0.1, 5]линейныйничего
HighShelfGain[–12, 12]линейныйdB
LowpassCutoff[20, 20000]регистрацияHz
LowpassSlope[0, 48]линейныйдБ/октава
HighpassCutoff[20, 20000]регистрацияHz
HighpassSlope[0, 48]линейныйдБ/октава

Примеры

свернуть все

Создать dsp.AudioFileReader и audioDeviceWriter объекты. Используйте частоту выборки устройства чтения в качестве частоты выборки устройства записи. Звонить setup уменьшение вычислительной нагрузки инициализации в цикле аудиопотока.

frameLength = 512;

fileReader = dsp.AudioFileReader( ...
    'Filename','RockDrums-48-stereo-11secs.mp3', ...
    'SamplesPerFrame',frameLength);
deviceWriter = audioDeviceWriter( ...
    'SampleRate',fileReader.SampleRate);

setup(deviceWriter,ones(frameLength,2))

Создайте трехдиапазонный параметрический эквалайзер с фильтром высокого класса.

mPEQ = multibandParametricEQ( ...
    'NumEQBands',3, ...
    'Frequencies',[300,1200,5000], ...
    'QualityFactors',[1,1,1], ...
    'PeakGains',[8,-10,7], ...
    'HasHighShelfFilter',true, ...
    'HighShelfCutoff',14000, ...
    'HighShelfSlope',0.3, ...
    'HighShelfGain',-5, ...
    'SampleRate',fileReader.SampleRate);

Визуализируйте амплитудную частотную характеристику многополосного параметрического эквалайзера.

visualize(mPEQ)

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

count = 0;
while ~isDone(fileReader)
    originalSignal = fileReader();
    equalizedSignal = mPEQ(originalSignal);
    deviceWriter(equalizedSignal);
    if mod(count,100) == 0
        mPEQ.PeakGains(1) = mPEQ.PeakGains(1) - 1.5;
        mPEQ.PeakGains(2) = mPEQ.PeakGains(2) + 1.5;
        mPEQ.PeakGains(3) = mPEQ.PeakGains(3) - 1.5;
    end
    count = count + 1;
end

release(fileReader)
release(mPEQ)
release(deviceWriter)

Уменьшите деформацию, указав multibandParametricEQ объект для выполнения избыточной выборки перед выравниванием.

Создайте однополосный эквалайзер. Визуализируйте полосу эквалайзера, когда его центральная частота приближается к скорости Найквиста.

mPEQ = multibandParametricEQ( ...
    'NumEQBands',1, ...
    'Frequencies',9.5e3, ...
    'PeakGains',10);
visualize(mPEQ)

for i = 1:1000
    mPEQ.Frequencies = mPEQ.Frequencies + 8;
end

Полоса эквалайзера деформируется.

Создание однополосного эквалайзера с помощью Oversample установить в значение true. Визуализируйте полосу эквалайзера, когда его центральная частота приближается к скорости Найквиста.

mPEQOversampled = multibandParametricEQ( ...
    'NumEQBands',1, ...
    'Frequencies',9.5e3, ...
    'PeakGains',10, ...
    'Oversample',true);
visualize(mPEQOversampled)

for i = 1:1000
    mPEQOversampled.Frequencies = mPEQOversampled.Frequencies + 8;
end

Деформация уменьшается.

Создать dsp.AudioFileReader для чтения в аудио покадровом режиме. Создать audioDeviceWriter для записи звука на звуковую карту. Создать multibandParametricEQ для обработки аудиоданных. Звонить visualize для построения графика частотной характеристики эквалайзера.

frameLength = 1024;
fileReader = dsp.AudioFileReader('RockDrums-44p1-stereo-11secs.mp3','SamplesPerFrame',frameLength);
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

equalizer = multibandParametricEQ('SampleRate',fileReader.SampleRate, 'PeakGains',[-2,2,4]);
visualize(equalizer)

Звонить parameterTuner открытие пользовательского интерфейса для настройки параметров эквалайзера во время потоковой передачи.

parameterTuner(equalizer)

В цикле аудиопотока:

  1. Считывание в кадре звука из файла.

  2. Применить выравнивание.

  3. Запишите кадр звука на аудиоустройство для прослушивания.

Во время потоковой передачи настройте параметры эквалайзера и прослушайте эффект.

while ~isDone(fileReader)
    audioIn = fileReader();
    audioOut = equalizer(audioIn);
    deviceWriter(audioOut);
    drawnow limitrate % required to update parameter
end

Рекомендуется деблокировать объекты после их завершения.

release(deviceWriter)
release(fileReader)
release(equalizer)

Расширенные возможности

.
Представлен в R2016a