audioPlayerRecorder在同步播放和录制期间返回一个零数组

15次浏览(过去30天)
嗨,我正在尝试使用audioPlayerRecorder对象同时播放和录制。我有一个多通道的粉红色噪声信号,我在我的脚本中生成,我使用它作为audioToDevice矩阵。我有一个音频接口(Focusrite Scarlett 18i20)加上放大器输出到扬声器和相同的音频接口输入。下面是我如何设置audioPlayerRecorder对象:
设备=Focusrite USB ASIO
Num_ch_out = 3;
Num_ch_in = 3;
Fs = 48000;
apr = audioPlayerRecorder(“SampleRate”Fs,...
“设备”设备,...
“BitDepth”24位整数的...
“PlayerChannelMapping”1: num_ch_out,...
“RecorderChannelMapping”1: num_ch_in);
audioFromDevice = apr(audioToDevice);
在调用apr对象进行回放和录制时,我所连接的扬声器将输出我期望它输出的内容。但我得到的audioFromDevice矩阵是48000x3个零数组。我检查了所有的连接,一切正常。我知道链中所有通道/设备的增益,我用它们来缩放输入/输出信号。
我是否使用audioPlayerRecorder对象不正确?旁注:延迟对我来说不是很重要,因为我有不同的代码部分来处理这个问题。现在,我只想能够同时播放和录制。
或者,我尝试使用audioDeviceWriter和audioDeviceReader来实现同样的目的,但我也遇到了问题:缓冲区大小需要两个对象相同,但在相同的“持续时间”中,由于写入器对象播放了一个48000个样本长的信号,读取器对象只获取并返回相当于缓冲区大小(2048)的样本数量。
注意:我在PC上,需要使用ASIO驱动程序,所以我不能使用audioplayer, audiorecorder对象,因为它们默认为Windows Direct Sound驱动程序,只支持双通道播放。金宝app
编辑:将“双通道粉红噪音”更改为“多通道粉红噪音”
1评论
jibrahim
jibrahim 2021年6月18日
嗨,卡兰,
该对象是为流,实时操作而设计的,具有预期的延迟。因此,请确保您多次调用该对象(通常在FOR循环中)。我希望初始输出为0(由于延迟),之后您应该看到预期的输出。
如果你仍然有问题,请告诉我们,我们会仔细检查

登录评论。

答案(0)

类别

了解更多音频I/O和波形生成帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!