Этот пример демонстрирует две формы графических эквалайзеров, созданных с помощью базовых блоков от Audio Toolbox™. Это также показывает, как экспортировать их как плагины VST, которые будут использоваться в Цифровой звуковой рабочей станции (DAW).
Эквалайзеры обычно используются звукоинженерами и потребителями, чтобы настроить частотную характеристику аудио. Например, они могут использоваться, чтобы компенсировать смещение, введенное динамиками или добавить бас в песню. Они - по существу группа фильтров, спроектированных, чтобы предоставить пользовательскую полную частотную характеристику.
Один из более сложных методов эквализации известен как параметрическую эквализацию. Параметрические эквалайзеры обеспечивают управление тремя параметрами фильтра: центральная частота, пропускная способность и усиление. Audio Toolbox™ обеспечивает multibandParametricEQ
Системный объект и блок Parametric EQ для параметрической эквализации.
В то время как параметрические эквалайзеры полезны, когда это необходимо, чтобы подстроить частотную характеристику, существуют более простые эквалайзеры для случаев, когда вам нужно меньше средств управления. Октава, 2D третья октава и октава одной трети появились в качестве общей пропускной способности для эквалайзеров на основе поведения человеческого уха. Стандарты как IS0 266:1997 (E), ANSI S1.11-2004 и 61672-1:2013 IEC задают центральные частоты для октавы и дробных фильтров октавы. Это оставляет только один параметр, чтобы настроиться: отфильтруйте усиление. Графические эквалайзеры обеспечивают управление параметром усиления при использовании стандартных центральных частот и общей пропускной способности.
В этом примере вы используете две реализации графических эквалайзеров. Они отличаются по расположению составляющих фильтров: Каждый использует банк параллельной октавы - или дробных ленточных фильтров октавы и другого использования каскад фильтров biquad. Центральные частоты в обеих реализациях следуют стандарту 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
использование Audio Test Bench. Аудио испытательный стенд настраивает считывающее устройство звукового файла и объекты средства записи аудио устройства, и передает аудио потоком через эквалайзер в цикле обработки. Это также присваивает ползунок каждому значению усиления и помечает центральную частоту, которой это соответствует, таким образом, можно легко изменить усиление и услышать его эффект. Изменение значения ползунка одновременно обновляет график отклика величины.
audioTestBench(eq)
Различная реализация использования графического эквалайзера, расположенного каскадом, компенсируя фильтры (пик или метка) реализованный как biquad фильтры. Передаточная функция эквалайзера может быть записана как продукт передаточной функции отдельного biquads.
Чтобы мотивировать полноценность этой реализации, сначала посмотрите на ответ величины параллельной структуры, когда все усиления составят 0 дБ.
parallelGraphicEQ = graphicEQ('Structure','Parallel'); visualize(parallelGraphicEQ)
Вы заметите, что ответ величины не является плоским. Это вызвано тем, что фильтры были спроектированы независимо, и у каждого есть ширина перехода, где ответ величины свисает. Кроме того, из-за неидеальной полосы задерживания, существует утечка от полосы задерживания одного фильтра к полосе пропускания его соседа. Утечка может заставить фактические усиления отличаться от ожидаемых усилений.
parallelGraphicEQ_10dB = graphicEQ('Structure','Parallel'); parallelGraphicEQ_10dB.Gains = 10*ones(1,10); visualize(parallelGraphicEQ_10dB)
Обратите внимание на то, что усиления никогда не 10 дБ в частотной характеристике. Каскадная структура может смягчить это до степени, потому что усиление свойственно от проекта фильтра. Установка усиления всех расположилась каскадом, biquads к 0 дБ приводит к ним исключенный. С тех пор нет никаких ветвей в этом типе структуры, это означает, что у вас есть путь без усилений между входом и выходом. graphicEQ
реализует каскадную структуру по умолчанию.
cascadeGraphicEQ = graphicEQ; visualize(cascadeGraphicEQ)
Кроме того, когда вы устанавливаете усиления на 10 дБ, заметьте, что результирующая частотная характеристика имеет близко к 10 дБ усиления на центральных частотах.
cascadeGraphicEQ_10dB = graphicEQ; cascadeGraphicEQ_10dB.Gains = 10*ones(1,10); visualize(cascadeGraphicEQ_10dB)
Недостаток каскадного проекта - то, что коэффициенты этапа biquad должны быть перепроектированы каждый раз, когда соответствующее усиление изменяется. Это не необходимо для параллельной реализации, потому что усиление является только множителем к каждой параллельной ветви. Параллельная связь полосовых фильтров также старается не накапливать ошибки фазы и шум квантования, найденный в каскаде.
graphicEQ
поддержка объектов 1 octave
, 2/3 octave
, и 1/3 octave
пропускная способность. Сокращение пропускной способности отдельных фильтров позволяет вам более прекрасное управление частотной характеристикой. Чтобы проверить это, установите усиления повышать средние частоты, похожие на поп-предварительную установку.
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
команда. Например, можно сгенерировать 2D третий графический эквалайзер октавы посредством команд, показанных ниже. Необходимо будет быть в директории с полномочиями записи, когда вы запустите эти команды.
twoThirdOctaveGraphicEQ = graphicEQ; twoThirdOctaveGraphicEQ.Bandwidth = '2/3 octave'; createAudioPluginClass(twoThirdOctaveGraphicEQ); generateAudioPlugin twoThirdOctaveGraphicEQPlugin
Можно использовать те же функции, описанные в этом примере в Simulink через блок Graphic EQ. Это обеспечивает ползунок для каждого значения усиления, таким образом, можно легко повысить или сократить диапазон частот, в то время как симуляция запускается.