graphicEQ

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

Описание

The 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]) создает графический эквалайзер с двумя третьими октавами с заданными коэффициентами усиления.

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

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

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

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

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

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

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

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

1-Octave полосы пропускания

Центральные частоты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]линейныйdB

Примеры

свернуть все

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

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 свойство. Смотрите Graphic Equalization для обсуждения плюсов и минусов параллельных и каскадных реализаций. Обратитесь к следующим разделам, чтобы понять, как эти алгоритмы реализованы в Audio Toolbox™.

Ссылки

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

[2] Акустическое общество Америки. Американская национальная стандартная спецификация для аналоговых и цифровых фильтров Octave-Band и Fractional-Octave-Band. ANSI S1.11-2004. Melville, NY: Acoustical Society of America, 2009.

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

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

.
Введенный в R2017b