私は 3 つのヘッドフォンを 1 つにしたようなデバイスを持っています (つまり 6 つの耳栓) 。私の目標は、各耳栓で 1 つの異なる曲 (6 曲) を再生することです。それで、耳栓で1曲演奏することから始めました。私にとって、1 つのチャンネルは 1 つの耳栓を意味します (しかし、私は間違っているかもしれません)。私は Psychtoolbox を使用しています:
function BasicSoundOutputDemo( wavfilename)
AssertOpenGL;
% Read WAV file from filesystem:
[y, freq] = psychwavread(wavfilename);
aux = y' ;
wavedata = aux(1,:);
InitializePsychSound;
devices = PsychPortAudio('GetDevices' );
pahandle = PsychPortAudio('Open', [], [], 0, freq, 1);// nr channels = 1
PsychPortAudio('FillBuffer', pahandle, wavedata);
t1 = PsychPortAudio('Start', pahandle, 1, 0);
KbReleaseWait;
while ~KbCheck
% Wait a seconds...
WaitSecs(1);
end
PsychPortAudio('Stop', pahandle);
PsychPortAudio('Close', pahandle);
fprintf('Demo finished, bye!\n');
しかし、うまくいきませんでした。1 つの耳栓だけで音を再生する代わりに、2 つの耳栓で再生していました。
この警告が表示されます
PTB-INFO: 公式バージョンに基づいて、特別に変更された PortAudio エンジンを使用: PortAudio V19-devel WITH-DIM
ASIO 拡張 Portaudio ドライバー DLL を使用します。この dll の正確な使用条件については、Psychtoolbox/PsychSound/PortAudioLICENSE.txt を参照してください。
免責事項: 「ASIO は、Steinberg Media Technologies GmbH の商標およびソフトウェアです。」
PTB-警告: ASIO 対応の Psychtoolbox サウンド ドライバーを使用していますが、
PTB-警告: システムに ASIO 対応のサウンドカードが見つかりませんでした。
PTB-警告: ASIO カードが必要だと思われる場合は、
PTB-警告: ドライバーが正しくインストールおよび構成されているためのシステムで、再試行してください。
PTB-警告: ASIO などの詳細については、「help InitializePsychSound」を参照してください。
PTB-INFO: ハンドル 0 を持つ新しいオーディオ デバイスが PortAudio ストリームとして開かれました:
PTB-INFO: 1 チャンネルの場合 再生: オーディオ サブシステムは MME、オーディオ デバイス名は Microsoft Sound Mapper - Output
PTB-INFO: 実際のサンプルレート 44100.000000 Hz。入力遅延 0.000000 ミリ秒、出力遅延 464.399093 ミリ秒。
それから私は別のアプローチを試すことにしました。他の2つの耳栓で曲を再生しましょう
PsychPortAudio('GetDevices') を使用して、耳栓ペアの ID を見つけました。奇妙なのは、2 つのチャンネルを持つ 3 つのデバイスではなく、4 つを見つけたことです。そして、ID 7、9、18、および 20 に対して PsychPortAudio('Open' を使用しましたが、同じ耳栓ペアで曲を再生するたびに、同じペアでした。 1つの耳栓だけでプレイしようとしました.
これは4つのデバイスでの写真です.
function BasicSoundOutputDemo( wavfilename)
AssertOpenGL;
% Read WAV file from filesystem:
[y, freq] = psychwavread(wavfilename);
wavedata = y' ;
nrchannels = size(wavedata,1); % Number of rows == number of channels.
InitializePsychSound;
devices = PsychPortAudio('GetDevices' );
pahandle = PsychPortAudio('Open', 18, [], 0, freq, nrchannels);
PsychPortAudio('FillBuffer', pahandle, wavedata);
t1 = PsychPortAudio('Start', pahandle, 1, 0);
KbReleaseWait;
while ~KbCheck
% Wait a seconds...
WaitSecs(1);
end
PsychPortAudio('Stop', pahandle);
PsychPortAudio('Close', pahandle);
fprintf('Demo finished, bye!\n');
唯一の違いは、これを警告することです
PTB-INFO: 2 チャンネルの場合 再生: オーディオ サブシステムは Windows DirectSound、オーディオ デバイス名は Speakers (USB Multi-Channel Audio Device)
この長い投稿で申し訳ありませんが、すべての情報を提供したかったのです。
私が間違っていたと言えますか。特定の耳栓で 1 つの曲を再生するにはどうすればよいですか? それがわかれば、コードをコピーして別の曲を入れるだけで、各耳栓で 1 曲ずつ再生できると思います。