void def_beads() { bration = new Bead() { float fr = 1500; float fs = .5; public void messageReceived(Bead message) { float rnd = random(.98, 1.02); float[] farr = calcfornotenum(notenum); float f1 = farr[0] * pow(rnd, .5); float f2 = farr[1] * rnd; float f3 = farr[2] * rnd * rnd; float[] farr2 = calcfornotenum(notenum); float tx = (760 - 1200 / farr2[0] * 10) * sqrt(farr2[0]) / 80 + 20; float ty = ((farr2[1] + farr2[2] - 1500) / 10 - tx * .65) * .8 + 150; //float f4 = 10000 / (f1 + f2); // mod freq float nl = notelen * (1 - notenum / 2560); float att = min(nl * .3, 3000); Envelope menv1 = new Envelope(ac, 0); Gain mg1 = new Gain(ac, 1, menv1); float c1 = 1 / (1 + f1 / fr); menv1.addSegment(c1 * .3, att); menv1.addSegment(0, (nl - att) * c1, new KillTrigger(mg1)); Envelope menv2 = new Envelope(ac, 0); Gain mg2 = new Gain(ac, 1, menv2); float c2 = 1 / (1 + f2 / fr); menv2.addSegment(c2 * .3, att); menv2.addSegment(0, (nl - att) * c2, new KillTrigger(mg2)); Envelope menv3 = new Envelope(ac, 0); Gain mg3 = new Gain(ac, 1, menv1); float c3 = 1 / (1 + f3 / fr); menv3.addSegment(c3 * .3, att); menv3.addSegment(0, (nl - att) * c3, new KillTrigger(mg3)); float dtlen; Gain dtgain; if(c1 >= c2 && c1 >= c3) { dtlen = (nl - att) * c1 + att; dtgain = mg1; } else if (c2 >= c3) { dtlen = (nl - att) * c2 + att; dtgain = mg2; } else { dtlen = (nl - att) * c3 + att; dtgain = mg3; } Static fst1 = new Static(ac, f1 * fs); Mult fmod1 = new Mult(ac, fst1, brator); WavePlayer s1 = new WavePlayer(ac, fmod1, Buffer.SINE); WavePlayer s2 = new WavePlayer(ac, f2 * fs, Buffer.SINE); WavePlayer s3 = new WavePlayer(ac, f3 * fs, Buffer.SINE); mg1.addInput(s1); mg2.addInput(s2); mg3.addInput(s3); //maingain.addInput(mg1); //maingain.addInput(mg2); //maingain.addInput(mg3); Envelope genv = new Envelope(ac, 0); genv.addSegment(1, att * 1.3, .5, null); //genv.addSegment(1, att); genv.addSegment(0, dtlen - att * 1.3, 1.1, new KillTrigger(genv)); brationlevel.addInput(genv); Envelope panpos = new Envelope(ac, 0); Panner panner = new Panner(ac, panpos); float dest = tx / width * 2 - 1; panpos.addSegment(dest * -.1, dtlen * .2); panpos.addSegment(dest * .3, dtlen * .3); panpos.addSegment(dest * .8, dtlen * .3); panpos.addSegment(dest, dtlen * .3, new KillTrigger(panner)); panner.addInput(mg1); panner.addInput(mg2); panner.addInput(mg3); maingain.addInput(panner); Bead deleter; synchronized(brations) { deleter = new Bead() { int bk = brationkey; public void messageReceived(Bead message) { //println("deleting!"); brations[bk] = null; numbrations--; println("# of brations: " + numbrations); } }; brations[brationkey] = genv; brationsnote[brationkey] = notenum; brationsx[brationkey] = tx; brationsy[brationkey] = ty; brationkey = (brationkey + 1) % brationslen; } net.beadsproject.beads.ugens.DelayTrigger dt = new net.beadsproject.beads.ugens.DelayTrigger(ac, dtlen - 100, deleter); dtgain.addDependent(dt); numbrations++; println("# of brations: " + numbrations); } }; }