60 panned


04 December 2011

With the help of the SuperCollider list, I managed to create a MultioutUGen which spits out not only the topmost value of the stack but also the current program counter m_pc. In the above studies, I used this info to determine the position of the Synth’s output in a stereo panorama. What you actually hear is a bunch of upto 60 BBlockerBuf Ugens spreaded in a stereo field.

Below is the accompanying code. I promise to release the BBlocker UGens as soon as I understand how to push it to sc-plugins, without making a huge mess.

Ndef(many).play;
Ndef(many).fadeTime = 20;

(
Ndef(many, {	var num = 50, pos, src;
	var b = {BBlockerProgram().fillUpRandom_(true).makeCollection.as(LocalBuf)}!num;
	
	#src, pos = ({|i| BBlockerBuf.ar(s.sampleRate, b[i])}!num).flop;
	src = src.collect{|x, i| 
		LeakDC.ar(x) * EnvGen.kr(Env([0, 0, 0.1, 0.1, 0], [15 + i, 5, 10 + i, 5]))};
	Pan2.ar(src, pos).sum.tanh;
})
)

(
Tdef(manyPlay, {
	loop{
		(2*Ndef(many).fadeTime).wait;
		Ndef(many).rebuild;
	}
}).play
)

// after a while, crocodile
Tdef(manyPlay).stop;
Ndef(many).free(10);