2016-11-03 14 views
0

は、私は、変数ボタンを押して音の周波数(Fs)を変更するにはどうすればよいですか?

global ap1 
global doublespeed 
ap1 = audioplayer(y,Fs); 
doublespeed = Fs*2; 

と一緒に1つの関数にオーディオプレーヤーを呼び出して、私は周波数が、その後、2を掛けた音声サンプルを再生したいボタンは、別の機能を持っています。

global ap1 
global doublespeed 
playblocking(ap1,doublespeed); 

このコードはサウンドを再生しますが、2秒間スキップするようです。もし私がaudioplayerと呼んだときに周波数が変わったら、それはうまくいく傾向がありますが、私が作りたいものには合わないのです。誰が私が間違っているのか知っていますか?

+0

私はあなたに正確な答えを与えることはできませんが、実際にはグローバル変数を使用することをお勧めしません。 GUIを作成するときには、 'handles'構造体に変数を保存します。 – hbaderts

答えて

1

問題はplayblockingは周波数を変更しません。あなたはその機能の説明を読んだことがありますか?具体的には、2番目の入力が開始、停止であることを示します。それはまさにあなたが持っているものです。

audioplayerを使用すると、オーディオオブジェクトを周波数の2倍に設定する必要があります。

load handel; 
p = audioplayer(y, Fs); 
play(p); 
p2 = audioplayer(y, Fs * 2); 
play(p2); 

問題は、あなたがサンプルが、あなたはplayblocking代わりのplayを使用オーバーラップしたくないということであれば。例えば。

load handel; 
p = audioplayer(y, Fs); 
p2 = audioplayer(y, Fs * 2); 
play(p); 
play(p2); % the sounds will overlap 

playblocking(p); 
playblocking(p2); % the sounds will not overlap 
関連する問題