MATLAB: аудиоплеер () продолжает играть после завершения функции - PullRequest
2 голосов
/ 14 марта 2012

Я использую код, который использует следующую подфункцию:

function playTone (duration, toneFreq)
% Generate a tone

samplesPerSecond = 44100; % the bit rate of the tone
y = sin(linspace(0, duration * toneFreq * 2 * pi, round(duration * samplesPerSecond))); % the equation of the sound wave
player = audioplayer(y, samplesPerSecond); % create an audio object from the sound wave at the specified bit rate
playblocking(player) % play the audio, blocking control until the sound completes

Эта функция вызывается, например, со следующим:

playTone(4, 400);

При этом звук воспроизводится с частотой 400 Гц и длится 4 секунды.

Проблема в том, что функция playblocking () ограничивает управление до завершения звука. Альтернативой является использование play (), что означает, что звук не воспроизводится вообще (поскольку звук останавливается, как только функция завершается).

Я не могу использовать функцию sound () из-за известной ошибки в моей версии MATLAB ... Как сделать так, чтобы функция audioplayer () воспроизводила звук, не взяв под свой контроль систему, если звук создан в пределах подфункции?

1 Ответ

0 голосов
/ 14 марта 2012

Вы можете определить player переменную как глобальную.Просто поместите эту строку в начале функции:

global player

Хотя это считается плохой практикой программирования, она может работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...