两个同步音响是否可以相互消音呢?
2015-09-21 14:34
603 查看
前一阵已经实现了两个Pi连接两个音响,并且使用物联网协议进行同步,具体怎么实现的以后的博客会补上
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
。
今天先来讨论一下,如果两个同步音响播放相位反向的声音时,会不会产生消音的效果?
首先,用MathLab实现两个相位相反的单频波,具体如下:
for n = 1 : 999
d5(n) = sin(0.5906*n) + sin(1.0245*n);
end;
sound(d5, 8192)
d6=d5/2; %avoid to be clipped
wavwrite(d6,8192,16,'d5.wav');
那么,我们得到了单频波"d5.wav"。
接下来就要在Pi上试着播放了,我们用的ALSA播放,然而发现问题:
aplay: set_params:1087: Channels count non available
看到channels的提示,猜测可能由于我用mathlab输出的是单声道,于是我们想办法把她转成立体声,使用:
arecord
-f S16_LE -c 2 -r 44100 -d 20 test.wav
其中"-c 2"就是转声道的关键。
还有一种方法就是使用如下方法输出双声道:
正弦波:
t=(0:799999)'/8000;
left=0.99*sin(500*2*pi*t);
right=0.99*sin(500*2*pi*t);
wavwrite([left right],'noiseup.wav');
余弦波:
t=(0:799999)'/8000;
left=0.99*cos(500*2*pi*t);
right=0.99*cos(500*2*pi*t);
wavwrite([left right],'noisedown.wav')
那么,我们得到了两个相位相反的单频波:noiseup.wav和noisedown.wav。
接着用两个同步音响播放,然而。。。并没有达到理想的消音效果。。。
只是会发生声波的干涉,根据地域不同,有些地方确实声音减弱了,但有些地方甚至增强了!
第一篇博客就这样啦,希望帮到和我遇到同样问题的朋友。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
。
今天先来讨论一下,如果两个同步音响播放相位反向的声音时,会不会产生消音的效果?
首先,用MathLab实现两个相位相反的单频波,具体如下:
for n = 1 : 999
d5(n) = sin(0.5906*n) + sin(1.0245*n);
end;
sound(d5, 8192)
d6=d5/2; %avoid to be clipped
wavwrite(d6,8192,16,'d5.wav');
那么,我们得到了单频波"d5.wav"。
接下来就要在Pi上试着播放了,我们用的ALSA播放,然而发现问题:
aplay: set_params:1087: Channels count non available
看到channels的提示,猜测可能由于我用mathlab输出的是单声道,于是我们想办法把她转成立体声,使用:
arecord
-f S16_LE -c 2 -r 44100 -d 20 test.wav
其中"-c 2"就是转声道的关键。
还有一种方法就是使用如下方法输出双声道:
正弦波:
t=(0:799999)'/8000;
left=0.99*sin(500*2*pi*t);
right=0.99*sin(500*2*pi*t);
wavwrite([left right],'noiseup.wav');
余弦波:
t=(0:799999)'/8000;
left=0.99*cos(500*2*pi*t);
right=0.99*cos(500*2*pi*t);
wavwrite([left right],'noisedown.wav')
那么,我们得到了两个相位相反的单频波:noiseup.wav和noisedown.wav。
接着用两个同步音响播放,然而。。。并没有达到理想的消音效果。。。
只是会发生声波的干涉,根据地域不同,有些地方确实声音减弱了,但有些地方甚至增强了!
第一篇博客就这样啦,希望帮到和我遇到同样问题的朋友。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
相关文章推荐
- oracle 客户端乱码
- 后缀数组 专题
- Javascript验证方法大全
- java判断字符串是否为空的方式
- The JAVA_HOME environment variable does not point to a working 32-bit JDK or JRE.
- CubieBoard2 Ubuntu配置记录
- 几何校正,正射校正,影像配准,辐射定标,辐射校正,大气校正,地形校正概念详解
- MVC5 + EF6 + Bootstrap3 (15) 应用ModelState和Data Annotation做服务器端数据验证
- 游戏新手引导的演进版
- 拦截聊天记录--Hook技巧简介
- DES算法详解和代码 - IP置换
- IOS图片缓存
- 欢迎使用CSDN-markdown编辑器
- 项目人力资源管理的思考
- xml 和json 数据格式及解析
- list与数组转换
- jquery动态连接节点
- 解决SublimeCodeIntel回车换行误打代码
- git克隆远程项目分支到本地对应分支
- Ceph架构剖析