multibandParametricEQ

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

mPEQ = multibandParametricEQ
mPEQ = multibandParametricEQ(Name,Value)

Описание

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, должно быть длиной векторов - строк, заданных Частотами, QualityFactors и PeakGains. Во время создания Системного объекта первое свойство, которое вы задаете, блокирует значение.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • tRUE Включите низкую полку, просачивающуюся многополосная реализация параметрического эквалайзера.

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

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

Типы данных: логический

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

  • ложь Не включайте высокую полку, просачивающуюся многополосная реализация параметрического эквалайзера.

  • tRUE Включите высокую полку, просачивающуюся многополосная реализация параметрического эквалайзера.

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

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

Типы данных: логический

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

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

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

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

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

Типы данных: логический

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

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

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

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

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

Типы данных: логический

Сверхдискретизируйте переключатель, заданный как false или true.

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

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

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

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

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

Типы данных: логический

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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 фильтруют наклон в дБ/октаве, заданном как действительный скаляр в области значений [0:6:48]. Значения, которые не являются множителями 6, округлены к самому близкому кратному 6.

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

Зависимости

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

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

Фильтр Highpass

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

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

Зависимости

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

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

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

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

Зависимости

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

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

Выборка

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

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

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

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

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

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

audioOut = mPEQ(audioIn)

Описание

пример

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]журналГц
QualityFactors[0.2, 700]линейный'none'
PeakGains[–50, 20]линейныйдБ
LowShelfCutoff[20, 20000]журналГц
LowShelfSlope[0.1, 5]линейный'none'
LowShelfGain[–12, 12]линейныйдБ
HighShelfCutoff[20, 20000]журналГц
HighShelfSlope [0.1, 5]линейный'none'
HighShelfGain[–12, 12]линейныйдБ
LowpassCutoff[20, 20000]журналГц
LowpassSlope[0, 48]линейныйдБ/октава
HighpassCutoff[20, 20000]журналГц
HighpassSlope[0, 48]линейныйдБ/октава

Примеры

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

Создайте dsp.AudioFileReader и Систему audioDeviceWriter objects™. Используйте частоту дискретизации читателя как частота дискретизации средства записи. Вызовите 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 object™, чтобы выполнить сверхдискретизацию перед коррекцией.

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

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