Я использую функцию MATLAB для запуска звука. Эта функция выглядит следующим образом:
function playTone (duration, toneFreq)
% Generate a tone
global player; % as a global variable, sound will continue to play after the function has ended.
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
play(player); % play the audio, blocking control until the sound completes
Я бы хотел иметь возможность остановить звук по запросу. Я не могу использовать:
clear playsnd;
поскольку я запустил звук с помощью функции аудиоплеера () (а не функции звука ()).
Я также не могу использовать:
stop(player);
потому что я пытаюсь остановить звук из родительской функции ("??? Неопределенная функция или переменная 'player'.")
Мне пришлось настроить мою функцию, как указано выше, так как мне нужно иметь возможность генерировать тон из подфункции, и я не могу использовать функцию sound (), поскольку иногда я получаю сообщение об ошибке «Не удается зарегистрировать окно звука». Переменная 'player' установлена как глобальная, чтобы гарантировать, что звук продолжает воспроизводиться после завершения функции.