exponenta event banner

designShelvingEQ

Расчетный стеллажный эквалайзер

Описание

пример

[B,A] = designShelvingEQ(gain,slope,Fc) проектирует низкополочный эквалайзер с заданным коэффициентом усиления, наклоном и частотой отсечки, Fc. Корректор возвращается в виде каскадных БИХ-фильтров второго порядка (SOS).

пример

[B,A] = designShelvingEQ(gain,slope,Fc,type) указывает тип конструкции как выравниватель с низкой или высокой полкой.

[B,A] = designShelvingEQ(___,Name,Value) указывает параметры, использующие один или несколько Name,Value аргументы пары.

Примеры

свернуть все

Проектирование трех низкосортных эквалайзеров IIR второго порядка с использованием designShelvingEQ. Три полки эквалайзеров используют три отдельных спецификации уклона.

Укажите частоту дискретизации, пиковый коэффициент усиления, коэффициент наклона и нормированную частоту отсечения для трех выравнивателей полки. Частота дискретизации в Гц. Пиковое усиление находится в дБ.

Fs = 44.1e3;

gain = 5;

slope1 = 0.5;
slope2 = 0.75;
slope3 = 1;

Fc = 1000/(Fs/2);

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

[B1,A1] = designShelvingEQ(gain,slope1,Fc,"Orientation","row");
[B2,A2] = designShelvingEQ(gain,slope2,Fc,"Orientation","row");
[B3,A3] = designShelvingEQ(gain,slope3,Fc,"Orientation","row");

Визуализация конструкции фильтра.

fvtool( ...
    dsp.BiquadFilter([B1,A1]), ...
    dsp.BiquadFilter([B2,A2]), ...
    dsp.BiquadFilter([B3,A3]), ...
    "Fs",Fs, ...
    "FrequencyScale","Log");

legend("slope = 0.5", ...
    "slope = 0.75", ...
    "slope = 1");

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line. These objects represent slope = 0.5, slope = 0.75, slope = 1.

Создание объектов чтения аудиофайлов и записи аудиоустройств. Используйте частоту выборки устройства чтения в качестве частоты выборки устройства записи.

frameSize = 256;

fileReader = dsp.AudioFileReader("RockGuitar-16-44p1-stereo-72secs.wav","SamplesPerFrame",frameSize);

deviceWriter = audioDeviceWriter("SampleRate",fileReader.SampleRate);

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

count = 0;
while count < 2500
    audio = step(fileReader);
    play(deviceWriter,audio);
    count = count + 1;
end
reset(fileReader)

Спроектируйте эквалайзер нижнего уровня для секций второго порядка (SOS).

gain = 10;
slope = 3;
Fc = 0.025;

[B,A] = designShelvingEQ(gain,slope,Fc);

Визуализируйте конструкцию стеллажного фильтра.

SOS = [B',[1,A']];
fvtool(dsp.BiquadFilter("SOSMatrix",SOS), ...
    "Fs",fileReader.SampleRate, ...
    "FrequencyScale","Log");

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

Создайте объект биквадратного фильтра.

myFilter = dsp.BiquadFilter( ...
    "SOSMatrixSource","Input port", ...
    "ScaleValuesInputPort",false);

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

scope = dsp.SpectrumAnalyzer( ...
    "SampleRate",fileReader.SampleRate, ...
    "PlotAsTwoSidedSpectrum",false, ...
    "FrequencyScale","Log", ...
    "FrequencyResolutionMethod","WindowLength", ...
    "WindowLength",frameSize, ...
    "Title","Original and Equalized Signal", ...
    "ShowLegend",true, ...
    "ChannelNames",{'Original Signal','Equalized Signal'});

Воспроизведение выровненного звукового сигнала и визуализация исходного и выровненного спектров.

count = 0;
while count < 2500
    originalSignal = fileReader();
    equalizedSignal = myFilter(originalSignal,B,A);
    scope([originalSignal(:,1),equalizedSignal(:,1)]);
    deviceWriter(equalizedSignal);
    count = count + 1;
end

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

release(fileReader)
release(deviceWriter)
release(scope)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Original and Equalized Signal contains 2 objects of type line. These objects represent Original Signal, Equalized Signal.

Проектирование трех высокополочных эквалайзеров IIR второго порядка с использованием designShelvingEQ. Три полки эквалайзеров используют три отдельных характеристики усиления.

Укажите частоту дискретизации, пиковый коэффициент усиления, коэффициент наклона и нормированную частоту отсечения для трех выравнивателей полки. Частота дискретизации в Гц. Пиковое усиление находится в дБ.

Fs = 44.1e3;

gain1 = -6;
gain2 = 6;
gain3 = 12;

slope = 0.8;

Fc = 18000/(Fs/2);

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

[B1,A1] = designShelvingEQ(gain1,slope,Fc,"hi","Orientation","row");
[B2,A2] = designShelvingEQ(gain2,slope,Fc,"hi","Orientation","row");
[B3,A3] = designShelvingEQ(gain3,slope,Fc,"hi","Orientation","row");

Визуализация конструкции фильтра.

fvtool([B1,A1;[1 0 0 1 0 0]], ...
       [B2,A2;[1 0 0 1 0 0]], ...
       [B3,A3;[1 0 0 1 0 0]], ...
       "Fs",Fs);
   
legend("gain = -6 dB", ...
       "gain =  6 dB", ...
       "gain = 12 dB", ...
       "Location","NorthWest")

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line. These objects represent gain = -6 dB, gain = 6 dB, gain = 12 dB.

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

свернуть все

Пиковый коэффициент усиления в дБ, заданный как действительный скаляр в диапазоне от -12 до 12.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Коэффициент наклона, заданный как действительный скаляр в диапазоне от 0 до 5.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Нормализованная частота отсечения, заданная как действительный скаляр в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста (δ рад/выборка).

Нормализованная частота отсечки реализуется как половина коэффициента усиления фильтра-полки, или gain/ 2 дБ.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Тип фильтра, указанный как 'lo' или 'hi'.

  • 'lo'- Низкополочный эквалайзер

  • 'hi'- Высокополочный эквалайзер

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Orientation',"row"

Ориентация возвращаемых коэффициентов фильтра, определяемая как разделенная запятыми пара, состоящая из 'Orientation' и "column" или "row":

Типы данных: char | string

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

свернуть все

Коэффициенты числительного фильтра, возвращаемые в виде вектора. Размер и толкование B зависит от Orientation:

  • Если 'Orientation' имеет значение "column", то B возвращается как трехэлементный вектор столбца.

  • Если 'Orientation' имеет значение "row", то B возвращается как трехэлементный вектор строки.

.

Коэффициенты фильтра знаменателя проектируемого БИХ-фильтра второго порядка, возвращаемые в виде вектора. Размер и толкование A зависит от Orientation:

  • Если 'Orientation' имеет значение "column", то A возвращается как двухэлементный вектор столбца. A не включает ведущий единичный коэффициент.

  • Если 'Orientation' имеет значение "row", то A возвращается как трехэлементный вектор строки.

Ссылки

[1] Бристоу-Джонсон, Роберт. «Формулы cookbook для коэффициентов фильтра Biquad аудио EQ». Доступ состоялся 02 марта 2016 года. http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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