我想在录制信号期间获得音频数据帧的音高。 (没有停止录制) 首先,我执行了以下代码。
r = audiorecorder(fs,16,1);
while 1
recordblocking(r,T); % T is frame length [s] (A)
sample{k} = getaudiodata(r);
pitch{k} = get_pitch(sample{k}); % (B)
end
然而,执行get_pitch函数期间的记录过程停止,并且它会导致 缺少部分音乐信号要记录。
我希望样本记录不间断地执行,但是将长度为T [s]的数据发送到函数get_pitch,以便连续获得所有帧的音高。
有没有人可以给我一些建议?我非常感谢你的所有评论。
答案 0 :(得分:0)
通常,如果您使用的是Matlab,并且需要多线程,那么您唯一的希望就是并行计算工具箱。
你在这里有一个典型的consumer/producer scenario
- 试着去谷歌。
然而,您的方法的问题不一定是缺乏线程。如果get_pitch命令足够快,你就没有问题。您也可以保存所有样本并在之后进行分析(如果它适合应用程序)。