import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.effects.*; import ddf.minim.signals.*; import ddf.minim.spi.*; import ddf.minim.ugens.*; import cc.arduino.*; import org.firmata.*; import ddf.minim.*; import ddf.minim.analysis.*; import processing.serial.*; import cc.arduino.*; Arduino arduino; Minim minim; AudioPlayer song; FFT fft; int redPin1 = 5; int greenPin1 =6; int bluePin1 = 9; int color_id = 0; void setup() { size(800, 600); arduino = new Arduino(this, "com5", 57600); for (int i = 0; i <= 13; i++) arduino.pinMode(i, Arduino.OUTPUT); for (int i = 0; i <= 13; i++) arduino.analogWrite(i,255); minim = new Minim(this); song = minim.loadFile("song.mp3"); song.play(); fft = new FFT(song.bufferSize(), song.sampleRate()); } void draw() { background(#FFFFFF); fft.forward(song.mix); strokeWeight(0.5); stroke(#8FF442); // frequency pushMatrix(); translate(100, 0); for(int i = 0; i < 0+fft.specSize(); i++) { line(i, height*4/5, i, height*4/5 - fft.getBand(i)*4); if(i%100==0) text(fft.getBand(i), i, height*4/5+20); if(i==200) { if(fft.getBand(i)>2) { setColor1(100,0,255); } else if(fft.getBand(i)>1) { setColor1(50,255,50); } else { setColor1(255,0,0); } } if(i==50) { if(fft.getBand(i)>5) { color_id = (color_id+1)%4; } // else if(fft.getBand(i)>3) // { // if(color_id==0) setColor2(0,255,0); // else if(color_id==1) setColor2(0,255,255); // else if(color_id==2) setColor2(0,0,255); // else setColor2(255,0,0); // } // else // { // setColor2(255,255,255); // } } } popMatrix(); stroke(#FF0000); //waveform for(int i = 100; i < song.left.size() - 1; i++) { line(i, 50 + song.left.get(i)*50, i+1, 50 + song.left.get(i+1)*50); line(i, 150 + song.right.get(i)*50, i+1, 150 + song.right.get(i+1)*50); line(i, 250 + song.mix.get(i)*50, i+1, 250 + song.mix.get(i+1)*50); } noStroke(); fill(#FFFFFF); rect(0, 0, 100, height); textSize(16); fill(#046700); text("Left", 10, 50); text("Right", 10, 150); text("Mixed", 10, 250); text("Frequency", 10, height*4/5); } void stop() { for (int i = 0; i <= 13; i++) arduino.digitalWrite(i,arduino.HIGH); song.close(); minim.stop(); super.stop(); } void setColor1(int red, int green, int blue) { arduino.analogWrite(redPin1, red); arduino.analogWrite(greenPin1, green); arduino.analogWrite(bluePin1, blue); }