import ddf.minim.*; import ddf.minim.signals.*; String signal = "off"; int select = 0; Minim minim; AudioOutput out; color[] colorMenu = {#f94d14, #46d2e3, #6ba55c, #e3bb6b}; SineWave[] drawSound = new SineWave[4]; void setup() { size(500, 500); background(0); smooth(); minim = new Minim(this); out = minim.getLineOut(Minim.STEREO, 2048); for (int i=0; i<4; i++) { drawSound[i] = new SineWave(300*(i+1), .2, out.sampleRate()); drawSound[i].portamento(200); out.addSignal(drawSound[i]); } out.noSound(); } void draw() { for (int i=0; i<4; i++) { stroke(0); if (i == select) { stroke(255); } fill(colorMenu[i]); ellipse(20,(i+1)*20,16,16); } fill(0,5); noStroke(); rect(0,0,width,height); stroke(colorMenu[select]); strokeWeight(3); if (signal == "on") { line(mouseX,mouseY,pmouseX,pmouseY); } strokeWeight(1); } void mouseMoved() { if (signal == "on") { float freq = map(mouseY, height, 0, 60, 300*(select+1)); drawSound[select].setFreq(freq); float pan = map(mouseX, 0, width, -1, 1); drawSound[select].setPan(pan); out.enableSignal(drawSound[select]); } } void mouseClicked() { if (signal == "off") { signal = "on"; } else { out.noSound(); signal = "off"; } for (int i=0; i<4; i++) { if (mouseX>10 && mouseX<30 && mouseY>10+i*20 && mouseY<30+i*20) { select = i; out.noSound(); signal = "off"; } } } void stop() { out.close(); minim.stop(); super.stop(); }