“The Record Player is Broken”

nov 2012
SuperCollider Code (executed in real-time.)

I just finished a submission for the SCTweet-a-thon, this time being held at WOCMAT. (Please note that because of WordPress awesomeness (sarcasm… drip drip) the code below runs out of the visible area of the post.  You can see if all clearly if you copy and past it somewhere else.)

Here’s a 4 minute recording of the code in action:
[soundcloud url=”http://api.soundcloud.com/tracks/67286686″ params=”auto_play=false&show_artwork=true&color=0a76ba” width=”100%” height=”166″ iframe=”true” /]

The tweet is very simple:

play{a=LFNoise1.kr(0.7);b=a.range(4);c=Dust.ar(b);d=RLPF.ar(CombC.ar(c+LocalIn.ar()*b/2,4,b,b).clip,a.range(12000),b/8);LocalOut.ar(d);d!2};

  • ‘a’ provides the movement.
  • ‘b’ changes the range from -1.0-1.0 to 0.0-4.0.
  • ‘c’ is the sound source (a smattering of impulses) whose density is set by b.
  • ‘d’ takes c as the input of a comb filter whose delay time and feedback amount are set by ‘b’. along with c is the beginning of a feedback loop (LocalIn.) the amplitude of the localin is set by b/2. This is nested inside a resonant low-pass filter whose range is a expanded to 0-12000 and whose resonant pole (q or rq in this case) is set to b/8 (at range of 0.0-0.5).
  • this is then sent back through the loop (LocalOut) and ‘d’ is duplicated (made stereo) and sent to the dac.

Below is all the code leading up to one I submitted so you can see the evolution of the tweet.

 // the record is broken
 // sc tweet by s. petersen
{a=Dust.ar(1);b=LFNoise1.kr(2,2,2);c=CombC.ar(a+LocalIn.ar(1),4,b,b);d=LocalOut.ar(c);c+d;}.play;
// added linear range mul to localin
{a=Dust.ar(1);b=LFNoise1.kr(2,2,2);c=CombC.ar(a+LocalIn.ar(1)*b.linlin(0,4,0.95,1.05),4,b,b);d=LocalOut.ar(c);c+d;}.play;
// added clip (126 chars) changed range
{a=Dust.ar(1);b=LFNoise1.kr(0.7,2,2);c=CombC.ar(a+LocalIn.ar(1)*b.linlin(0,4,0.99,1.09),4,b,b).clip;d=LocalOut.ar(c);c+d;}.play;
// change dust density to 'b' -- removed redundant 'd' from end c+d
{b=LFNoise1.kr(0.7,2,2);a=Dust.ar(b);c=CombC.ar(a+LocalIn.ar(1)*b.linlin(0,4,0.99,1.09),4,b,b).clip;LocalOut.ar(c);c;}.play;
// Add sum resonance
{b=LFNoise1.kr(0.7,2,2);a=Dust.ar(b);c=CombC.ar(a+LocalIn.ar(1)*b.linlin(0,4,0.99,1.09),4,b,b).clip;c=RLPF.ar(c,(b+200)*4,0.2);LocalOut.ar(c);c;}.play;
//________________________
 // RELEASE CANDIDATES
 //________________________
// super distorted because localin is mul by d which has a range of 4
play{b=LFNoise1.kr(0.7);d=b.range(4);a=Dust.ar(d);c=CombC.ar(a+LocalIn.ar(1)*d,4,d,d).clip;c=RLPF.ar(c,b.range(12000),0.2);LocalOut.ar(c);c!2};
// remove mul d and it's much more mellow - maybe more insteresting, but less powerful
play{b=LFNoise1.kr(0.7);d=b.range(4);a=Dust.ar(d);c=CombC.ar(a+LocalIn.ar(1),4,d,d).clip;c=RLPF.ar(c,b.range(12000),0.2);LocalOut.ar(c);c!2};
// V1
play{a=LFNoise1.kr(0.7);b=a.range(4);c=Dust.ar(b);d=RLPF.ar(CombC.ar(c+LocalIn.ar()*b/2,4,b,b).clip,a.range(12000),0.2);LocalOut.ar(d);d!2};
//________________________
 // V1.1 Final version
 //________________________
play{a=LFNoise1.kr(0.7);b=a.range(4);c=Dust.ar(b);d=RLPF.ar(CombC.ar(c+LocalIn.ar()*b/2,4,b,b).clip,a.range(12000),b/8);LocalOut.ar(d);d!2};
//________________________
 // ALT VERSION
 //________________________
// V2 -- using LFNoise0 rather than LFNoise1
play{a=LFNoise0.kr(0.7);b=a.range(4);c=Dust.ar(b);d=RLPF.ar(CombC.ar(c+LocalIn.ar()*b/2,4,b,b).clip,a.range(12000),b/8);LocalOut.ar(d);d!2};

For more amazing tweets by those who do this sort of thing for fun (you know who you are), or to submit your own tweet, check out this link.

Thanks for reading, and keep on tweeting! (SC Code, that is!)