Графическая эквализация

Этот пример демонстрирует две формы графических эквалайзеров, созданных с использованием базовых блоков из Audio Toolbox™. Также показано, как экспортировать их как плагины VST для использования в Digital Audio Workstation (DAW).

Графические эквалайзеры

Эквалайзеры обычно используются аудиотехниками и потребителями, чтобы настроить частотную характеристику аудио. Например, их можно использовать, чтобы компенсировать смещение, введённое динамиками, или чтобы добавить басы в песню. Они по существу являются группой фильтров, разработанных для обеспечения пользовательской общей частотной характеристики.

Один из более сложных методов эквализации известен как параметрическая эквализация. Параметрические эквалайзеры обеспечивают управление тремя параметрами фильтра: центральной частотой, шириной полосы пропускания и усилением. Audio Toolbox™ обеспечивает multibandParametricEQ Системный объект и блок Parametric EQ для параметрической эквализации.

В то время как параметрические эквалайзеры полезны, когда вы хотите подстроить частотную характеристику, существуют более простые эквалайзеры для случаев, когда вам нужно меньше элементов управления. Октава, две третьи октавы и одна третья октава оказались общими полосами для эквалайзеров, основанными на поведении человеческого уха. Такие стандарты, как IS0 266:1997 (E), ANSI S1.11-2004 и IEC 61672-1: 2013, определяют центральные частоты для октавных и дробных октавных фильтров. Это оставляет только один параметр, чтобы настроить: коэффициент усиления фильтра. Графические эквалайзеры обеспечивают управление параметром усиления при использовании стандартных центральных частот и общих полос пропускания.

В этом примере вы используете две реализации графических эквалайзеров. Они отличаются расположением составных фильтров: Один использует банк параллельных октав- или дробных октавно-диапазонных фильтров, другой использует каскад биквадных фильтров. Центральные частоты в обеих реализациях следуют стандарту S1.11-2004 ANSI.

Графические эквалайзеры с параллельными фильтрами

Один из способов создать графический эквалайзер - разместить группу полосно-пропускающих фильтров параллельно. Шумовая полоса каждого фильтра октавная или дробная октава, и их центральная частота установлена так, что вместе они покрывают область значений звуковой частоты [20, 20000] Гц.

Передаточная функция является суммой передаточной функции ветвей.

Можно настроить усиления, чтобы увеличить или сократить соответствующую полосу частот во время симуляции. Поскольку усиления не зависят от создания фильтра, настройка усиления не имеет значительных вычислительных затрат. Структура параллельного фильтра хорошо подходит для параллельной аппаратной реализации. Величина реакция полосно-пропускающих фильтров должна быть близкой к нулю на всех других частотах, выходящих за пределы ее полосы пропускания, чтобы избежать взаимодействия между фильтрами. Однако это нецелесообразно, что приводит к межполосной интерференции.

Можно использовать graphicEQ Системный объект для реализации графического эквалайзера с параллельной структурой.

eq = graphicEQ('Structure','Parallel')
eq = 
  graphicEQ with properties:

       EQOrder: 2
     Bandwidth: '1 octave'
     Structure: 'Parallel'
         Gains: [0 0 0 0 0 0 0 0 0 0]
    SampleRate: 44100

Это проектирует параллельную реализацию фильтров второго порядка с 1-октавной полосой пропускания. Для охвата области значений звуковых частот требуется десять октавных фильтров. Каждый элемент Gains свойство управляет усилением одной ветви параллельного строения.

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

eq.Gains = [4, 4.2, 4.6, 2.7, -3.7, -5.2, -2.5, 2.3, 5.4, 6.5, 6.5]
eq = 
  graphicEQ with properties:

       EQOrder: 2
     Bandwidth: '1 octave'
     Structure: 'Parallel'
         Gains: [4 4.2000 4.6000 2.7000 -3.7000 -5.2000 -2.5000 2.3000 5.4000 6.5000]
    SampleRate: 44100

Функции visualize чтобы просмотреть величину ответ эквалайзера проекта.

visualize(eq)

Можно протестировать эквалайзер, реализованный в graphicEQ использование Audio Test Bench. Аудио испытательного стенда настраивает устройство чтения аудио файла и аудио устройства объекты средства записи и пропускает аудио через эквалайзер в цикле обработки. Он также присваивает ползунок каждому значению усиления и помечает центральную частоту, которой он соответствует, так что вы можете легко изменить усиление и услышать его эффект. Изменение значения ползунка одновременно обновляет величину графика отклика.

audioTestBench(eq)

Графические эквалайзеры с каскадными фильтрами

В другой реализации графического эквалайзера используются каскадные эквализирующие фильтры (пик или надрез), реализованные в качестве биквадных фильтров. Передаточная функция эквалайзера может быть записана как продукт передаточной функции отдельных биквадов.

Чтобы мотивировать полезность этой реализации, сначала посмотрите на величину реакцию параллельной структуры, когда все усиления составляют 0 дБ.

parallelGraphicEQ = graphicEQ('Structure','Parallel');
visualize(parallelGraphicEQ)

Вы заметите, что реакция величины не плоская. Это связано с тем, что фильтры были разработаны независимо, и каждый имеет ширину перехода, где величина отклика падает. Кроме того, из-за неидеальной пробки происходит утечка из пробки одного фильтра в полосу пропускания его соседа. Утечки могут привести к тому, что фактическое усиление будет отличаться от ожидаемого усиления.

parallelGraphicEQ_10dB = graphicEQ('Structure','Parallel');
parallelGraphicEQ_10dB.Gains = 10*ones(1,10);
visualize(parallelGraphicEQ_10dB)

Обратите внимание, что коэффициент усиления никогда не равен 10 дБ в частотной характеристики. Каскадная структура может уменьшить это до некоторой степени, потому что усиление присуще проекту фильтра. Установка коэффициента усиления всех каскадных биквадов равного 0 дБ приводит к их обходу. Поскольку в этом типе структуры нет ветвей, это означает, что у вас есть путь без усиления между входом и выходом. graphicEQ реализует каскадную структуру по умолчанию.

cascadeGraphicEQ = graphicEQ;
visualize(cascadeGraphicEQ)

Более того, когда вы устанавливаете коэффициент усиления 10 дБ, заметьте, что результирующая частотная характеристика близка к 10 дБ коэффициента усиления на центральных частотах.

cascadeGraphicEQ_10dB = graphicEQ;
cascadeGraphicEQ_10dB.Gains = 10*ones(1,10);
visualize(cascadeGraphicEQ_10dB)

Недостатком каскадного проекта является то, что коэффициенты биквадной ступени должны быть изменены всякий раз, когда изменяется соответствующий коэффициент усиления. Это не нужно для параллельной реализации, потому что коэффициент усиления является всего лишь умножителем на каждую параллельную ветвь. Параллельное соединение полосно-пропускающих фильтров также избегает накопления ошибок фазы и шума квантования, обнаруженного в каскаде.

Дробная октавная пропускная способность

The graphicEQ объект поддерживает 1 octave, 2/3 octave, и 1/3 octave полосы пропускания. Уменьшение пропускной способности отдельных фильтров позволяет вам более мелко контролировать частотную характеристику. Чтобы убедиться в этом, установите коэффициент усиления, чтобы увеличить средние частоты, подобно pop preset.

octaveGraphicEQ = graphicEQ;
octaveGraphicEQ.Gains = [-2.1,-1.8,-1.4,2.7,4.2,4.6,3.1,-1,-1.8,-1.8,-1.4];
visualize(octaveGraphicEQ)

oneThirdOctaveGraphicEQ = graphicEQ;
oneThirdOctaveGraphicEQ.Bandwidth = '1/3 octave';
oneThirdOctaveGraphicEQ.Gains = [-2,-1.9,-1.8,-1.6,-1.5,-1.4,0,1.2,2.7, ...
    3.2,3.8,4.2,4.4,4.5,4.6,4,3.5,3.1,1.5,-0.1,-1,-1.2,-1.6,-1.8,-1.8, ...
    -1.8,-1.8,-1.7,-1.5,-1.4,-1.3];
visualize(oneThirdOctaveGraphicEQ)

Сгенерируйте аудиоплагин

Чтобы сгенерировать и портировать плагин VST на рабочую станцию цифрового аудио, запустите generateAudioPlugin команда. Для примера можно сгенерировать графический эквалайзер с двумя третьими октавами с помощью команд, показанных ниже. При запуске этих команд вы должны будете находиться в директории с разрешениями на запись.

twoThirdOctaveGraphicEQ = graphicEQ;
twoThirdOctaveGraphicEQ.Bandwidth = '2/3 octave';
createAudioPluginClass(twoThirdOctaveGraphicEQ);
generateAudioPlugin twoThirdOctaveGraphicEQPlugin

Графическая эквализация в Simulink

Можно использовать те же функции, которые описаны в этом примере в Simulink через блок Graphic EQ. Он обеспечивает ползунок для каждого значения усиления, поэтому вы можете легко увеличить или сократить полосу частот во время симуляции.