graphicEQ

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

Описание

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

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

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

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

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

Создание

Синтаксис

equalizer = graphicEQ
equalizer = graphicEQ(Name,Value)

Описание

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

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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)

Описание

пример

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( ...
    'Filename','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