Processing实时可视化声音

2016-01-314.7万
AI 快速预览详细 收起
这个项目使用Processing的minim库实现了声音的实时可视化。主要代码包括音频输入和可视化部分,通过内置麦克风或音频播放输出作为输入源。可视化部分展示了声音在时域上的变化,适合初学者快速入门。


这个小项目用到了processing的minim库。

代码如下:
其中setup()里主要是音频输入,一般默认情况下都是内置麦克风,当然如果想要用音频播放的输出来做这里的输入的话也是可以的,用soundflower就行~这里不做深入。
draw()主要是可视化方面的,这里主要是用到时域上的变化。= = 还是比较基础的。
  1. import ddf.minim.*;
  2. Minim minim;
  3. AudioInput in;
  4. void setup() {
  5.   size(800, 600, P2D);
  6.   
  7.   minim = new Minim(this);
  8.   
  9.   in = minim.getLineIn();
  10. }
  11. void draw() {
  12.   background(0);
  13.   stroke(255);
  14.   strokeWeight(2);
  15.   float a = 0;
  16.   float angle = (2*PI) / 200;
  17.   int step = in.bufferSize() / 200;
  18.   for(int i=0; i < in.bufferSize() - step; i+=step) {
  19.     float x = 400 + cos(a) * (1000 * in.mix.get(i) + 150);
  20.     float y = 300 + sin(a) * (1000 * in.mix.get(i) + 150);
  21.     float x2 = 400 + cos(a + angle) * (1000 * in.mix.get(i+step) + 150);
  22.     float y2 = 300 + sin(a + angle) * (1000 * in.mix.get(i+step) + 150);
  23.     line(x,y,x2,y2);
  24.     a += angle;
  25.   }
  26. }
复制代码

出来的效果是这样子滴~~~



赶紧下载个processing玩玩吧~~
iOS系统上也可以用processing哦~
还可以装载在树莓派上玩哦~

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(15)
花生编程
花生编程
不错不错!
花生编程
花生编程
厉害厉害
三春牛-创客
三春牛-创客
厉害厉害
三春牛-创客
三春牛-创客
厉害厉害
oR5XjBlN
oR5XjBlN
怎么把MP3音频插进去
肖学阳的微信
肖学阳的微信
想请问minim库在哪里下载啊/(ㄒoㄒ)/~~
lcb163
lcb163
在Processing的Python Mode下改写成功:
[code]add_library('minim')
minim=Minim(this)
lin=minim.getLineIn()
def setup():
size(800,600,P2D)
def draw():
background(0)
stroke(255,255,0)
strokeWeight(2)
a=0.0
angle=(2*PI)/200.0
bfsize=lin.bufferSize()
step=bfsize/200
for i in range(0,bfsize-step,step):
x = 400.0 + cos(a) * (1000 * lin.mix.get(i) + 150)
y = 300.0 + sin(a) * (1000 * lin.mix.get(i) + 150)
x2 = 400.0 + cos(a + angle) * (1000 * lin.mix.get(i+step) + 150)
y2 = 300.0 + sin(a + angle) * (1000 * lin.mix.get(i+step) + 150)
line(x,y,x2,y2)
a += angle[/code]

waihin
waihin
楼主你好 macos环境下运行会出现错误: This is NOT allowed. Please call TIS/TSM in main thread!!!=== Minim Error ===
=== Minim.getLineIn: attempt failed, could not secure an AudioInput.
推测是不允许读取麦克风的原因
但是我用minim库内置的一个录音效果则可以访问麦克风
请问楼主知道原因吗。。好多其他的源代码复制下来只要涉及到麦克风实时的好像都不能够通过验证这个如何解决呢
天荷
天荷回复waihin
您好 请问你这个问题解决了吗 我也遇到了同样的问题 一直找不到办法
kk21
kk21回复waihin
我也遇到这个问题 请问解决了吗TT
肌肉火柴人
肌肉火柴人
看不到效果诶
yoyo要变身
yoyo要变身
你好,我想问一下如果用softlower应该怎么做呢
吴瑜
吴瑜回复yoyo要变身
可以请教下怎么用sound flower来识别音频输出呀
iooops
iooops
作者
回复yoyo要变身
可以啊 = = 你写个代码实现一下就好啦~
可以参考examples
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
iooops
iooops
作者
Sketch - import library - add library 然后里面找minim再安装就可以了
buumum
buumum
超喜欢这个效果 求楼主解释一下 为什么我复制到processing上就出不来
iooops
iooops
作者
回复buumum
= = 额
buumum
buumum回复iooops
下载了不知道如何安装 求指点呀:'(
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
iooops
iooops
作者
地板!
iooops
iooops
作者
板凳~
iooops
iooops
作者
沙发!
- 没有更多了 -