Я использую код, который использует следующую подфункцию:
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 () воспроизводила звук, не взяв под свой контроль систему, если звук создан в пределах подфункции?