exponenta event banner

Графическое выравнивание

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

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

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

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

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

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

Корректоры графики с параллельными фильтрами

Одним из способов построения графического эквалайзера является параллельное размещение группы полосовых фильтров. Ширина полосы пропускания каждого фильтра составляет октаву или дробную октаву, а их центральная частота устанавливается так, чтобы они вместе покрывали диапазон звуковых частот [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 использование звукового стенда. Стенд аудиотестирования устанавливает объекты чтения аудиофайлов и записи аудиоустройств и пропускает аудиосигнал через эквалайзер в цикле обработки. Он также назначает ползунок для каждого значения усиления и маркирует центральную частоту, которой он соответствует, чтобы можно было легко изменить усиление и услышать его эффект. При изменении значения ползунка одновременно обновляется график отклика на величину.

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)

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

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

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

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 через блок графического EQ. Он обеспечивает ползунок для каждого значения усиления, чтобы можно было легко увеличить или сократить полосу частот во время выполнения моделирования.