Four Pillars I

Four Pillars I
by scott eric petersen
jan – 2011

For live electronics (supercollider) and 4 channel audio.

This piece is the first of a series (still in progress) of pieces that explore feedback networks, interactivity (perceived) and aural serendipity. The recording below is one realization of the piece as each time the code is executed the results vary. It has also been modified from the original (for four channels) for stereo.

[soundcloud url=”http://api.soundcloud.com/tracks/67819362″ params=”auto_play=false&show_artwork=true&color=0a76ba” width=”100%” height=”166″ iframe=”true” /]

Here is a graph of the feedback structure:

And for your edification, here is the code for the piece.

/*_________________________________________________________________________

USE THIS FOR 2 CHANNEL VERSION: Pans the synths accross the 2 channels instead
of making them left or right only

Execute I: allocates more memory, boots server, and registers the synthdef
___________________________________________________________________________*/

s.options.sampleRate = "int24";
s.options.memSize = 1024*10
s.reboot;

SynthDef("four_pillars_I", {|out=0, pan=0|

var range, offset, amp, speed, input, fBLoopIn, processing, fBLoopOut;

range = EnvGen.kr(Env([0.5, 0.45, 0.35, 0.30, 0.1], [100, 140, 30, 120]), 1);

offset = EnvGen.kr(Env([0.7, 0.725, 0.75, 0.85, 0.3], [100, 140, 30, 120]), 1, doneAction:2);

amp = LFNoise0.kr(0.5, range, offset).round(1);

speed = LFNoise0.kr(0.5, 2, 2.1);

input = Impulse.ar(speed, mul:0.35);

input = Amplitude.kr(input);

fBLoopIn = LocalIn.ar(1);

processing = input + LeakDC.ar((DelayN.ar(fBLoopIn, 3.5, speed, 1.1*amp)));

processing = RLPF.ar(processing, LFNoise0.kr(speed, 400, 800), 0.15);

fBLoopOut = LocalOut.ar(processing);

processing = processing.thresh(0.45);

processing = Limiter.ar(processing).softclip;

processing = FreeVerb.ar(processing, 0.25, 0.45, 0.75);

processing = Pan2.ar(processing, pan);

Out.ar(out, processing);

}).add;

/*_________________________________________________________________________

Execute II: to begin piece, double-click inside the parentheses below to select all of the code and evaluate it by pressing 'cmd + c'.
___________________________________________________________________________*/

(
w = Synth("four_pillars_I", [\pan, -0.8]);
x = Synth("four_pillars_I", [\pan, -0.2]);
y = Synth("four_pillars_I", [\pan, 0.2]);
z = Synth("four_pillars_I", [\pan, 0.8]);
)