designShelvingEQ

Проект эквалайзера полок

Описание

пример

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

пример

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

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

Примеры

свернуть все

Разработайте три эквалайзера второго БИХ низкополочного порядков, используя 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.

Разработайте три эквалайзера второго БИХ высокого порядка с использованием 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 для коэффициентов биквадного фильтра Audio EQ». Доступ получен 02 марта 2016 года. http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2016a