将阵列作为声音播放并并行录制其输出

时间:2011-10-27 22:19:21

标签: matlab audio ubuntu octave

我知道Octave / MATLAB可以播放数组作为声音,但我想知道Octave是否可以这样做:我想循环一系列频率并让Octave使用我的电脑上的扬声器播放它们,并且有Octave还可以使用麦克风输入录制声音以获得最大值。我正在尝试自动化一种让Octave循环通过频率并记录接收到的数据的方法,以便我可以稍后再回顾并查看共振频率。 Octave可以并行执行此类操作吗?

我正在使用带有全双工声卡的Ubuntu Linux 10.04 64位

示例:

clear all
t=linspace(0,1,44100);
A = 1; % amplitude
Fs = 44100

for ii=1:1:10
     freq=ii; %how many in 1 sec
     T = 1/freq; % period of the signal
     vertoffset=0.5;
     % square
     square = mod(t * A / T, A) > A / 2;
     square = square - vertoffset;
     sound(square,Fs);
end;

1 个答案:

答案 0 :(得分:1)

这可以通过SOX完成 http://sox.sourceforge.net/

执行此操作的八度/ SOX代码示例 system('play /home/a_playback.wav | rec -c 1 -r 8000 -b 16 /home/a_record.wav trim 0 00:01')