/** 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(); }