- 締切済み
MATLABでの左右で時間差をつけた正弦波の再生
自分は現在MATLABを用いてプログラミングを行っています。 左右それぞれから時間差をつけて正弦波を再生して音像定位の実験を行いたいのですが、どのようにプログラミングをおこなえばいいのかよくわかりません。 現在は時間差をつける機構を実装していない状態で、 handles.x = 0.1*sin(2*pi*handles.f*t)*2.626891326; handles.y = handles.a*sin((2*pi*handles.f*handles.t)+handles.rad); z = [handles.x;handles.y]'; sound(z,handles.Fs); handles.fは周波数、handles.tは再生時間です このようにして再生しています。 このプログラムで、handles.xまたはhandles.yのどちらかを基準としてもう片方の再生開始時間を操作したいと考えています。 再生開始時間を遅らせるのにはdelayフィルタを用いようかと考えているのですが、再生開始時間を早くする方法がよくわかりません。 なにかいい方法があればご教授お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- wek00
- ベストアンサー率61% (91/147)
「早くする」を「他方のを遅くする」に置き換えて場合分けするか 左0右[-n,+n]を左n右[0,+2n]に置き換える感じにすれば問題ないように思います。 時間差をつける手法としては時間の値を増減する方法もあります。 1ms遅らせるならhandles.t - 0.001(でいいよな...) もちろん同等の結果になるようhandles.radを設定するのでもOK。 再生開始時間もきっちり遅らせるなら無音になるべきところは0で上書きしてください。 関数で生成できる波形であれば、時間差が時々刻々変化する場合にも対応できます。 が、delayフィルタ(もしくは波形を格納した配列を直接操作してずらすか)でいいと思います。