processing的优势在于数据可视化,那么利用它来做音频可视化想必也是许多学习processing小伙伴的一种目标,在processing中并没有提供自带的库文件来实现,都是通过第三方的库文件来实现的。最常见的有Sound \Beads\Minim三种,具体用法要参见他们的库文件说明(这些都在官网上有,我不一一列出来)。
这里,我们以 为例来实现一个简单的音乐可视化界面。我们大体分为以下几步来实现:
1、播放一个音乐文件(MP3);
2、获取其音频取值
3、通过图形显示音频值的变化
4、分类音频中的(中高低三种音频)并在图形中分别动态显示
好了,任务明确了,我们来开始第一步:

一、播放一个音乐文件(MP3)
1、sound方式
最简单的方式就是用sound库文件来实现,代码如下:

import processing.sound.*;
SoundFile file;
void setup()
{size(500,200);
background(255);
file=new SoundFile(this,"super star.mp3");
file.play();}
void draw()
{}

非常简单,就只是初始化一个SoundFile对象即可。

2、Minim方式

import ddf.minim.*;Minim minim;
AudioPlayer player;void setup() {size(500,200); minim = new Minim(this);player = minim.loadFile("2005010623271461.mp3");player.play();}void draw() {}

实际调用我们发现,第二种方式的调用速度更快。

二、获取音值
上面的步骤完成为我们这步奠定必要的基础,否则我们就没有信号源了。

import processing.sound.*;
SoundFile file;
Amplitude amp;
AudioIn in;
void setup()
{size(640,360);
background(255);file=new SoundFile(this,"super star.mp3");amp = new Amplitude(this);in = new AudioIn(this);in.start();amp.input(in);file.play();}
void draw()
{println(amp.analyze());
}

我们在最上面的代码基础上增加了两个对象 Amplitude 和AudioIn,这样,我们就可以通过Amplitude的analyze方法获取音值并输出。如下:

其中AudioIn负责从声卡获取声音流,然后通过Amplitude.input来接过声音流,最后用Amplitude .analyze分析出单个的音值点数据。

三、可视化图像的绘制
有了上面两步的基础,其实稍有processing基础的就可以完成图形输出了(不了解基础的可以参看前面的processing博文)。
下面是绘图的代码:

import processing.sound.*;
SoundFile file;
Amplitude amp;
AudioIn in;
float mval;
void setup()
{size(640,360);
background(255);file=new SoundFile(this,"super star.mp3");amp = new Amplitude(this);in = new AudioIn(this);in.start();amp.input(in);file.play();}
void draw()
{fill(255,255,255);noStroke();rect(0,70,10,160); for(int i=0;i<this.width/10;i++){delay(1);mval=amp.analyze();noStroke();fill(255,255,255);rect((i+1)*10,70,10,160); stroke(255,255,255);fill(255,0,0);rect(i*10,250-mval*100000,10,50+mval*100000); println(mval);}}

大致效果如下:

看起来使用analyze方法基本实现了目标,当然,我们如果感兴趣可以继续将上述代码进一步精细化,时间更精细的效果。我们知道,声音包含振幅和频率两个基本因素,而在录制信号的时候还涉及到采样率。实际上,上面的图形仅仅对振幅(也就是声音强度)进行了显示。完整的声音波表,应该是有频率及对应的声音强度组成的图形。我们后面继续探索声音波表的完整图形绘制,请感兴趣的童鞋继续关注后续的processing摸索前行的博客。

Processing摸索前行(9)-音频可视化相关推荐

  1. processing摸索前行(01)

    注:本系列教程适合于有一定编程经验的同道阅读参考,如果您还从未接触过编程(尤其偏艺术类的同学)可能需要补习一下基本的编程基础.本系列教程不会对编程基础做过多的讲解和引导,着重在processing的结 ...

  2. android pcm频谱_Android音频可视化

    本文作者:熊鋆洋 (网易云音乐大前端团队) 前言 音频可视化,顾名思义就是将声音以视觉的方式呈现出来.如何将音频信号绘制出来?如何将声音的变化在视觉上清晰的表现出来,让视觉和听觉上的感受一致?这些在 ...

  3. 傅里叶变换音频可视化_Web Audio在音频可视化中的应用

    Web Audio在音频可视化中的应用 本文有两个关键词:音频可视化和Web Audio.前者是实践,后者是其背后的技术支持. Web Audio 是很大的知识点,本文会将重点放在如何获取音频数据这块 ...

  4. 傅里叶变换音频可视化_快速上手网易云音乐可视化

    作者:Sanpeier https://juejin.im/post/5dd88289e51d4523564243da 什么是音频可视化 音频可视化,顾名思义,就是通过获取音频的波形.频率和其他来自音 ...

  5. 傅里叶变换音频可视化_HTML5如何实现音频可视化频谱跳动

    本篇教程探讨了HTML5如何实现音频可视化频谱跳动,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < html> HTML5音频可视化频谱跳动代码 * { ...

  6. html频谱跳动效果,HTML5音频可视化频谱跳动代码

    HTML5音频可视化频谱跳动代码 *{ margin:0; padding:0; } #canvas { display: block; background: linear-gradient(135 ...

  7. 前端如何查看音频的长度_Android音频可视化

    本文作者:熊鋆洋 (网易云音乐大前端团队) 前言 音频可视化,顾名思义就是将声音以视觉的方式呈现出来.如何将音频信号绘制出来?如何将声音的变化在视觉上清晰的表现出来,让视觉和听觉上的感受一致?这些在 ...

  8. 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图

    这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...

  9. 20X01 FCPX插件 音频可视化视觉特效 PFS Fcpx Audio Effector

    20X01 FCPX插件 音频可视化视觉特效 PFS Fcpx Audio Effector [插件简介] FCPX 音频可视化工具  FCPX: Audio Effector 可直接在FCPX软件中 ...

最新文章

  1. 云计算服务在小企业中的作用?
  2. 李开复老师:微博改变一切
  3. CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88...
  4. Mob统计分析游戏类App详细埋点需求
  5. Android唤醒屏幕
  6. idea 报错is already defined as class
  7. 团战开黑必备“良药”了解一下!
  8. Python图像的基本操作
  9. 基于SSM的学生宿舍管理系统
  10. 数学建模——灵敏度分析
  11. vue项目结合 Element插件
  12. ArrayList类的基本使用,完成案例随机不重复点名的程序
  13. 2021年中国异戊酰氯市场趋势报告、技术动态创新及2027年市场预测
  14. 面向三种典型程序语言的中小学计算思维课堂设计研究
  15. .htaccess wp博客 静态网页 永久链接一步步来
  16. 个人博客系统实践总结
  17. TK1+yolo安装指南
  18. 轨道交通通信施工学习总结(四)漏泄同轴电缆安装
  19. excel想要把两列合并且用空格隔开
  20. SPA和MPA的区别

热门文章

  1. Android Studio上Kotlin的入门,移动应用系统开发
  2. ios和android 浏览器适配问题总结
  3. js实现表格列的位置拖拽
  4. LeetCode 417.太平洋大西洋水流问题
  5. OrangePIPC2---bootrom
  6. 《请停止无效的努力》读书笔记
  7. mysql 大于当前时间条件查询
  8. 2021漳州一中历年高考成绩查询,2021年漳州中考录取分数线,历年漳州各高中录取分数线排名...
  9. 用Vue写的一个简易的待办事项清单系统
  10. 关于幂级数求和是否弃用首项的理解