Развертывание аудио приложений с помощью MATLAB Compiler

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

Введение

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

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

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

Симуляция MATLAB

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

audioReverberationCompilerExampleApp

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

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

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

После проверки симуляции 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) функция из MATLAB Compiler для компиляции audioReverberationCompilerExampleApp в автономное приложение. Это будет сохранено в текущей директории. Задайте опцию '-m', чтобы сгенерировать автономное приложение '-N' опция чтобы включить только директории в путь, заданный с помощью опции '-p'.

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

Этот шаг занимает несколько минут.

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

Используйте system команда запуска сгенерированного автономного приложения. Обратите внимание, что при запуске автономного приложения с помощью системной команды используется текущее окружение MATLAB и все файлы библиотеки, необходимые из этой установки MATLAB. Для развертывания этого приложения на компьютере, на котором не установлен MATLAB, см. раздел О 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');