Этот пример демонстрирует две формы графических эквалайзеров, созданных с помощью стандартных блоков от 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: [1x10 double] SampleRate: 44100
Вызовите visualize
, чтобы просмотреть ответ значения проекта эквалайзера.
visualize(eq)
Можно протестировать эквалайзер, реализованный в graphicEQ
с помощью audioTestBench
. Аудио испытательный стенд настраивает считывающее устройство звукового файла и объекты средства записи аудио устройства, и передает аудио потоком через эквалайзер в цикле обработки. Это также присваивает ползунок каждому значению усиления и маркирует центральную частоту, которой это соответствует, таким образом, можно легко изменить усиление и услышать его эффект. Изменение значения ползунка одновременно обновляет график ответа значения.
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
. Это обеспечивает ползунок для каждого значения усиления, таким образом, можно легко повысить или сократить диапазон частот, в то время как симуляция запускается.