parameterTuner

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

Синтаксис

H = parameterTuner(obj)

Описание

пример

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, чтобы открыть UIs, чтобы настроить статические характеристики.

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

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

Создайте audiopluginexample.Chorus, чтобы применить эффект хора к одной из полос. Вызовите parameterTuner, чтобы открыть пользовательский интерфейс, чтобы настроить параметры плагина хора.

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. Создайте dsp.TimeScope, чтобы визуализировать исходное и обработанное аудио.

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

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

scope = dsp.TimeScope( ...
    'SampleRate',fileReader.SampleRate, ...
    '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)

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

  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

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

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

Создайте dsp.AudioFileReader, чтобы читать в покадровом аудио. Создайте audioDeviceWriter, чтобы записать аудио в вашу звуковую карту. Создайте noiseGate, чтобы обработать аудиоданные.

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

dRG = noiseGate('SampleRate',fileReader.SampleRate);

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

parameterTuner(dRG)

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

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

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

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

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

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

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

release(deviceWriter)
release(fileReader)
release(dRG)

Создайте 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)

Создайте wavetableSynthesizer, чтобы сгенерировать форму волны. Создайте dsp.TimeScope, чтобы визуализировать форму волны. Создайте audioDeviceWriter, чтобы записать аудио в вашу звуковую карту.

fs = 44.1e3;
wvSynth = wavetableSynthesizer('SampleRate',44.1e3);

scope = dsp.TimeScope( ...
    'SampleRate',wvSynth.SampleRate, ...
    'TimeSpan',1, ...
    'YLimits',[-2,2], ...
    'TimeSpanOverrunAction','Scroll', ...
    'ShowGrid',true);

deviceWriter = audioDeviceWriter('SampleRate',wvSynth.SampleRate);

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

parameterTuner(wvSynth)

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

  1. Вызовите wavetable синтезатор без аргументов, чтобы вывести один кадр данных.

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

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

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

duration = 15;
numIterations = round(wvSynth.SampleRate*duration/wvSynth.SamplesPerFrame);
for i = 1:numIterations
    audioOut = wvSynth();
    scope(audioOut)
    deviceWriter(audioOut);
    drawnow limitrate % required to update parameter
end

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

release(deviceWriter)
release(wvSynth)
release(scope)

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

свернуть все

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

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

свернуть все

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

Смотрите также

|

Введенный в R2019a