用processing写一个音乐可视化 结合傅里叶变换音频处理音乐艺术疗愈
以下是一个使用Processing编写的基本音乐可视化示例,结合了傅里叶变换和音频处理的概念:
import ddf.minim.*;
import ddf.minim.analysis.*;
Minim minim;
AudioPlayer player;
FFT fft;
void setup() {
size(800, 400);
minim = new Minim(this);
player = minim.loadFile("music.mp3");
player.play();
fft = new FFT(player.bufferSize(), player.sampleRate());
}
void draw() {
background(0);
fft.forward(player.mix);
stroke(255);
noFill();
beginShape();
for (int i = 0; i < fft.specSize(); i++) {
vertex(map(i, 0, fft.specSize(), 0, width), map(fft.getBand(i), 0, fft.timeSize() * 2, height, 0));
}
endShape();
}
void stop() {
player.close();
minim.stop();
super.stop();
}
在此示例中,我们使用了Processing的Minim库来处理音频文件。首先,我们使用minim.loadFile()方法加载音频文件,并使用player.play()方法播放音频。然后,我们创建了一个FFT(Fast Fourier Transform)对象,该对象将用于执行傅里叶变换。
在draw()函数中,我们首先清空背景,并通过调用fft.forward(player.mix)来执行傅里叶变换。然后,我们使用beginShape()和endShape()方法来绘制音频频谱图。通过调用fft.getBand(i)方法,我们可以获取特定频率带的幅度,并将其映射到屏幕上的高度。
最后,在stop()函数中,我们关闭了音频播放器和Minim库,以确保在退出程序时正确释放资源。
请注意,此示例仅提供了一个基本的音乐可视化框架,你可以根据自己的需求进行进一步的定制和扩展
原文地址: http://www.cveoy.top/t/topic/h8Wq 著作权归作者所有。请勿转载和采集!