multibandParametricEQ

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

Описание

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

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

  1. Создайте multibandParametricEQ Объекту и установите его свойства.

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

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

Создание

Описание

mPEQ = multibandParametricEQ создает Системный объект, mPEQ, который выполняет многодиапазонную параметрическую эквализацию.

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

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

Примечание

Значение, заданное в NumEQBands, должно быть длиной векторов-строк, заданной в Частотах, Факторах Качества и PeakGains. Во время создания Системного объекта первое заданное вами свойство блокирует значение.

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

расширить все

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

Количество полос эквалайзера, заданное в виде целого числа в области значений [1, 10]. Количество полос эквалайзера не включает в себя стеллажные фильтры, высокочастотные фильтры или lowpass.

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

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

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

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

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

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

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

Переключение низкополочного фильтра, заданное как false или true.

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

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

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

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

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

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

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

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

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

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

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

Lowpass, задаётся как false или true.

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

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

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

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

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

Переключение Highpass-фильтра, задается как false или true.

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

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

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

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

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

Переключатель Oversample, заданный как false или true.

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

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

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

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

Пример: 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.

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

Высокополочный фильтр

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

Lowpass Фильтр

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

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

Зависимости

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

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

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

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

Зависимости

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

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

Фильтр Highpass

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

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

Зависимости

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

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

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

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

Зависимости

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

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

Выборка

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

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

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

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

Синтаксис

Описание

пример

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

Входные параметры

расширить все

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

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

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

расширить все

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

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

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

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

release(obj)

расширить все

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

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