音の利用
import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.effects.*; import ddf.minim.signals.*; import ddf.minim.spi.*; import ddf.minim.ugens.*; //ddf.minimのインポート文 Minim minim; AudioPlayer music; AudioSample audio; FFT fft; void setup() { size(400, 400); minim = new Minim(this); String s = "http://www.is.kyusan-u.ac.jp/~goshi/d/irish.mp3"; //レポート提出時には↑に変えておくように music = minim.loadFile(s, 512); audio = minim.loadSample("se1.mp3", 2048); music.play(); fft = new FFT(music.bufferSize(), music.sampleRate()); } //左右の音量を円で表現 void draw() { background(255); float left = 0; float right = 0; for (int i = 0; i < music.bufferSize() - 1; i++) { left += abs(music.left.get(i)); //バッファ分の音量を全部足す right += abs(music.right.get(i)); } left = 1000*left/music. bufferSize(); //平均値を計算して1000倍(最大値)を掛ける right = 1000*right/music. bufferSize(); rect(width/3, height/2, left, left); ellipse(width*2/3, height/2, right, right); fft.forward( music.mix ); for (int i = 0; i < fft.specSize(); i++) { //周波数ごとに線描く line(i*4, height, i*4, height - fft.getBand(i)*4); //各周波数の大きさで線を描く } } void mousePressed() { audio.trigger(); }
Copy