【发布时间】:2016-08-19 15:19:16
【问题描述】:
我有一个设备,就像 3 个耳机合二为一(所以 6 个耳塞)。我的目标是在每个耳塞上播放一首不同的歌曲(6 首歌曲)。所以我开始在耳塞上播放一首歌。对我来说,一个频道意味着一个耳塞(但也许我错了)。我正在使用 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');
但它没有奏效。不是只在一个耳塞上播放声音,而是在两个耳塞上播放。
我收到此警告
PTB-INFO:使用经过特殊修改的 PortAudio 引擎,基于官方 版本:PortAudio V19-devel WITH-DIM
将使用 ASIO 增强的 Portaudio 驱动 DLL。看 Psychtoolbox/PsychSound/PortAudioLICENSE.txt 的确切条款 用于此 dll。
免责声明:“ASIO 是 Steinberg Media 的商标和软件 技术有限公司。”
PTB-警告:虽然使用启用了 ASIO 的 Psychtoolbox 声音 司机,
PTB 警告:在您的系统中找不到任何支持 ASIO 的声卡。
PTB-警告:如果您认为您应该拥有 ASIO 卡,请检查 你的
PTB-警告:正确安装和配置驱动程序的系统和 重试。
PTB-警告:阅读“帮助 InitializePsychSound”了解有关 ASIO 的更多信息 等。
PTB-INFO:带有句柄 0 的新音频设备作为 PortAudio 流打开:
PTB-INFO:对于 1 个通道播放:音频子系统是 MME,音频 设备名称是 Microsoft Sound Mapper - 输出
PTB-INFO:实际采样率为 44100.000000 Hz。输入延迟 0.000000 毫秒,输出延迟 464.399093 毫秒。
然后我决定尝试另一个方法。让我们在其他 2 个耳塞上播放歌曲
我使用 PsychPortAudio('GetDevices') 来查找耳塞对的 id。奇怪的是,我找到了 4 个,而不是 3 个具有 2 个通道的设备。
我使用 PsychPortAudio('Open' for id 7,9,18 和 20 但每次歌曲都在同一对耳塞上播放时,与我尝试只在一个耳塞上播放时相同。
这是一张有 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,音频设备名称是扬声器(USB 多声道音频 设备)
很抱歉这篇长文,但我想给你所有的信息。
你能说我错了吗?如何在特定耳塞上播放一首歌曲。我想如果我知道的话,我只需复制代码并放另一首歌曲,这样我就会在每个耳塞上播放一首歌曲
【问题讨论】:
标签: matlab audio psychtoolbox