exponenta event banner

parameterTuner

Настройка параметров объекта во время потоковой передачи

Синтаксис

Описание

пример

H = parameterTuner(obj) создает пользовательский интерфейс настройки параметров и возвращает дескриптор фигуры, H.

Примеры

свернуть все

parameterTuner позволяет графически настраивать параметры нескольких объектов. В этом примере перекрестный фильтр используется для разделения сигнала на несколько поддиапазонов и последующего применения различных эффектов к поддиапазонам.

Создать dsp.AudioFileReader для чтения в аудио покадровом режиме. Создание audioDeviceWriter для записи звука на звуковую карту.

fileReader = dsp.AudioFileReader('FunkyDrums-48-stereo-25secs.mp3', ...
                                 'PlayCount',2);
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

Создать crossoverFilter с двумя кроссоверами для разделения звука на три полосы. Звонить visualize для построения графика частотных характеристик фильтров. Звонить parameterTuner открытие пользовательского интерфейса для настройки частот кроссовера во время потоковой передачи.

xFilt = crossoverFilter('SampleRate',fileReader.SampleRate,'NumCrossovers',2);
visualize(xFilt)
parameterTuner(xFilt)

Создать два compressor для применения динамического сжатия диапазона к двум поддиапазонам. Звонить visualize для построения графика статической характеристики обоих компрессоров. Звонить parameterTuner открытие пользовательских интерфейсов для настройки статических характеристик.

cmpr1 = compressor('SampleRate',fileReader.SampleRate);
visualize(cmpr1)
parameterTuner(cmpr1)

cmpr2 = compressor('SampleRate',fileReader.SampleRate);
visualize(cmpr2)
parameterTuner(cmpr2)

Создание audiopluginexample.Chorus для применения эффекта припева к одной из полос. Звонить parameterTuner для открытия пользовательского интерфейса для настройки параметров плагина chorus.

chorus = audiopluginexample.Chorus;
setSampleRate(chorus,fileReader.SampleRate);
parameterTuner(chorus)

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

  1. Считывание в кадре звука из файла.

  2. Разделите звук на три полосы с помощью перекрестного фильтра.

  3. Применение динамического сжатия диапазона к первой и второй полосам.

  4. Примените эффект припева к третьей полосе.

  5. Суммировать звуковые полосы.

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

while ~isDone(fileReader)
    audioIn = fileReader();
    
    [b1,b2,b3] = xFilt(audioIn);
    
    b1 = cmpr1(b1);
    b2 = cmpr2(b2);
    b3 = process(chorus,b3);
    
    audioOut = b1+b2+b3;

    deviceWriter(audioOut);
    
    drawnow limitrate % Process parameterTuner callbacks
end

Рекомендуется деблокировать объекты после их завершения.

release(fileReader)
release(deviceWriter)

Создать dsp.AudioFileReader для чтения в аудио покадровом режиме. Создание audioDeviceWriter для записи звука на звуковую карту. Использовать loadAudioPlugin для загрузки подключаемого модуля эквалайзера. При использовании Mac замените .dll расширение файла с .vst.

fileReader = dsp.AudioFileReader('FunkyDrums-48-stereo-25secs.mp3');
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

pluginPath = fullfile(matlabroot,'toolbox/audio/samples/ParametricEqualizer.dll');
eq = loadAudioPlugin(pluginPath);
setSampleRate(eq,fileReader.SampleRate);

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

parameterTuner(eq)

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

  1. Считывание в кадре звука из файла.

  2. Применить выравнивание.

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

while ~isDone(fileReader)
    audioIn = fileReader();
    audioOut = process(eq,audioIn);
    deviceWriter(audioOut);
    
    drawnow limitrate % Process parameterTuner callbacks
end

Рекомендуется деблокировать объекты после их завершения.

release(fileReader)
release(deviceWriter)

Создать dsp.AudioFileReader для чтения в аудио покадровом режиме. Создание audioDeviceWriter для записи звука на звуковую карту. Создание audiopluginexample.Flanger для обработки аудиоданных и установки частоты дискретизации.

fileReader = dsp.AudioFileReader('RockGuitar-16-96-stereo-72secs.flac');
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

flanger = audiopluginexample.Flanger;
setSampleRate(flanger,fileReader.SampleRate);

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

parameterTuner(flanger)

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

  1. Считывание в кадре звука из файла.

  2. Выполнить отбортовку.

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

while ~isDone(fileReader)
    audioIn = fileReader();
    audioOut = process(flanger,audioIn);
    deviceWriter(audioOut);
    
    drawnow limitrate % Process parameterTuner callbacks
end

Рекомендуется деблокировать объекты после их завершения.

release(fileReader)
release(deviceWriter)

Создать dsp.AudioFileReader для чтения в аудио покадровом режиме. Создание audioDeviceWriter для записи звука на звуковую карту. Создать compressor для обработки аудиоданных. Звонить visualize для построения графика статической характеристики compressor.

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

dRC = compressor('SampleRate',fileReader.SampleRate); 
visualize(dRC)

Создать timescope для визуализации исходного и обработанного звука.

scope = timescope( ...
    'SampleRate',fileReader.SampleRate, ...
    'TimeSpanSource','property',...
    'TimeSpan',1, ...
    'BufferLength',fileReader.SampleRate*4, ...
    'YLimits',[-1,1], ...
    'TimeSpanOverrunAction','Scroll', ...
    'ShowGrid',true, ...
    'LayoutDimensions',[2,1], ...
    'NumInputPorts',2, ...
    'Title','Original vs. Compressed Audio (top) and Compressor Gain in dB (bottom)');
scope.ActiveDisplay = 2;
scope.YLimits = [-4,0];
scope.YLabel = 'Gain (dB)';

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

parameterTuner(dRC)

Figure Audio Parameter Tuner: compressor [dRC] contains an object of type uigridlayout.

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

  1. Считывание в кадре звука из файла.

  2. Применение динамического сжатия диапазона.

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

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

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

while ~isDone(fileReader)
    audioIn = fileReader();
    [audioOut,g] = dRC(audioIn);
    deviceWriter(audioOut);
    scope([audioIn(:,1),audioOut(:,1)],g(:,1));
    drawnow limitrate % required to update parameter
end

Figure Audio Parameter Tuner: compressor [dRC] contains an object of type uigridlayout.

Рекомендуется деблокировать объекты после их завершения.

release(deviceWriter)
release(fileReader)
release(dRC)
release(scope)

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

свернуть все

Настраиваемый объект, указанный как объект, наследующий от audioPlugin или один из следующих объектов Audio Toolbox™:

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

свернуть все

Целевой показатель, возвращенный как Figure объект.

Представлен в R2019a