2012-03-14 54 views
2

我使用的是使用下面的子功能代碼:MATLAB:有audioplayer()繼續功能後發揮結束

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); 

這會導致聲音以400Hz播放,持續4秒。

問題是,函數playblocking()限制控件直到聲音完成。另一種方法是使用play(),這意味着根本沒有聲音播放(因爲函數完成後聲音就會停止)。

由於MATLAB版本中的已知錯誤,我無法使用sound()函數...如何使audioplayer()函數播放聲音而無需控制系統,如果聲音是在子功能內創建?

回答

0

您可以將player變量定義爲全局變量。只要把函數的開始這一行:

global player 

雖然它被認爲不是一個很好的編程習慣,它可以爲你工作。