// ---------------------------------------------------------------------------- // BLACK HOLE BLACK STAR ( ~tf.stop; ~tf = fork{ loop{ TempoClock.default.tempo = 0.1.rand + 1 * 0.95; 1.wait;}}; fork { ~fxDelayWarp1.set(\wet, 0.2); ~fxJPverb1.set(\wet, 0.9); Pbindef(\dustyLadder, *[ instrument: \dustyPinkClip, legato:1, dur:4, amp: Pseg([0.01, 0.05, 0.01],[30],\lin, inf), density:50, out: Pseq([~fxDelayWarpBus1, ~fxJPverbBus1],inf) ]).play(quant:2); 30.wait; // piano Pbindef(\blackHole, *[ type: \midi, midicmd: \noteOn, midiout: m, chan: 1, amp: Ptuple([ Pwhite(0.6,0.9), Pwhite(0.6,0.9) ], inf) * Pseg([0.9, 0.6, 0.9], [0.1,59.9], \lin, inf), legato: Pwhite(0.8, 1) * Pseg([0.8, 1, 0.8], 30, \lin, inf), dur: Prand([1.5, 1, 0.5, 2, Pn(1/4,1), Pn(1/8,2)],inf) * 4, scale: Scale.minor, degree: Prand([[0,8],[0,9], 4, [6,3], [0,4,6]], inf), octave: Prand([4,5,[5,4]],inf) + Pdup(20, Pseq([0,1],inf)) - 1, mtranspose: Pdup(40, Pseq([0,5],inf)) ]).play(quant:1); // recorder Pbindef(\justRecPbind, *[ amp:0, dur: 4, rec: Pfunc({ arg ev; s.bind { SynthDef(\recBuf, { |bufnum = 0| RecordBuf.ar( SoundIn.ar([0,1]), bufnum, preLevel: 0, doneAction: Done.freeSelf, loop:0 ) }).play(s, [\bufnum, ~pBuf1], addAction: \addToTail); } }) ]).play(quant:1); 30.wait; // Pbindef(\dustyLadder).stop // buffer player/oscilator - play Ndef(\bufosc, { var snd, pos; pos = LFNoise1.kr(1/2!2).range(0, 4*48000); snd = BufRd.ar(2, ~pBuf1, Phasor.ar(0, -1 * BufRateScale.kr(~pBuf1) * LFNoise1.kr(1/10!2).range(0.99,1.01), 0+pos, 48000/8+pos), 1, 4 ); snd = LPF.ar(snd, LFNoise1.kr(1/10!2).exprange(500,10000)); snd = HPF.ar(snd, 100); snd = Greyhole.ar(snd, feedback: LFNoise1.kr(1/10).range(0.4,0.9)) * 2 + snd * 0.3; snd = Limiter.ar(snd, 0.9); snd * LFNoise1.kr(1/10).range(0.5,0.95); }); 1.wait; Ndef(\bufosc).fadeTime = 10; 1.wait; Ndef(\bufosc).play; 240.wait; // stop recording into a buffer Pbindef(\justRecPbind).stop; // stop the piano pattern Pbindef(\blackHole).stop; 60.wait; // fade out the buffer player Ndef(\bufosc).end(30); 40.wait; Pbindef(\dustyLadder).stop; }; )