processing声音处理.ppt

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

谁最早让声音视觉化?
十九世纪初,德国物理学家克拉德尼第一次实施了这 个试验:
他在一个小提琴上安放一块较宽的金属薄片,在上面均匀地 撒上沙子。然后开始用琴弓拉小提琴,结果这些细沙自动排 列成不同的美丽图案,并随着琴弦拉出的曲调不同和频率的 不断增加,图案也不断变幻和越趋复杂——这就是著名的 “克拉德尼声音图案”。
关于声音的总结
声音文件的大小和采样位数、采样频率 有关:
时间和采样位数相同时,采样频率越高,声音越真 实,文件也越大。
时间和采样频率相同时,采样位数越高声音越真实, 文件也越大。
Processing如何将声音视觉化?
必要条件:把声音文件转化为一系列的数字 实现方式:逐点取出音频的频率 呈现方式:柱形、圆形、线形……
思考
如果将圆形换为柱形、线条或者点,将是怎样 的效果?
如果更变了填充颜色?
线的效果
size(600,400); background(255); fill(0); float x=0,y=200; for (float i=0;i<600;i+=5) {
println(i); float a=random(-0.9,0.9); line(x, y, i,200+a*100); }
练习
基本任务:
根据学习任务单,找一段自己喜欢的音乐,将它的 频率变为视觉效果。
进阶任务:
编写音频输入互动的程序,使用麦克风,测试效果。
课堂总结
开放思想,processing还能实现更多的效果, 创意才是灵魂。
经瑞士科学家汉斯·杰尼等人的不断完善,逐步形成 了音流学(Cymatics),即通过不同频率的声波振动 水、细沙、油或其他传播介质,就能得到各种物质的 声波振动几何图案,从而从一个侧面证实了“万物波 动理论”的正确性。
留声机的来历
1857年,法国发明家斯科特(Scott)发明了声 波振记器。声波振记器是最早的原始录音机, 是留声机的鼻祖。它能将声音转录到一种可 视媒介,但无法在录音后播放。
工作流程
1、加载扩展库(sketch→import library); 库名称:minim audio
2、载入音频文件。 3、使用for循环,用player.left.get()画出图案; 4、用draw循环,出现动画效果。
代码分析
import ddf.minim.*; AudioPlayer player; Minim minim;
Processing的设计目标
以数字艺术为背景百度文库 让数字形象化; 横跨科学和艺术两大领域。
让无形的数字形象地呈现!
我们学了哪些内容?
2D的图形绘画; 动画的实现; 图片的处理。
Processing声音的视觉化
声音的原理
声音是一种波动,当演奏乐器、拍打一扇门或 者敲击桌面时,声音的振动会引起介质——空 气分子有节奏的振动,使周围的空气产生疏密 变化,形成疏密相间的纵波,这就产生了声波, 这种现象会一直延续到振动消失为止。
}
加载库 载入音频文件
画出图案
进阶
如何使用麦克风,做声音的即时视觉效果。
import ddf.minim.*; Minim minim; AudioInput player; void setup() { size(1024, 400); smooth(); minim=new Minim(this); minim.debugOn(); player=minim.getLineIn(Minim.STEREO, 1024); }
刚开始时,这台声波记振仪是将录音转到一 块玻璃板上。后来的一种版本用一张纸放在 鼓面或滚筒上。另一种版本将一条代表声波 的线拉到一卷纸上。
等到1877美国发明家爱迪生发明世界上第一 台留声机后,人们才了解到,由声波记振仪 记录下来的波形,只需一个重放装置就能重 现声音。
声音如何数字化?
通过“采样”和“量化”实现波形声音模拟量的数字化。 采样频率:每秒所采样的次数,单位为HZ(赫兹)。 采样位数:每个采样点所需的二进制位数。
知识回顾
如下代码的作用:
size(600,400); background(255); fill(0); for (float i=0;i<600;i+=5) {
println(i); float a=random(-0.9,0.9); ellipse(i, 200+a*100, abs(a*5), a*100); // rect(i, 200+a*100, abs(a*5), a*100); }
void setup() { size(1024, 400); smooth(); minim=new Minim(this); player=minim.loadFile("../2002s.mp3", 2048); player.play();
}
void draw() { background(0); stroke(255); for (int i=0;i<player.bufferSize()-1;i++) { strokeWeight(abs(player.left.get(i)*20));//线条粗细 line(i, 150+player.left.get(i)*50, i+1, 150+player.left.get(i+1)*50); }
相关文档
最新文档