/**
Bells - The day 19 door for my 2010 Advent calendar
by Guru
click on the bells...
*/
import ddf.minim.*;
import ddf.minim.signals.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
Minim minim;
AudioSample ding1;
AudioSample ding2;
AudioSample ding3;
void setup() {
size(300,300,P2D);
smooth();
minim = new Minim( this );
ding1 = minim.loadSample( "ding1.wav", 1024 );
ding2 = minim.loadSample( "ding2.wav", 1024 );
ding3 = minim.loadSample( "ding3.wav", 1024 );
}
void draw() {
float a1 = getMax( ding1 ) * 10;
float a2 = getMax( ding2 ) * 10;
float a3 = getMax( ding3 ) * 10;
background(0);
strokeWeight(2);
stroke( 255,255,0);
fill( 255,255,0 );
pushMatrix();
translate( 80,60);
rotate( radians( a1 ));
bell();
popMatrix();
fill( 255,222,0 );
pushMatrix();
translate( 220,60);
rotate( radians( a2 ));
bell();
popMatrix();
fill( 255,200,0 );
pushMatrix();
translate( 150,170);
rotate( radians( a3 ));
bell();
popMatrix();
}
void bell() {
beginShape();
vertex(-40,80);
bezierVertex( 00, 50, -40, 0, 00, 0);
bezierVertex( 40, 0, 0, 50, 40, 80);
endShape(CLOSE);
}
float getMax( AudioSample sample ) {
float a = 0;
for( int i = 0; i < sample.bufferSize() - 1; i++) {
float temp = sample.mix.get(i);
if (abs( temp ) > abs( a ) ) {
a = temp;
}
}
return a;
}
void mouseClicked() {
if (green(get(mouseX, mouseY)) == 255) {
ding1.trigger();
} else if (green(get(mouseX, mouseY)) == 222) {
ding2.trigger();
} else if (green(get(mouseX, mouseY)) == 200) {
ding3.trigger();
}
}
void stop() {
ding1.close();
ding2.close();
ding3.close();
minim.stop();
super.stop();
}