graphicEQ

Стандартизированный графический эквалайзер

Описание

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

Компенсировать звуковой сигнал:

  1. Создайте graphicEQ объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

equalizer = graphicEQ создает графический эквалайзер со значениями по умолчанию.

equalizer = graphicEQ(Name,Value) наборы каждое свойство Name к заданному Value. Незаданные свойства имеют значения по умолчанию.

Пример: equalizer = graphicEQ('Structure','Parallel','EQOrder','1/3 octave') создает Системный объект, equalizer, который реализует фильтрацию с помощью параллельной структуры и полосы пропускания фильтра октавы одной трети.

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release функция разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Усиление каждой октавы дробной полосы октавы в дБ в виде вектора-строки с длиной, определенной свойством Bandwidth:

  • '1 octave' – Задайте усиления как вектор-строку с 10 элементами.

  • '2/3 octave' – Задайте усиления как вектор-строку с 15 элементами.

  • '1/3 octave' – Задайте усиления как вектор-строку с 30 элементами.

Пример: equalizer = graphicEQ('Bandwidth','2/3 octave','Gains',[5,5,5,5,5,0,0,0,0,0,-5,-5,-5,-5,-5]) создает 2D третий графический эквалайзер октавы с заданными усилениями.

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

Настраиваемый: да

Типы данных: single | double

Порядок отдельных полос эквалайзера в виде положительного даже целое число. У всех полос эквалайзера есть тот же порядок.

Настраиваемый: нет

Типы данных: single | double

Отфильтруйте полосу пропускания в октавах в виде '1 octave', '2/3 octave', или '1/3 octave'.

Стандарт ANSI S1.11-2004 задает центр и частоты ребра вашего эквалайзера. Стандарт ISO 266:1997 (E) задает соответствующие предпочтительные частоты для маркировки целей.

Полоса пропускания С 1 октавой

Центральные частоты32 63 126 251 501 1000 1995 3981 7943 15849
Частоты ребра22 45 89 178 355 708 1413 2818 5623 1122 22387
Предпочтительные частоты31.5 63 125 250 500 1000 2000 4000 8000 16000

2/3-Octave Полоса пропускания

Центральные частоты25 40 63 100 158 251 398 631 1000 1585 2512 3981 6310 10000 15849
Частоты ребра20 32 50 79 126 200 316 501 794 1259 1995 3162 5012 7943 12589 19953
Предпочтительные частоты25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000

1/3-Octave Полоса пропускания

Центральные частоты25 32 40 50 63 79 100 126 158 200 251 316 398 501 631 794 1000 1259 1585 1995 2512 3162 3981 5012 6310 7943 10000 12589 15849 19953
Частоты ребра22 28 35 45 56 71 89 112 141 178 224 282 355 447 562 708 891 1122 1413 1778 2239 2818 3548 4467 5623 7079 8913 11220 14125 17783 22387
Предпочтительные частоты25 31.5 40 50 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 10000 12500 16000 20000

Настраиваемый: нет

Типы данных: char | string

Тип реализации в виде 'Cascade' или 'Parallel'. См. Алгоритмы и Графическую Эквализацию для получения информации об этих структурах реализации.

Настраиваемый: нет

Типы данных: char | string

Введите частоту дискретизации в Гц в виде положительной скалярной величины.

Настраиваемый: да

Типы данных: single | double

Использование

Описание

пример

audioOut = equalizer(audioIn) выполняет графическую эквализацию на входном сигнале, audioIn, и возвращает компенсируемый сигнал, audioOut. Тип эквализации задан алгоритмом и свойствами graphicEQ Системный объект, equalizer.

Входные параметры

развернуть все

Аудиовход к графическому эквалайзеру в виде матрицы. Столбцы матрицы обработаны как независимые звуковые каналы.

Типы данных: single | double

Выходные аргументы

развернуть все

Аудиовыход от графического эквалайзера, возвращенного как матрица тот же размер как audioIn.

Типы данных: single | double

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

createAudioPluginClassСоздайте аудио сменный класс, который реализует функциональность Системного объекта
coeffsПолучите коэффициенты фильтра
infoПолучите информацию фильтра
visualizeВизуализируйте ответ величины графического эквалайзера
parameterTunerНастройте параметры объекта при потоковой передаче
configureMIDIСконфигурируйте связи MIDI между аудио объектным и MIDI-контроллером
disconnectMIDIОтключите средства управления MIDI от аудио объекта
getMIDIConnectionsПолучите связи MIDI аудио объекта
cloneСоздайте объект дублированной системы
isLockedОпределите, используется ли Системный объект
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта
stepЗапустите алгоритм Системного объекта

createAudioPluginClass и configureMIDI функции сопоставляют настраиваемые свойства graphicEQ Системный объект к стоящим с пользователем параметрам:

СвойствоОбласть значенийОтображениеМодуль
Gains[–20, 20]линейныйдБ

Примеры

свернуть все

Создайте объекты читать из звукового файла и записать в ваше аудио устройство. Используйте частоту дискретизации читателя как частота дискретизации средства записи.

frameLength = 512;
reader = dsp.AudioFileReader('RockDrums-48-stereo-11secs.mp3','SamplesPerFrame',frameLength);
player = audioDeviceWriter('SampleRate',reader.SampleRate);

В цикле аудиопотока считайте аудио из файла и проигрывайте аудио через ваше аудио устройство.

while ~isDone(reader)
    x = reader();
    player(x);
end
release(reader)
release(player)

Создайте графический эквалайзер с одной октавой, реализованный с каскадной структурой. Используйте частоту дискретизации читателя как частота дискретизации эквалайзера.

equalizer = graphicEQ( ...
    'Bandwidth','1 octave', ...    
    'Structure','Cascade', ...
    'SampleRate',reader.SampleRate);

Задайте, чтобы увеличить усиление на низких частотах и затем визуализировать эквалайзер.

equalizer.Gains = [5,5,5,5,0,0,0,0,0,0];
visualize(equalizer)

В цикле аудиопотока считайте аудио из файла, примените эквализацию, и затем проигрывайте компенсируемое аудио через ваше аудио устройство.

while ~isDone(reader)
    x = reader();
    y = equalizer(x);
    player(y);
end
release(reader)
release(player)

Создайте dsp.AudioFileReader читать в покадровом аудио. Создайте audioDeviceWriter записать аудио в вашу звуковую карту. Создайте graphicEQ обработать аудиоданные. Вызовите visualize построить частотную характеристику графического эквалайзера.

frameLength = 1024;
fileReader = dsp.AudioFileReader('RockDrums-44p1-stereo-11secs.mp3','SamplesPerFrame',frameLength);
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

equalizer = graphicEQ('SampleRate',fileReader.SampleRate,'Gains',[0,10,-10,5,-5,2,-2,1,-1,0]);
visualize(equalizer)

Вызовите parameterTuner открыть пользовательский интерфейс для настроек параметров эквалайзера при потоковой передаче.

parameterTuner(equalizer)

В цикле аудиопотока:

  1. Читайте в системе координат аудио из файла.

  2. Примените эквализацию.

  3. Запишите систему координат аудио к вашему аудио устройству для слушания.

В то время как потоковая передача, настройки параметров эквалайзера и слушает эффект.

while ~isDone(fileReader)
    audioIn = fileReader();
    audioOut = equalizer(audioIn);
    deviceWriter(audioOut);
    drawnow limitrate % required to update parameter
end

Как лучшая практика, выпустите свои объекты, однажды сделанные.

release(deviceWriter)
release(fileReader)
release(equalizer)

Алгоритмы

развернуть все

Реализация вашего графического эквалайзера зависит от Structure свойство. Смотрите Графическую Эквализацию для обсуждения за и против параллельных и каскадных реализаций. Обратитесь к следующим разделам, чтобы изучить, как эти алгоритмы реализованы в Audio Toolbox™.

Ссылки

[1] Оливер, Ричард Дж. и капля Жан-Марка. "Эффективный многополосный графический эквалайзер цифрового аудио с точным управлением частотной характеристикой". Представленный в 139-м соглашении AES, Нью-Йорк, октябрь 2015.

[2] Акустическое общество Америки. Американская национальная стандартная спецификация для аналога полосы октавы и Дробной Полосы октавы и цифровых фильтров. ANSI S1.11-2004. Мелвилл, Нью-Йорк: акустическое общество Америки, 2009.

[3] Международная организация по стандартизации. Акустика – Предпочтительные частоты. ISO 266:1997 (E). Второй Выпуск. 1997.

Расширенные возможности

Введенный в R2017b