import ddf.minim.signals.*; import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.effects.*; float magnetx ,magnety; String notes[] = { "c","e","g","a","bb"}; //note order in notes int seq[] = {0,1,2,3,4,3,2,1}; HashSet muns = new HashSet(); int boogienote = 0; HashMap noteletters = new HashMap(); boolean oldenize; //AudioSnippet bam; void setup(){ size(500,500); magnetx = width/2; magnety = height/2; textFont(loadFont("Arial-Black-100.vlw")); Minim.debugOn(); Minim.start(this); for(int g = 0; g < notes.length;g++){ for(char v = 'a'; v <= 'z'; v++){ String notename = notes[g]+"_"+v; noteletters.put(notename,Minim.loadSnippet(notes[g]+"/"+v+".mp3")); } } } void draw(){ background(64); Iterator i = muns.iterator(); while(i.hasNext()){ mun m = (mun)i.next(); m.move(); m.draw(); //i was kind or worried about having two iterators //over the smae collection if one was removing thigns, so //i useda global variable if(oldenize){ m.oldenize(); if(m.kill()){ i.remove(); } } } if(oldenize){ oldenize = false; } } int MAXAGE = 5; class mun{ float origr, origg, origb; String s; int age = MAXAGE; boolean moving; float xs,ys,x,y,tx,ty; void move(){ tx = magnetx; ty = magnety; if(moving){ if(x < tx) xs += .1; if(x > tx) xs -= .1; if(y < ty) ys += .1; if(y > ty) ys -= .1; x += xs; y += ys; } } mun(String ps){ origr = random(64,255); origg = random(64,255); origb = random(64,255); s = ps; x = random(width/4,width*3/4); y = random(width/4,width*3/4); // tx = width / 2; /// ty =width / 2; moving = false; } void letgo(){ moving = true; } void draw(){ if(age <= 0) age = 0; /* fill( ((origr*age) + 64*(10-age))/10 , ((origg*age) + 64*(10-age))/10 , ((origb*age) + 64*(10-age))/10 ); */ fill(origr,origg,origb, age*(250/MAXAGE)); pushMatrix(); translate(x,y); rotate((xs)/2); text(s,-textWidth(s)/2,30); popMatrix(); } void oldenize(){ age--; } boolean kill(){ if(age <= 0){ return true; } return false; } } void mousePressed(){ magnetx = mouseX; magnety = mouseY; } void keyReleased(){ Iterator i = muns.iterator(); while(i.hasNext()){ mun m = (mun)i.next(); m.letgo(); } skipkey = false; } boolean skipkey = false; void keyPressed(){ Character c = new Character(key); c = c.toLowerCase(c); if(c.charValue() >= 'a' && c.charValue() <= 'z'){ if(skipkey) return; skipkey = true; String notelettername = notes[seq[boogienote]]+"_"+ c.charValue(); AudioSnippet a = (AudioSnippet)noteletters.get(notelettername); a.rewind(); a.play(); boogienote++; if(boogienote >= seq.length){ boogienote = 0; } muns.add(new mun((new Character(key)).toString())); oldenize = true; } } // bam.rewind(); // bam.play(); void stop() { Iterator i = noteletters.keySet().iterator(); while(i.hasNext()){ AudioSnippet a = (AudioSnippet) noteletters.get(i.next()); a.close(); } Minim.stop(); super.stop(); }