// -- PERPETUUM -- // A perpetual audio - visual generative sketch // by Alessandro Capozzo, winter 2005 // www.abstract-codex.net // ******************************************************* // built with processing .68 // and Sonia v.2.8 audio library by Amit Pitaru // it needs Jsynth plug-in www.softsynth.com/jsyn/plugins/ // ******************************************************** int streamSize = 1024; float molt=0.0; float molt2=0.0; float Cycle = TWO_PI/(streamSize*4); float part=0.0; float part2=0.0; float oscRatio = TWO_PI/streamSize; float osc, osc_2, osc_3, osc_4, osc_5; float sinusController,sinusController2; float noiseVal; float dimRatio; void setup(){ size(720,360); framerate(40); Sonia.start(this,2048); LiveOutput.start(streamSize,streamSize*2); LiveOutput.startStream(); noStroke(); } void loop(){ background(200,80,40); translate(width*.5,height*.5); tramaCalc(); } void tramaCalc(){ part+=Cycle; part2+=(Cycle*.3); sinusController=sin(part)*.5; sinusController2=sin(part2); molt=sinusController; molt2=sinusController2; dimRatio=80*sinusController; for(int i = 0; i < LiveOutput.data.length-1; i++){ noiseVal=noise(i,molt,molt2)*sinusController2; rotate(noiseVal); fill(160+Math.abs(+1200*noiseVal),200-10*noiseVal,Math.abs(900*noiseVal),80); rect((i*.5)+noiseVal,30 - LiveOutput.data[i]*10,LiveOutput.data[i+1]*dimRatio, LiveOutput.data[i+1]*dimRatio); } } void liveOutputEvent(){ for(int i = 0; i < LiveOutput.data.length; i++){ osc = sin ((120 * oscRatio) * i); osc_2 = sin ((240 * oscRatio) * i)*molt; osc_3 = sin ((300 * oscRatio) * i)*(molt*2); osc_4 = sin ((180 * oscRatio) * i); osc_5 = sin (((60+molt) * oscRatio) * i)*molt2; LiveOutput.data[i] = (osc*osc_2*osc_3)+(osc_4*osc_5); } } public void stop(){ Sonia.stop(); super.stop(); }