[linux-audio-user] Boggle oggle drum track

Chris McCormick chris at mccormick.cx
Sun Oct 29 19:54:25 EST 2006


Hey Florian,

Thanks so much for sharing this code. I am tempted to add Debian's
unstable repository and install supercollider, now. :) I really like
the sound of this track, especially the hh and bd components, and I am
keen to re-implement it in my environment of choice (Pd) so that I can
use it live with my electronic music duo (if that's ok with you). I was
wondering if you could talk me through some specific bits of the code,
or see if I have got them right below?

On Sun, Oct 29, 2006 at 01:21:18PM +0100, Florian Schmidt wrote:
> (
> SynthDef (\hh,
> 	{
> 		var out;
> 		out = WhiteNoise.ar (mul: XLine.ar (Rand(0.1, 0.2), 0.0001, Rand(0.03, 1), 
> doneAction: 2));
> 		Out.ar (0, [out, out]);
> 	}
> ).send(s)
> )

So this guy creates white noise and then randomly ramps the volume of it
downwards making longer and shorter sounds each time? It seems like the
initial ramp height is set randomly, and so is the decay time?

> (
> SynthDef (\bd,
> 	{
> 		var out;
> 		out = SinOsc.ar(freq: XLine.ar(100,40,0.1), phase: 1.55, mul: 
> XLine.ar(Rand(0.5,0.3), 0.01, Rand(0.1,1), doneAction: 2));
> 		Out.ar(0,[out, out]);
> 	}
> ).send(s)
> )

I am guessing this is a sine wave oscillator multiplied by a line (ramp)
which has random parameters? The initial volume and decay length is
set randomly? What is the significance of the phase 1.55? Is this just
starting the oscillator at a 'high' point in the wave form? That is a
cool trick.

> (
> s.freeAll;
> t = TempoClock.new;
> t.tempo = 7.9;
> t.schedAbs (t.beats.ceil, 
> {
> 	arg beat, sec;
> 	// beat.postln;
> 	if (beat % 8 == 0,
> 	{
> 	  	 Synth.new (\bd);
> 	});

Every eighth tick, play the bass drum.

> 	if (beat % 4 == 0, 
> 	{
> 		if (1.0.rand > 0.7,
> 		{
> 		  	 Synth.new(\bd);
> 		});
> 	});

Every four ticks, if the random value is above 0.7 play the bass drum.

> 	if ((beat % 1 == 0) && (beat % 4 != 0),
> 	{
> 		if (1.0.rand > 0.9, 
> 		{
> 		  	 Synth.new(\bd);
> 		});
> 	});

Every beat that isn't the fourth beat, play the bass drum if the random
value is above 0.9. (so very rarely)

> 	if (1.0.rand > 0.2,
> 	{
> 	  	Synth.new(\hh);
> 	});

Every beat, if the random value is above 0.2 play a hi hat.

Is that about it?

Best,

Chris.

-------------------
chris at mccormick.cx
http://mccormick.cx



More information about the Linux-audio-user mailing list