multibandParametricEQ

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

Описание

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

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

  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, должно быть длиной векторов-строк, заданных Частотами, 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.

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

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

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

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

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

Фильтр высокой полки переключается в виде false или true.

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

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

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

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

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

Фильтр lowpass переключается в виде false или true.

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

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

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

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

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

Highpass фильтруют переключатель в виде false или true.

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и 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 клонится в дБ/октаве в виде действительного скаляра в области значений [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

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

Синтаксис

Описание

пример

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 объекты. Используйте частоту дискретизации читателя как частота дискретизации средства записи. Вызовите 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