Разверните аудиоприложения с MATLAB Compiler

Этот пример показывает, как использовать MATLAB Compiler™, чтобы создать автономное приложение от функции MATLAB. Функция реализует алгоритм обработки аудиоданных и проигрывает результат через ваше устройство аудиовыхода.

Введение

В этом примере вы генерируете и запускаете исполняемое приложение, которое применяет искусственную реверберацию к звуковому сигналу и проигрывает ее через ваше выбранное аудио устройство. Преимущество таких приложений - то, что они могут быть запущены на машине, которой нельзя было устанавливать MATLAB. Вам только была бы нужна установка MATLAB Runtime, чтобы развернуть приложение, созданное в этом примере.

Алгоритм реверберации

Алгоритм реверберации реализован с помощью отражателя Системного объекта. Это позволяет вам добавлять эффект реверберации в аудиовход моноканала или стереоканала. Объект обеспечивает шесть свойств, которые управляют природой реверберации. Каждый из них может быть настроен, в то время как симуляция запускается.

Симуляция MATLAB

Функциональный audioReverberationCompilerExampleApp является оберткой вокруг reverberator. Чтобы проверить поведение audioReverberationCompilerExampleApp, запустите функцию в MATLAB. Это берет дополнительный вход, который время в секундах, для которых вы хотите проигрывать аудио. Значение по умолчанию равняется 60.

audioReverberationCompilerExampleApp

Функциональный audioReverberationCompilerExampleApp использует метод getAudioDevices audioDeviceWriter, чтобы перечислить устройства аудиовыхода, доступные на текущей машине так, чтобы можно было вопроизвести, отразился аудио через звуковую карту по вашему выбору. Это особенно полезно в развертываемых приложениях, потому что функциональные авторы редко знают, какое устройство будет соединено на целевой машине.

audioReverberationCompilerExampleApp также сопоставляет настраиваемые свойства reverberator к пользовательскому интерфейсу так, чтобы можно было легко настроить их, в то время как симуляция запускается, и наблюдайте ее эффект немедленно. Например, переместите ползунок 'Диффузия' направо, в то время как симуляция запускается. Вы услышите эффект увеличения плотности отражений. Можно использовать кнопки на пользовательском интерфейсе, чтобы приостановить или остановить симуляцию.

Создайте временную директорию для компиляции

Если вы проверили симуляцию MATLAB, можно скомпилировать функцию. Перед компиляцией создайте временную директорию, в которой у вас есть полномочия записи. Скопируйте основную функцию MATLAB и связанные файлы помощника в эту временную директорию.

compilerDir = fullfile(tempdir,'compilerDir'); %Name of temporary directory
if ~exist(compilerDir,'dir')
    mkdir(compilerDir); % Create temporary directory
end
curDir = cd(compilerDir);
copyfile(which('audioReverberationCompilerExampleApp'));
copyfile(which('HelperAudioReverberation'));
copyfile(which('FunkyDrums-44p1-stereo-25secs.mp3'))
copyfile(which('HelperCreateParamTuningUI'));
copyfile(which('HelperUnpackUIData'));

Скомпилируйте функцию MATLAB в автономное приложение

Используйте функцию mcc от MATLAB Compiler, чтобы скомпилировать audioReverberationCompilerExampleApp в автономное приложение. Это будет сохранено в текущем каталоге. Задайте '-m' опция, чтобы сгенерировать автономное приложение, '-N' опция, чтобы включать только директории в путь, заданный с помощью '-p' опция.

mcc('-mN', 'audioReverberationCompilerExampleApp', ...
    '-p', fullfile(matlabroot,'toolbox','dsp'), ...
    '-p', fullfile(matlabroot,'toolbox','audio'));

Этот шаг занимает несколько минут, чтобы завершиться.

Запустите сгенерированное приложение

Используйте команду system, чтобы запустить сгенерированное автономное приложение. Обратите внимание на то, что выполнение автономного приложения с помощью системной команды использует текущую среду MATLAB и любые файлы библиотеки, необходимые от этой установки MATLAB. Чтобы развернуть это приложение на машине, которой не установили MATLAB, обратитесь к разделу 'Distribute with MATLAB Runtime' в документации для продукта MATLAB Compiler.

if ismac
    status = system(fullfile('audioReverberationCompilerExampleApp.app', ...
        'Contents','MacOS','audioReverberationCompilerExampleApp'));
else
    status = system(fullfile(pwd,'audioReverberationCompilerExampleApp'));
end

Подобно симуляции MATLAB, запуская это развертываемое приложение сначала попросит, чтобы вы выбрали аудио устройство, которое вы хотите использовать, чтобы проигрывать аудио. Затем это запускает пользовательский интерфейс (UI), чтобы взаимодействовать с алгоритмом реверберации, в то время как симуляция запускается.

Очистите Сгенерированные Файлы

После генерации и развертывания исполняемого файла, можно очистить временную директорию путем выполнения следующего в подсказке команды MATLAB:

cd(curDir);
rmdir(compilerDir,'s');