View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

juliaPoint Routine

Home   How To   Code Pool   Public Library   Theory   Events
here are some routines guaranteed to drive your significant other crazy. based on a julia set equation (loosely: it's essentially one dimension's movement...)




SynthDef("impComb2", { arg freq=1, pan=0, dur=1.0, lev=1;
	var env, out;
		env = EnvGen.ar(Env.perc(0.001, 1, 1, -8), 
levelScale: lev, timeScale: dur, doneAction:2);
		out = Pan2.ar(Mix.ar(CombL.ar(Impulse.ar(0.1),0.01,freq,2)), pan);
	Out.ar(0, out*env);
}).load(s);


SynthDef("klankThangX2", { arg out=0,trig, level, freq, time = 1, 
panPos=0, noiseRate=0.2, rq=0.1;
	var klank, harm, amp, ring, env, mix;
	harm = Control.names([\harm]).ir(Array.series(4,1,1));
	amp = Control.names([\amp]).ir(Array.rand(4,0.25, 0.7));
	ring = Control.names([\ring]).ir(Array.fill(4,1));
	klank = 
Pan2.ar(Klank.ar(`[harm,amp,ring],Decay.ar(Impulse.ar(trig, 0), 
0.001, 0.1, 0.1), freq, 0.1), panPos);
	env = EnvGen.ar(Env.perc(0.01, time, level, 4), doneAction: 2);
	mix = RLPF.ar(klank, LFNoise2.kr(noiseRate, 700, 1500), rq);
	Out.ar(out, (mix*env).softclip);
}).load(s);

SynthDef("bufPlayer", { arg panPos=0, rate = 1, bufnum = 0, 
startPos=0.0, time=1.0, envLev=1.0, loopLength=1, outBus=0;
	var out, eg, triggerer;
	triggerer = Impulse.kr(loopLength.reciprocal);
	eg = EnvGen.kr(Env.new([0,1,1,0],[0.1,0.8,0.1], 'welch'), 
timeScale: time, levelScale: envLev, doneAction: 2);

	out = Pan2.ar(PlayBuf.ar(1, bufnum, rate, triggerer, 
startPos, loop: 1), panPos);
	Out.ar(outBus, out*eg);
}).load(s);


SynthDef("ping", { arg freq=400, dur=1, lev=0.8, panPos=0, out=0;
	var source, env;
	source = Pan2.ar(Ringz.ar(PinkNoise.ar(0.01),freq, 0.3), panPos);
	env = EnvGen.ar(Env.perc(0.001, 1, 1,-8), levelScale:lev, timeScale: dur, doneAction:2);
	Out.ar(out, source*env);
}).load(s);

(
//b = Buffer.read(s,"/home/jes/Sounds/metalthing.aif");
 
g=Group.new;
Routine({ arg i;
	var z,c;
	z=0;
	c=1;
		loop({
		z=((z-c).abs.sqrt)*[1,-1].choose;
				Synth.head(g, \impComb2, [
				\freq, (74+z.ratiomidi).midicps.reciprocal,
				\dur, z.abs,
				\lev, rrand(0.5,0.7),
				\pan,1.0.rand2,
				\out, 0
				]);  
			((z.abs)*0.25).wait;
			});
}).play;



j=Group.new;
Routine({ arg i;
	var z,c;
	z=0;
	c=1;
		loop({
		n =[3,4,5,7,11,13].choose;
		z=((z-c).abs.sqrt)*[1,-1].choose;
				Synth.head(j, \klankThangX2, [
				\freq, (50+z.ratiomidi).midicps, 
				\time, z.abs+0.1,
				\level, rrand(0.15, 0.25),
				\noiseRate, rrand(0.5, 3),
        		\rq, rrand(0.05, 0.3),
        		\panPos, 0.3.rand2,
				\out, 0
				],
        		[\n_setn, -1, \harm, n] ++ Array.series(n,1,1),
				[\n_setn, -1, \amp, n] ++ Array.rand(n,0.25, 0.7),
				[\n_setn, -1, \ring,n] ++ Array.fill(n,1.0.rand+0.125)
				);  
			z.abs.wait;
			});
}).play;

/*
h=Group.new;
Routine({ arg i;
	var z,c, nextTime;
	z=0;
	c=0.8;
		loop({
		z=((z-c).abs.sqrt)*[1,-1].choose;
		nextTime = (z.abs)*0.5;
		Synth.head(h, "bufPlayer",[
  				\bufnum, b.bufnum,
				\time, nextTime,
				\startPos, 0,
				\rate, z,
				\envLev, rrand(0.3, 0.5),
				\loopLength, z,
				\panPos, 0.7.rand2,
				\outBus, 0
				]);  
			nextTime.wait;

			});
}).play;
*/

h=Group.new;
Routine({ arg i;
	var z,c, nextTime;
	z=0;
	c=0.8;
		loop({
		z=((z-c).abs.sqrt)*[1,-1].choose;
		nextTime = (z.abs)*0.5;
		Synth.head(h, "ping",[
				\dur, nextTime,
			    \freq, (74+z.ratiomidi).midicps,
				\lev, rrand(0.7, 1.0),
				\panPos, 0.7.rand2,
				\out, 0
				]);  
			nextTime.wait;

			});
}).play;
)

/*
authors so far:
jonathan segel
*/



Link to this Page