/** *

Bloopy World

*

by Benito

*

Bloops. Ring modulated. With reverb coming in and out.

* */ import net.beadsproject.beads.core.*; import net.beadsproject.beads.data.*; import net.beadsproject.beads.events.*; import net.beadsproject.beads.ugens.*; AudioContext ac; Reverb verb; Envelope disspeed, verbspeed, bloopspeed, blooppitch; void setup() { size(400, 400); ac = new AudioContext(); bloopspeed = new Envelope(ac, -4); WavePlayer saw = new WavePlayer(ac, bloopspeed, Buffer.SAW); Function bits = new Function(saw) { public float calculate() { if(x[0] < 0) return 0; return x[0] * x[0]; } }; blooppitch = new Envelope(ac, 220); WavePlayer sine = new WavePlayer(ac, blooppitch, Buffer.SINE); disspeed = new Envelope(ac, .643); WavePlayer disruptor = new WavePlayer(ac, disspeed, Buffer.SINE); Function freq = new Function(disruptor) { public float calculate() { return 57.8 + (x[0] + 1) * 100; } }; WavePlayer sine2 = new WavePlayer(ac, freq, Buffer.SINE); Gain mult = new Gain(ac, 1, sine); mult.addInput(sine2); Gain g = new Gain(ac, 1, bits); g.addInput(mult); verb = new Reverb(ac); verb.addInput(g); verbspeed = new Envelope(ac, .25); WavePlayer verbsin = new WavePlayer(ac, verbspeed, Buffer.SINE); Function verblevel = new Function(verbsin) { public float calculate() { return (x[0] + 1) * 3; } }; Gain verbg = new Gain(ac, 1, verblevel); verbg.addInput(verb); WaveShaper ws = new WaveShaper(ac); ws.addInput(g); ws.addInput(verbg); Gain mg = new Gain(ac, 1, .4); mg.addInput(ws); ac.out.addInput(mg); ac.start(); } void draw() { background(0); } void mouseMoved() { blooppitch.clear(); blooppitch.addSegment(pow(2, (float)mouseX / width * 6) * 55, 200); disspeed.clear(); disspeed.addSegment((float)mouseY / height * 3, 100); } void mouseClicked() { mouseDown(); } void mouseDragged() { mouseDown(); } void mouseDown() { verbspeed.clear(); verbspeed.addSegment((float)mouseX / width * 2, 500); bloopspeed.clear(); bloopspeed.addSegment(((float)mouseY / height - .5) * 20, 200); }