Настройка параметров объекта во время потоковой передачи
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)
В цикле аудиопотока:
Считывание в кадре звука из файла.
Разделите звук на три полосы с помощью перекрестного фильтра.
Применение динамического сжатия диапазона к первой и второй полосам.
Примените эффект припева к третьей полосе.
Суммировать звуковые полосы.
Запишите кадр звука на аудиоустройство для прослушивания.
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)

В цикле аудиопотока:
Считывание в кадре звука из файла.
Применить выравнивание.
Запишите кадр звука на аудиоустройство для прослушивания.
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)

В цикле аудиопотока:
Считывание в кадре звука из файла.
Выполнить отбортовку.
Запишите кадр звука на аудиоустройство для прослушивания.
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.](../../examples/audio/win64/TuneCompressorParametersExample_02.png)
В цикле аудиопотока:
Считывание в кадре звука из файла.
Применение динамического сжатия диапазона.
Запишите кадр звука на аудиоустройство для прослушивания.
Визуализация исходного звука, обработанного звука и примененного коэффициента усиления.
Во время потоковой передачи настройте параметры компрессора динамического диапазона и прослушайте эффект.
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.](../../examples/audio/win64/TuneCompressorParametersExample_04.png)
Рекомендуется деблокировать объекты после их завершения.
release(deviceWriter) release(fileReader) release(dRC) release(scope)

obj - Настраиваемый объектaudioPlugin объект | compressor | expander | limiter | noiseGate | octaveFilter | crossoverFilter | multibandParametericEQ | graphicEQ | audioOscillator | wavetableSynthesizer | reverberatorНастраиваемый объект, указанный как объект, наследующий от audioPlugin или один из следующих объектов Audio Toolbox™:
H - Целевой показательFigure объектЦелевой показатель, возвращенный как Figure объект.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.