import controlP5.*; import ddf.minim.signals.*; import ddf.minim.*; import ddf.minim.analysis.*; import ddf.minim.effects.*; import ddf.minim.ugens.*; Minim minim; AudioOutput out; ControlP5 gui; public float Mass = 0.001f; public float SpringConstant = 1000.f; public float Damping = 0.002f; void setup() { size( 540, 340 ); minim = new Minim(this); out = minim.getLineOut(); gui = new ControlP5(this); gui.addKnob("Mass", 0.001f, 0.01f, 0.001f, 145, 200, 80); gui.addKnob("SpringConstant", 100, 2000, 1000, 275, 200, 80); gui.addKnob("Damping", 0.001, 0.1f, 0.002, width/2 + 140, 200, 80); gui.addBang("Trigger", 45, 220, 50, 50); } void draw() { background( 0 ); stroke( 255 ); for( int i = 0; i < out.bufferSize() - 1; i++ ) { float x1 = map( i, 0, out.bufferSize(), 0, width ); float x2 = map( i+1, 0, out.bufferSize(), 0, width ); line( x1, 50 + out.left.get(i)*50, x2, 50 + out.left.get(i+1)*50); line( x1, 150 + out.right.get(i)*50, x2, 150 + out.right.get(i+1)*50); } } public void Trigger() { out.playNote(0.f, 10.f, new MSDInstrument(Mass, SpringConstant, Damping)); } void stop() { out.close(); minim.stop(); super.stop(); }