В этом примере показано, как использовать MATLAB Compiler™ для создания автономного приложения из функции MATLAB. Функция реализует алгоритм обработки аудио и воспроизводит результат через ваше устройство выхода аудио.
В этом примере вы генерируете и запускаете исполняемое приложение, которое применяет искусственную реверберацию к аудиосигналу и воспроизводит его через выбранные аудио устройства. Преимущество таких приложений в том, что они могут запускаться на машине, на которой не нужно устанавливать MATLAB. Для развертывания приложения, созданного в этом примере, потребуется установка только MATLAB Runtime.
Алгоритм реверберации реализован с использованием системного объекта reverberator
. Это позволяет вам добавить эффект реверберации к моно- или стереоканалу аудио входа. Объект предоставляет шесть свойств, которые управляют природой реверберации. Каждый из них может быть настроен во время симуляции.
Функция 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'));
Используйте 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');