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