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.

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

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] Бристоу-Джонсон, Роберт. "Формулы поваренной книги для Аудио Коэффициенты Фильтра EQ Biquad". Полученный доступ 02 марта 2016. http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt.

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

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

Введенный в R2016a