mostly scd files added
							parent
							
								
									848c54d4bb
								
							
						
					
					
						commit
						05c095d54f
					
				|  | @ -0,0 +1 @@ | ||||||
|  | *.wav filter=lfs diff=lfs merge=lfs -text | ||||||
|  | @ -0,0 +1,95 @@ | ||||||
|  | fork { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	var libPath, smpPath; | ||||||
|  | 
 | ||||||
|  | 	// be nice, say hi. | ||||||
|  | 	post("\n\n\n\n\n"); | ||||||
|  | 	30.do({post("- ")}); | ||||||
|  | 	postln ("\nhello. this is algoforte 03 project."); | ||||||
|  | 	30.do({post("- ");0.05.wait;}); | ||||||
|  | 	post("\n"); | ||||||
|  | 
 | ||||||
|  | 	smpPath = PathName.new( | ||||||
|  | 		PathName.new(thisProcess.nowExecutingPath).pathOnly	+/+ "smp/"); | ||||||
|  | 
 | ||||||
|  | 	~granSmp = smpPath.files; | ||||||
|  | 	~granBfrList = List(); | ||||||
|  | 	~granBfr = List(); | ||||||
|  | 	Buffer.freeAll(s); | ||||||
|  | 
 | ||||||
|  | 	postln("\n--- recording buffers init ..."); | ||||||
|  | 	// buffer for recording | ||||||
|  | 	~pBuf1 = Buffer.alloc(s, s.sampleRate * 4, 2); | ||||||
|  | 	~pBufMono1 = Buffer.alloc(s, s.sampleRate * 4); | ||||||
|  | 
 | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	postln(" \n~~~ loading soundfiles ..." ); | ||||||
|  | 	~granSmp.do({ |item, i| | ||||||
|  | 		postln("   " + i + "" + item.folderName +/+ item.fileName); | ||||||
|  | 		~granBfrList.add(item.fileName); | ||||||
|  | 		~granBfr.add(Buffer.readChannel(s, item.fullPath, channels:[0])); | ||||||
|  | 		// [0] forces mono! | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	postln("\n--- loading libs ..."); | ||||||
|  | 	libPath = PathName.new( | ||||||
|  | 		PathName.new(thisProcess.nowExecutingPath).pathOnly	+/+ "lib/"); | ||||||
|  | 	libPath.filesDo({|afile| | ||||||
|  | 		// for each file in list, load/execute it | ||||||
|  | 		postln(">>> loading file: " + afile.folderName +/+ afile.fileName); | ||||||
|  | 		this.executeFile(afile.fullPath); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	postln("\n--- creating busses ..."); | ||||||
|  | 	~fxJPverbBus1.free; ~fxJPverbBus1 = Bus.audio(s, 2); | ||||||
|  | 	~fxGverbBus1.free; ~fxGverbBus1 = Bus.audio(s, 2); | ||||||
|  | 	~fxFeedDelayBus1.free; ~fxFeedDelayBus1 =  Bus.audio(s, 2); | ||||||
|  | 	~fxDelayWarpBus1.free; ~fxDelayWarpBus1 = Bus.audio(s, 2); | ||||||
|  | 
 | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	postln("\n--- loading effects ..."); | ||||||
|  | 
 | ||||||
|  | 	postln("\n--- please wait (FAILURE IN SERVER errors are ok here) ..."); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	0.5.wait; | ||||||
|  | 	~fxJPverb1.free; | ||||||
|  | 	~fxJPverb1 = Synth( \fxJPverb, | ||||||
|  | 		[\in, ~fxJPverbBus1, \wet, 3, \decay, 5], | ||||||
|  | 		addAction:\addToTail); | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	~fxGverb1.free; | ||||||
|  | 	~fxGverb1 = Synth( \fxGverb, | ||||||
|  | 		[\in, ~fxGverbBus1, \early, 0.1, \tail, 0.7, \decay, 10], | ||||||
|  | 		addAction:\addToTail); | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	~fxFeedDelay1.free; | ||||||
|  | 	~fxFeedDelay1 = Synth( \fxFeedDelay, | ||||||
|  | 		[\in, ~fxFeedDelayBus1, \feedback, 0.99, \time, 2], | ||||||
|  | 		addAction:\addToTail); | ||||||
|  | 
 | ||||||
|  | 	0.2.wait; | ||||||
|  | 
 | ||||||
|  | 	~fxDelayWarp1.free; | ||||||
|  | 	~fxDelayWarp1 = Synth( \fxDelayWarp, | ||||||
|  | 		[\in, ~fxDelayWarpBus1, \wet, 0.5], | ||||||
|  | 		addAction:\addToTail); | ||||||
|  | 
 | ||||||
|  | 	0.5.wait; | ||||||
|  | 
 | ||||||
|  | 	postln("\n--- done loading effects."); | ||||||
|  | 
 | ||||||
|  | 	30.do({post("- ");0.05.wait;}); | ||||||
|  | 
 | ||||||
|  | 	postln("\n~~~ readyForPlay.\n\n\n"); | ||||||
|  | 
 | ||||||
|  | }; | ||||||
|  | @ -0,0 +1,90 @@ | ||||||
|  | // ---------------------------------------------------------------------------- | ||||||
|  | // 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; | ||||||
|  | 
 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | ) | ||||||
|  | @ -0,0 +1,127 @@ | ||||||
|  | // ---------------------------------------------------------------------------- | ||||||
|  | // MELLOW PULSES | ||||||
|  | ( | ||||||
|  | ~tf.stop; ~tf = fork{ loop{ TempoClock.default.tempo = 0.09.rand + 0.95; 1.wait; }} ; | ||||||
|  | 
 | ||||||
|  | ~fxFeedDelay1.set(\feedback, 0.8); | ||||||
|  | ~fxJPverb1.set(\wet, 0.8); | ||||||
|  | 
 | ||||||
|  | // load Pbinds | ||||||
|  | ~mellow_pulses = Ppar([ | ||||||
|  | 
 | ||||||
|  | 	Pbind(*[ 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.76, 0.9], [0.1,59.9], \lin, inf), | ||||||
|  | 		legato: 1, | ||||||
|  | 		scale: Scale.minor, | ||||||
|  | 		dur: Pseq([5,6,4,7,3],inf), | ||||||
|  | 		degree:(0..7) * Pxrand((4..2), inf), | ||||||
|  | 		octave: Prand([[5,4,6],[4,5],[5,6],5],inf) - 1, | ||||||
|  | 		mtranspose: Prand([0,2,4],inf), | ||||||
|  | 		ctranspose: Plet(\ctrans, Pdup(8, Pseq([0, -5, 2, -3, 4, -1], 1) - 1)), | ||||||
|  | 	]), | ||||||
|  | 
 | ||||||
|  | 	Pbind(*[ instrument: \pulseTriSaw, | ||||||
|  | 		amp: Pseg([0.6, 0.9, 0.6], 60, \lin, inf) * 1, | ||||||
|  | 		legato: 0.1, | ||||||
|  | 		scale: Scale.minor(\pythagorean), | ||||||
|  | 		dur:1.5, | ||||||
|  | 		degree: 0, | ||||||
|  | 		octave: 6, | ||||||
|  | 		sawamp: Pseg([0,1,0],50,\lin,inf), | ||||||
|  | 		atk:0, | ||||||
|  | 		dec:0.2, | ||||||
|  | 		sus:0.3 * Pseg([0,1,0], 40, \sqr, inf), | ||||||
|  | 		rls:5, | ||||||
|  | 		lpf: Pseg([3,20,3],40,\sqr, inf), //Pwhite(3,20), | ||||||
|  | 		pan:Pwhite(-1,1), | ||||||
|  | 		out: ~fxJPverbBus1, | ||||||
|  | 		ctranspose: Pget(\ctrans, default:0, repeats: 8 * 6 * 1 * (5/1.5)) | ||||||
|  | 	]), | ||||||
|  | 
 | ||||||
|  | 	Pbind(*[ instrument: \softSaw, | ||||||
|  | 		scale: Scale.minor(\pythagorean), | ||||||
|  | 		dur:6, | ||||||
|  | 		attackTime: 3, | ||||||
|  | 		releaseTime: 3, | ||||||
|  | 		legato: 1.2, | ||||||
|  | 		degree: Pseq([0,3], inf) + [0,4], | ||||||
|  | 		octave: 3, | ||||||
|  | 		amp: 0.09 * Pseg([0,0,1,1,0],60,\sqr), | ||||||
|  | 		out: ~fxFeedDelayBus1, | ||||||
|  | 		ctranspose: Pget(\ctrans, default:0, repeats: 144) ]) | ||||||
|  | 
 | ||||||
|  | ]); | ||||||
|  | 
 | ||||||
|  | fork { | ||||||
|  | 
 | ||||||
|  | 	"--- start chords, pulses and deep soft Saw ... ".postln; | ||||||
|  | 	~mpulses = Plambda( ~mellow_pulses).play(quant:1); | ||||||
|  | 
 | ||||||
|  | 	120.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- start glitches ... ".postln; | ||||||
|  | 	Pbindef(\glitch2, *[ | ||||||
|  | 		instrument: \smpPlay, | ||||||
|  | 		bufnum: Pdup(1,Pxrand([ | ||||||
|  | 			~getSmp.("Loop_049"), ~getSmp.("Loop_048"), ~getSmp.("Loop_050"), | ||||||
|  | 			~getSmp.("Loop_053"), ~getSmp.("Loop_052"), ~getSmp.("Loop_047") | ||||||
|  | 		],inf)), | ||||||
|  | 
 | ||||||
|  | 		legato:Pwhite(0,0.2), | ||||||
|  | 		spos: Pwhite(0.1,2.5), | ||||||
|  | 		dur:Pn(6, 20), | ||||||
|  | 		pan:Pwhite(-1.0,1.0), | ||||||
|  | 		amp:0.08, | ||||||
|  | 		out: 0, // ~fxFeedDelayBus1, | ||||||
|  | 		lpffreq: 14000, hpffreq: 500, | ||||||
|  | 	] | ||||||
|  | 	).play(quant:2); | ||||||
|  | 
 | ||||||
|  | 	120.wait; | ||||||
|  | 
 | ||||||
|  | 	"end. ".postln; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ( | ||||||
|  | 	Pbind(*[ instrument: \pulseTriSaw, | ||||||
|  | 		amp: Pseg([0.6, 0.9, 0.6], 60, \lin, inf) * 1, | ||||||
|  | 		legato: 0.1, | ||||||
|  | 		scale: Scale.minor(\pythagorean), | ||||||
|  | 		dur:1.5, | ||||||
|  | 		degree: 0, | ||||||
|  | 		octave: 6, | ||||||
|  | 		sawamp: Pseg([0,1,0],50,\lin,inf), | ||||||
|  | 		atk:0, | ||||||
|  | 		dec:0.2, | ||||||
|  | 		sus:0.3 * Pseg([0,1,0], 40, \sqr, inf), | ||||||
|  | 		rls:5, | ||||||
|  | 		lpf: Pseg([3,20,3],40,\sqr, inf), //Pwhite(3,20), | ||||||
|  | 		pan:Pwhite(-1,1), | ||||||
|  | 		out: ~fxJPverbBus1, | ||||||
|  | 		//		ctranspose: Pget(\ctrans, default:0, repeats: 8 * 6 * 1 * (5/1.5)) | ||||||
|  | 	]).stop | ||||||
|  | ) | ||||||
|  | @ -0,0 +1,235 @@ | ||||||
|  | // ---------------------------------------------------------------------------- | ||||||
|  | // SINODA LULLABY | ||||||
|  | 
 | ||||||
|  | ( | ||||||
|  | ~tf.stop; ~tf = fork { loop { TempoClock.default.tempo = 0.15.rand + 1; 1.wait; }}; | ||||||
|  | 
 | ||||||
|  | ~fxFeedDelay1.set(\feedback, 0.7); | ||||||
|  | ~fxFeedDelay1.set(\amount, 0.6); | ||||||
|  | 
 | ||||||
|  | fork { | ||||||
|  | 
 | ||||||
|  | 	">>> routine start...".postln; | ||||||
|  | 
 | ||||||
|  | 	"--- triSinSquare bliss...".postln; | ||||||
|  | 	Pbindef(\sinoL, *[ | ||||||
|  | 		instrument: \triSinSquare, | ||||||
|  | 		dur: Pseq([1, 1/2, 1/2, 1/4, 1/4, 1/2, Pn(1/3,3)], inf) , | ||||||
|  | 		scale: Scale.minor(\just), | ||||||
|  | 		legato: 0.01, | ||||||
|  | 		rls:4, | ||||||
|  | 		dec: 0.01, | ||||||
|  | 		atk:0.001, | ||||||
|  | 		sus:0.1, | ||||||
|  | 		sqamp: Pwhite(0,1), | ||||||
|  | 		pan:Pwhite(-1,1, inf), | ||||||
|  | 		octave:[4,5], | ||||||
|  | 		degree: Pseq([0,3,4,8],inf), | ||||||
|  | 		amp: 0.3 * Pseq([ | ||||||
|  | 			Pseg([0,1],36,\sqr), | ||||||
|  | 			Pseg([1,0.7,1],24,\sqr,inf) | ||||||
|  | 		]), | ||||||
|  | 		mtranspose: Pdup(8,Pseq([3,0,4,-2],inf)) + [0,3], | ||||||
|  | 		lpf: Pseg([1,7,1],18,\exp,inf), //Pexprand(1, 10,inf) | ||||||
|  | 		ctranspose: 0, | ||||||
|  | 		outBus: ~fxFeedDelayBus1 | ||||||
|  | 	]).play(quant:3); | ||||||
|  | 
 | ||||||
|  | 	60.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- chords each 3 beats".postln; | ||||||
|  | 	Pbindef(\sinoLpiano, *[ type: \midi, midicmd: \noteOn, midiout: m, chan: 1, | ||||||
|  | 		scale: Scale.minor, | ||||||
|  | 		legato: 2, //Pwhite(0.5, 1) * Pseg([0.5, 2, 0.5], 30, \lin, inf), | ||||||
|  | 		amp: Ptuple([ Pwhite(0.6,0.9), Pwhite(0.6,0.9), Pwhite(0.6,0.9) ], inf) | ||||||
|  | 		* Pseg([0.5, 0.8, 0.6], 50, \lin, inf), | ||||||
|  | 		dur: 3, | ||||||
|  | 		degree: Pseq([[0,2,4],[0,8,4,3],Prand([[0,2,4],[0,8,4,3]])],inf), | ||||||
|  | 		octave: [6,5,4,7]-1, | ||||||
|  | 		mtranspose: Pdup(4, Pseq([3, 3, 0, 4],inf)), | ||||||
|  | 		ctranspose: 0 | ||||||
|  | 	]).play(quant:3); | ||||||
|  | 
 | ||||||
|  | 	36.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- dominant each 1.5 beats".postln; | ||||||
|  | 	Pbindef(\sinoLpianoS, *[ type: \midi, midicmd: \noteOn, midiout: m, chan: 1, | ||||||
|  | 		scale: Scale.minor, | ||||||
|  | 		legato: 2, | ||||||
|  | 		amp: Pwhite(0.6,0.9) * Pseg([0.5, 0.8, 0.4], 30, \lin, inf), | ||||||
|  | 		dur: 1.5, | ||||||
|  | 		// degree: [0,2,4,8,9,11,13,15], | ||||||
|  | 		degree: 0, | ||||||
|  | 		octave: Prand([5,6,7],inf), | ||||||
|  | 		ctranspose: 0 | ||||||
|  | 	]).play(quant:3); | ||||||
|  | 
 | ||||||
|  | 	"--- recording, granulating...".postln; | ||||||
|  | 	~recBmono = Synth(\recBufMono, [\bufnum, ~pBufMono1, \loop, 1], addAction: \addToTail); | ||||||
|  | 	~mpulseGran = Synth(\gran, [\out, ~fxJPverbBus1, \buffer, ~pBufMono1, \atk, 30, \amp, 0.1]); | ||||||
|  | 
 | ||||||
|  | 	72.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- stopping...".postln; | ||||||
|  | 	Pbindef(\sinoL).stop; | ||||||
|  | 	Pbindef(\sinoLpiano).stop; | ||||||
|  | 	Pbindef(\sinoLpianoS).stop; | ||||||
|  | 	~mpulseGran.release(6); | ||||||
|  | 
 | ||||||
|  | 	3.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- ctranspose: -5.".postln; | ||||||
|  | 	~ctranspose = -5; // 0, 5, -2, 3, -4, 1, -6, -1, 4, -3 ? | ||||||
|  | 	Pbindef(\sinoL, *[ ctranspose: ~ctranspose,	amp: 0.2 * Pseg([0,0,1],36,\sqr) ] ).play(quant:3); | ||||||
|  | 	Pbindef(\sinoLpiano, *[ ctranspose: ~ctranspose ]).play(quant:3); | ||||||
|  | 	Pbindef(\sinoLpianoS, *[ ctranspose: ~ctranspose ]).play(quant:3); | ||||||
|  | 
 | ||||||
|  | 	3.wait; | ||||||
|  | 
 | ||||||
|  | 	~mpulseGran = Synth(\gran, [\out, ~fxJPverbBus1, \buffer, ~pBufMono1, \atk, 30, \amp, 0.1]); | ||||||
|  | 
 | ||||||
|  | 	69.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- stopping...".postln; | ||||||
|  | 	Pbindef(\sinoL).stop; | ||||||
|  | 	Pbindef(\sinoLpiano).stop; | ||||||
|  | 	Pbindef(\sinoLpianoS).stop; | ||||||
|  | 	~mpulseGran.release(6); | ||||||
|  | 
 | ||||||
|  | 	3.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- ctranspose: 2".postln; | ||||||
|  | 	~ctranspose = 2; // 0, 5, -2, 3, -4, 1, -6, -1, 4, -3 ? | ||||||
|  | 	Pbindef(\sinoL, *[ ctranspose: ~ctranspose,	amp: 0.2 * Pseg([0,0,1],36,\sqr) ] ).play(quant:3); | ||||||
|  | 	Pbindef(\sinoLpiano, *[ ctranspose: ~ctranspose ]).play(quant:3); | ||||||
|  | 	Pbindef(\sinoLpianoS, *[ ctranspose: ~ctranspose ]).play(quant:3); | ||||||
|  | 
 | ||||||
|  | 	3.wait; | ||||||
|  | 
 | ||||||
|  | 	~mpulseGran = Synth(\gran, [\out, ~fxJPverbBus1, \buffer, ~pBufMono1, \atk, 30, \amp, 0.15]); | ||||||
|  | 
 | ||||||
|  | 	69.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- stopping...".postln; | ||||||
|  | 	Pbindef(\sinoL).stop; | ||||||
|  | 	Pbindef(\sinoLpiano).stop; | ||||||
|  | 	Pbindef(\sinoLpianoS).stop; | ||||||
|  | 	~mpulseGran.release(6); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 	3.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- ctranspose: -3.".postln; | ||||||
|  | 	~ctranspose = -3; // 0, 5, -2, 3, -4, 1, -6, -1, 4, -3 ? | ||||||
|  | 	Pbindef(\sinoL, *[ ctranspose: ~ctranspose,	amp: 0.3 * Pseg([0,1,1], 72, \sqr) ] ).play(quant:3); | ||||||
|  | 	Pbindef(\sinoLpiano, *[ ctranspose: ~ctranspose ]).play(quant:3); | ||||||
|  | 	Pbindef(\sinoLpianoS, *[ ctranspose: ~ctranspose ]).play(quant:3); | ||||||
|  | 
 | ||||||
|  | 	3.wait; | ||||||
|  | 
 | ||||||
|  | 	~mpulseGran = Synth(\gran, [\out, ~fxJPverbBus1, \buffer, ~pBufMono1, \atk, 30, \amp, 0.2]); | ||||||
|  | 
 | ||||||
|  | 	69.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- fade sinoL... ".postln; | ||||||
|  | 	Pbindef(\sinoL, *[amp: Pseg([0.4,0], 30, \sqr)]); | ||||||
|  | 
 | ||||||
|  | 	73.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- stop piano and recording ...".postln; | ||||||
|  | 	~recBmono.free; | ||||||
|  | 	Pbindef(\sinoLpiano).stop; | ||||||
|  | 	Pbindef(\sinoLpianoS).stop; | ||||||
|  | 
 | ||||||
|  | 	36.wait; | ||||||
|  | 
 | ||||||
|  | 	"--- release granulator.".postln; | ||||||
|  | 	~mpulseGran.release(24); | ||||||
|  | 
 | ||||||
|  | 	24.wait; | ||||||
|  | 
 | ||||||
|  | 	">>> routine end".postln; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | ////////////////////////////////////////////////////////////////////////////// | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ( | ||||||
|  | ( (0..11) * 7 ).mod(12)-12.postln; | ||||||
|  | 
 | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | ( | ||||||
|  | 	Pbindef(\sinoL).stop; | ||||||
|  | 	Pbindef(\sinoLpiano).stop; | ||||||
|  | 	Pbindef(\sinoLpianoS).stop; | ||||||
|  | 
 | ||||||
|  | 6.wait; | ||||||
|  | 
 | ||||||
|  | 	Pbindef(\sinoL).stop; | ||||||
|  | 	Pbindef(\sinoLpiano).stop; | ||||||
|  | 	Pbindef(\sinoLpianoS).stop; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ( | ||||||
|  | ~ctranspose = 3; // 0, 5, -2, 3, -4, 1, -6, -1, 4, -3 ? | ||||||
|  | Pbindef(\sinoL, *[ ctranspose: ~ctranspose ]); | ||||||
|  | Pbindef(\sinoLpiano, *[ ctranspose: ~ctranspose ]); | ||||||
|  | Pbindef(\sinoLpianoS, *[ ctranspose: ~ctranspose ]); | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ~ctranspose = 0; // 0, 5, -2, 3, -4, 1, -6, -1, 4, -3 ? | ||||||
|  | Pbindef(\sinoL, *[ ctranspose: ~ctranspose ]); | ||||||
|  | Pbindef(\sinoLpiano, *[ ctranspose: ~ctranspose ]); | ||||||
|  | Pbindef(\sinoLpianoS, *[ ctranspose: ~ctranspose ]); | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // record // loop? | ||||||
|  | 
 | ||||||
|  | // granulate | ||||||
|  | ~mpulseGran = Synth(\gran, [\out, ~fxJPverbBus1, \buffer, ~pBufMono1, \atk, 30, \amp, 0.2]); | ||||||
|  | ~mpulseGran.set(\amp, 0.3) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ( | ||||||
|  | ~ctranspose = 0; // 0, 5, -2, 3, -4, 1, -6, -1, 4, -3, 2, -5, 0? | ||||||
|  | Pbindef(\sinoL, *[ ctranspose: ~ctranspose ]); | ||||||
|  | Pbindef(\sinoLpiano, *[ ctranspose: ~ctranspose ]); | ||||||
|  | Pbindef(\sinoLpianoS, *[ ctranspose: ~ctranspose ]); | ||||||
|  | //Synth(\recBufMono, [\bufnum, ~pBufMono1], addAction: \addToTail); | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | Pbindef(\sinoL).stop | ||||||
|  | ( | ||||||
|  | Pbindef(\sinoL).clear; | ||||||
|  | Pbindef(\sinoLpiano).clear; | ||||||
|  | Pbindef(\sinoLpianoS).clear; | ||||||
|  | ) | ||||||
|  | Pbindef(\sinoL, *[amp: Pseg([0.4,0],30, \sqr)]) | ||||||
|  | 
 | ||||||
|  | m.control(1, ctlNum: 64, val: 127) | ||||||
|  | ~mpulseGran.release(10) | ||||||
|  | Pbindef(\sinoLpianoS).stop | ||||||
|  | Pbindef(\sinoLpianoS).clear | ||||||
|  | m.control(1, ctlNum: 64, val: 0) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ///////////////////////////////////////////////////////// | ||||||
|  | ~mpulseGran.free | ||||||
|  | ~pBufMono1.plot | ||||||
|  | 
 | ||||||
|  | // STOP | ||||||
|  | */ | ||||||
|  | @ -0,0 +1,6 @@ | ||||||
|  | // function to partially match filename for buffers | ||||||
|  | ~getSmp = { |regexp| | ||||||
|  |     ~granBfr.detect { |buf| | ||||||
|  |         regexp.matchRegexp(buf.path) | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | @ -0,0 +1,463 @@ | ||||||
|  | // ----------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | // recorders | ||||||
|  | 
 | ||||||
|  | SynthDef(\recBufMono, { | ||||||
|  | 	arg bufnum = 0, loop = 0, in=0; | ||||||
|  | 
 | ||||||
|  | 	RecordBuf.ar( SoundIn.ar(in), | ||||||
|  | 		bufnum, doneAction: Done.freeSelf, loop: loop); | ||||||
|  | }).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\recBufStereo, { | ||||||
|  | 	arg bufnum = 0, loop = 0; | ||||||
|  | 
 | ||||||
|  | 	RecordBuf.ar( SoundIn.ar([0,1]), | ||||||
|  | 		bufnum, doneAction: Done.freeSelf, loop: loop); | ||||||
|  | }).add; | ||||||
|  | 
 | ||||||
|  | // ex: | ||||||
|  | // Synth(\recBufMono, [\bufnum, ~pBufMono1], addAction: \addToTail); | ||||||
|  | // Synth(\recBufStereo, [\bufnum, ~pBuf1], addAction: \addToTail); | ||||||
|  | 
 | ||||||
|  | // sound generators and players // | ||||||
|  | 
 | ||||||
|  | SynthDef("gran", | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, buffer = 0, amp = 1, gate = 1, atk = 10, rls = 10; | ||||||
|  | 		var snd = GrainBuf.ar(2, | ||||||
|  | 			trigger: Impulse.ar(LFNoise1.kr(1/10!3).exprange(80, 180) | ||||||
|  | 				* LFNoise0.ar(100).range(0.7,1.1)), | ||||||
|  | 			dur: LFNoise1.ar(1).range(0.08,0.1), | ||||||
|  | 			//sndbuf: ~pBufMono1, | ||||||
|  | 			sndbuf: buffer, | ||||||
|  | 			//rate:[1,1/2,1/4], | ||||||
|  | 			rate:[1,1/2,1/4,2], | ||||||
|  | 			pos:LFNoise1.kr(1/20!3).range(0,1), | ||||||
|  | 			pan: LFNoise0.ar(100).range(-1,1) | ||||||
|  | 		); | ||||||
|  | 		snd = LPF.ar(snd, LFNoise1.kr(1/10!3).exprange(500,10000)); | ||||||
|  | 		snd = Splay.ar(snd); | ||||||
|  | 		snd = Limiter.ar(snd, 0.8); | ||||||
|  | 		snd = snd * LFPulse.kr(8).range(LFNoise1.kr(1/5).range(0.3,1),1); | ||||||
|  | 		snd = snd * EnvGen.ar(Env.asr( atk, 1, rls, \sqr ), gate, doneAction: Done.freeSelf); | ||||||
|  | 		snd = snd * Lag3.kr(amp, 10); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef("smpPlay", | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, gate = 1, amp = 0.6, pan = 0, rls = 0.01, | ||||||
|  | 	    bufnum = 0, rate = 1, spos = 0, lpffreq=18000, hpffreq=20; | ||||||
|  | 		var snd, env; | ||||||
|  | 
 | ||||||
|  | 		env = EnvGen.ar(Env.cutoff(rls), gate, doneAction: Done.freeSelf); | ||||||
|  | 		snd = PlayBuf.ar(1, bufnum, rate, gate, spos * SampleRate.ir ); | ||||||
|  | 		snd = LPF.ar(snd, lpffreq); | ||||||
|  | 		snd = HPF.ar(snd, hpffreq); | ||||||
|  | 		snd = Pan2.ar(snd, pan); | ||||||
|  | 		Out.ar(out, snd * amp); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | // darksaw // ------------------------------------------------------ | ||||||
|  | // "--- dark saw synthdef...".postln; | ||||||
|  | SynthDef(\softSaw, | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, freq = 40, oscdetune = 0.1, amp = 1, pan = 0, | ||||||
|  | 		gate = 1, attackTime = 0.1, susLevel = 1.0, releaseTime = 1.0, gainBus; | ||||||
|  | 		var env, snd; | ||||||
|  | 		oscdetune = oscdetune * 0.1; | ||||||
|  | 		amp = amp * 0.4; | ||||||
|  | 
 | ||||||
|  | 		env = Linen.kr(gate, attackTime, susLevel, releaseTime, doneAction:2); | ||||||
|  | 
 | ||||||
|  | 		snd = VarSaw.ar( | ||||||
|  | 			freq: [freq, freq * (1.003 + oscdetune)], | ||||||
|  | 			width: SinOsc.kr(0.01,0.2).range(0.05,0.095)); | ||||||
|  | 		snd = snd + VarSaw.ar( | ||||||
|  | 			freq: [(freq*2 * (1.001 - oscdetune)),(freq*2 * (1 + oscdetune))], | ||||||
|  | 			width: SinOsc.kr(0.06,0.8).range(0.2,0.8)); | ||||||
|  | 		snd = Balance2.ar(snd.at(0), snd.at(1), pos: pan); | ||||||
|  | 		snd = snd * amp * env ; | ||||||
|  | 		OffsetOut.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\akjPad, | ||||||
|  | 	{ | ||||||
|  | 		arg freq=300, amp=0.1, out=0, gate=1, atk=2, rls=2; | ||||||
|  | 		var snd, env, cutoff; | ||||||
|  | 
 | ||||||
|  | 		cutoff = freq * 5; | ||||||
|  | 		freq = [freq,freq*1.01]; | ||||||
|  | 		freq = freq * SinOsc.kr([4.333,8], mul:0.005, add:1); | ||||||
|  | 		snd = LFPar.ar(freq) * 0.3 | ||||||
|  | 		+ (LFTri.ar(freq, mul:0.3)) | ||||||
|  | 		+ (Pulse.ar(freq, mul:2)) | ||||||
|  | 		+ (SinOsc.ar(freq, mul:4).clip2(0.3)); | ||||||
|  | 		snd = snd.clip2(0.9); | ||||||
|  | 		snd = snd * LFPulse.kr(LFNoise1.kr(1/8).range(2,20)).range(0.6,1); | ||||||
|  | 		snd = snd * LFPulse.kr(LFNoise0.kr(1/8).range(2,20)).range(0.6,1); | ||||||
|  | 		snd = RLPF.ar( snd, | ||||||
|  | 			freq: cutoff * SinOsc.ar([0.3,0.4]).range(0.8,1.2), | ||||||
|  | 			rq: SinOsc.ar([0.4,0.3]).range(0.5,0.2) ); | ||||||
|  | 		snd = snd + CombC.ar(snd, | ||||||
|  | 			delaytime: SinOsc.kr(1/25, [0, pi/2]).range(0.1,0.2), | ||||||
|  | 			mul:0.6); | ||||||
|  | 		env = EnvGen.kr( Env([0,1,0], [atk, rls], \cub, 1 ), gate, doneAction:2); | ||||||
|  | 		snd = Splay.ar(snd); | ||||||
|  | 		snd = snd * env * amp; | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // a pretty good synth, once reworked. | ||||||
|  | // upgraded from SCLOrkSynths/.../SynthDefs/pads/sawSynth.scd | ||||||
|  | SynthDef("sawSquareSynth", | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, freq = 200, amp = 0.1, | ||||||
|  | 		att = 0.1, rel = 2, gate = 1, pan = 0, | ||||||
|  | 		cutoff = 1, ssratio = 0.5; | ||||||
|  | 		var env, snd, loff, hiff; | ||||||
|  | 
 | ||||||
|  | 		cutoff = (freq * cutoff).max(40).min(20000); | ||||||
|  | 		env = EnvGen.kr(Env.asr( | ||||||
|  | 			attackTime: att, | ||||||
|  | 			sustainLevel: amp, | ||||||
|  | 			releaseTime: rel), gate, doneAction: 2); | ||||||
|  | 		snd = Saw.ar(freq: freq * [0.99, 1, 1.001, 1.008], mul: env * ssratio); | ||||||
|  | 		snd = snd + Pulse.ar(freq: freq * [1, 0.985, 1.007, 1.002], mul: env * (ssratio.neg + 1)); | ||||||
|  | 		snd = LPF.ar( | ||||||
|  | 			in: snd, | ||||||
|  | 			freq: cutoff ); | ||||||
|  | 		snd = Mix.ar(snd) * 0.2; | ||||||
|  | 		snd = Pan2.ar(snd, pan); | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	}).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\padVib, | ||||||
|  | 	{ | ||||||
|  | 		arg | ||||||
|  | 		//Standard Values: | ||||||
|  | 		out = 0, pan = 0, freq = 400, amp = 0.5, att = 0.4, dec = 0.5, sus = 0.8, rel = 1.0, gate = 1, | ||||||
|  | 		//Other Controls: | ||||||
|  | 		vibratoRate = 4, vibratoDepth = 0.01, tremoloRate = 8, | ||||||
|  | 		//These controls go from 0 to 1: | ||||||
|  | 		tremoloDepth = 0.5, reverbMix = 0.5, roomSize = 1, damp = 0.5; | ||||||
|  | 
 | ||||||
|  | 		var env, snd, vibrato, tremolo, mod2, mod3; | ||||||
|  | 
 | ||||||
|  | 		env = Env.adsr(att, dec, sus, rel).kr(gate: gate); | ||||||
|  | 		vibrato = SinOsc.kr(vibratoRate).range(freq * (1 - vibratoDepth), freq * (1 + vibratoDepth)); | ||||||
|  | 		tremolo = LFNoise2.kr(1).range(0.2, 1) * SinOsc.kr(tremoloRate).range((1 - tremoloDepth), 1); | ||||||
|  | 
 | ||||||
|  | 		snd = SinOsc.ar(freq: [freq, vibrato], mul:(env * tremolo * amp)).distort; | ||||||
|  | 		snd = Mix.ar([snd]); | ||||||
|  | 		//snd = FreeVerb.ar(snd, reverbMix, roomSize, damp); | ||||||
|  | 
 | ||||||
|  | 		DetectSilence.ar(snd, 0.0001, 0.2, doneAction: 2); | ||||||
|  | 		Out.ar(out, Pan2.ar(snd, pan)); | ||||||
|  | 	}, | ||||||
|  | 	metadata:( | ||||||
|  | 		credit: "Mike Hairston", | ||||||
|  | 		tags: [\pad, \vibrato, \sustained] | ||||||
|  | 	) | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\fm5, | ||||||
|  | 	{ | ||||||
|  | 		arg f=10, i=0.1, gate=1, freq=120, amp=0.1, out=0, | ||||||
|  | 		atk=0.01, dec=0.1, sus=0.5, rls=5; | ||||||
|  | 		var c, m, d, snd; | ||||||
|  | 
 | ||||||
|  | 		c = freq; | ||||||
|  | 		m = c * f; | ||||||
|  | 		d = m / i; | ||||||
|  | 		snd = SinOsc.ar( c + SinOsc.ar(m, mul: d) ); | ||||||
|  | 		snd = LPF.ar(snd, 18000); | ||||||
|  | 		snd = snd * EnvGen.ar(Env.adsr(atk, dec, sus, rls, curve:-10), gate, doneAction:2); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd!2 * amp * 3); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\pulseTriSaw, | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, freq=440, gate=1, amp=0.1, pan = 0, sawamp = 0.1, | ||||||
|  | 		atk = 0.01, dec = 0.1, sus = 0.5, rls = 0.3, lpf=1 ; | ||||||
|  | 		var snd; | ||||||
|  | 
 | ||||||
|  | 		freq = freq * SinOsc.kr(4).range(0.998,1.002); | ||||||
|  | 		snd = Pulse.ar(freq) + LFTri.ar(freq / Rand(1.99,2.01)) | ||||||
|  | 		+ Saw.ar(freq * Rand(1.99,2.01), mul:sawamp); | ||||||
|  | 		lpf = (freq * lpf).min(20000).max(40); | ||||||
|  | 		snd = LPF.ar(snd, lpf); | ||||||
|  | 		snd = [snd, DelayN.ar(snd, 0.1, 0.009)]; | ||||||
|  | 		snd = snd * EnvGen.kr(Env.adsr(atk, dec, sus, rls), gate, doneAction:Done.freeSelf); | ||||||
|  | 		snd = snd * amp * 0.1; | ||||||
|  | 		snd = Balance2.ar(snd[0], snd[1], pan); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\triSinSquare, | ||||||
|  | 	{ | ||||||
|  | 		arg outBus = 0, freq=440, gate=1, amp=0.1, pan = 0, | ||||||
|  | 		atk = 0.01, dec = 0.1, sus = 0.5, rls = 0.3, | ||||||
|  | 		sqamp = 0.1, lpf=1 ; | ||||||
|  | 		var snd; | ||||||
|  | 
 | ||||||
|  | 		freq = freq * SinOsc.kr(4).range(0.998,1.001); | ||||||
|  | 		snd = LFTri.ar(freq) | ||||||
|  | 		+ SinOsc.ar(freq * Rand(1.99,2.01)) | ||||||
|  | 		+ Pulse.ar(freq / Rand(1.99,2.01), mul:sqamp); | ||||||
|  | 		lpf = (freq * lpf).min(20000).max(40); | ||||||
|  | 		snd = LPF.ar(snd, lpf); | ||||||
|  | 		snd = [snd, DelayN.ar(snd, 0.1, 0.001)]; | ||||||
|  | 		snd = snd * EnvGen.kr( | ||||||
|  | 			Env.adsr(atk, dec, sus, rls), | ||||||
|  | 			gate, doneAction:Done.freeSelf); | ||||||
|  | 		snd = snd * amp * 0.5; | ||||||
|  | 		snd = Balance2.ar(snd[0], snd[1], pan); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(outBus, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\akjBaz, | ||||||
|  | 	{ | ||||||
|  | 		arg freq=300, amp=0.1, out=0, gate=1, | ||||||
|  | 		rls=0.01, atk=0.01, cutoff=10, rq=0.5; | ||||||
|  | 		var snd, env; | ||||||
|  | 
 | ||||||
|  | 		snd = SinOsc.ar(freq, [0, pi/2.5], mul:0.7); | ||||||
|  | 		snd = snd * Lag.ar(LFPulse.ar(freq/2.005, 0.5).range(1,0),0.005); | ||||||
|  | 		snd = snd.softclip(0.5) * 1.5 ; | ||||||
|  | 		snd = RLPF.ar(snd, cutoff * freq, rq ); | ||||||
|  | 		env = Linen.kr(gate, atk, amp, rls, 2); | ||||||
|  | 		snd = snd * env; | ||||||
|  | 		Splay.ar(snd); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\akjClick, | ||||||
|  | 	{ | ||||||
|  | 		arg out=0, gate=1, freq=440, amp=0.1, releaseTime=0.1; | ||||||
|  | 		var snd, env; | ||||||
|  | 
 | ||||||
|  | 		snd = LFPulse.ar([freq, freq * 2], width: LFNoise1.ar(0.1).exprange(0.001,0.004)); | ||||||
|  | 		snd = snd + (WhiteNoise.ar(1) * snd); | ||||||
|  | 		snd = HPF.ar(snd, 200); | ||||||
|  | 		env = EnvGen.ar(Env.perc(0,releaseTime)); | ||||||
|  | 		snd = snd * env * amp * Linen.kr(gate, 0, 1, releaseTime, 2); | ||||||
|  | 		snd = Splay.ar(snd); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef(\dusty, | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, amp = 0.1, gate = 1, pan = 0, | ||||||
|  | 		atk = 0.1, rls = 0.1, density =  10; | ||||||
|  | 		var snd, env; | ||||||
|  | 
 | ||||||
|  | 		snd = Dust2.ar(density); | ||||||
|  | 		env = EnvGen.ar(Env.asr(atk, amp, rls), gate, doneAction:2); | ||||||
|  | 		snd = Pan2.ar(snd * env, pan); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | SynthDef( \dustyPinkClip, | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, amp = 0.7, gate = 1, pan = 0, | ||||||
|  | 		atk = 0.1, rls = 0.1, | ||||||
|  | 		density = 10, maxrls = 0.2; | ||||||
|  | 		var dust, env, snd; | ||||||
|  | 
 | ||||||
|  | 		dust = Dust2.ar(density); | ||||||
|  | 		env = EnvGen.ar(Env.asr(atk, amp, rls), gate, doneAction:2); | ||||||
|  | 		snd = PinkNoise.ar + ClipNoise.ar(0.3); | ||||||
|  | 		snd = snd * EnvGen.ar( | ||||||
|  | 			Env.perc(0, LFNoise0.kr(10).exprange(0.0001, 0.2)), dust); | ||||||
|  | 		snd = HPF.ar(snd, LFNoise0.kr(10!2).exprange(100,500)); | ||||||
|  | 		snd = LPF.ar(snd, LFNoise0.kr(10!2).exprange(500,15000)); | ||||||
|  | 		snd = Pan2.ar(snd[0], LFNoise0.kr(5).range(-1,1)) | ||||||
|  | 		+ Pan2.ar(snd[1], LFNoise0.kr(5).range(-1,1)); | ||||||
|  | 		snd = Balance2.ar(snd[0], snd[1], pan); | ||||||
|  | 		snd = snd * env; | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | SynthDef(\clipyPerc, | ||||||
|  | 	{ | ||||||
|  | 		arg out = 0, amp = 0.7, gate = 1, pan = 0, | ||||||
|  | 		hpf = 40, lpf = 18000, | ||||||
|  | 		atk = 0, rls = 0.1; | ||||||
|  | 		var snd, env; | ||||||
|  | 
 | ||||||
|  | 		hpf = hpf.max(40); | ||||||
|  | 		lpf = lpf.min(20000); | ||||||
|  | 
 | ||||||
|  | 		env = EnvGen.ar(Env.linen(0, rls, 0, amp, -4), gate); | ||||||
|  | 		snd = ClipNoise.ar(0.5) + WhiteNoise.ar(0.5); | ||||||
|  | 		snd = HPF.ar(snd, hpf); | ||||||
|  | 		snd = LPF.ar(snd, lpf); | ||||||
|  | 		snd = Pan2.ar(snd * env, pan); | ||||||
|  | 
 | ||||||
|  | 		Linen.kr(gate,0,1,0,2); // kill | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // ----------------------------------------------------------------------- | ||||||
|  | // FX synthdefs // | ||||||
|  | 
 | ||||||
|  | // reverb synthdef | ||||||
|  | SynthDef(\fxGverb, | ||||||
|  | 	{ | ||||||
|  | 		arg in, out = 0, amp = 1, | ||||||
|  | 		dry = 1, early = 0.1, tail = 0.7, room = 100, decay = 3; | ||||||
|  | 		var snd, rev; | ||||||
|  | 
 | ||||||
|  | 		snd = In.ar(in, 2); | ||||||
|  | 		snd = HPF.ar(snd, 100); | ||||||
|  | 		rev = GVerb.ar(snd, room,  decay, | ||||||
|  | 			drylevel: dry, earlyreflevel: early, taillevel: tail); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, rev * amp); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // reverb synthdef | ||||||
|  | SynthDef(\fxJPverb, | ||||||
|  | 	{ | ||||||
|  | 		arg in, out = 0, wet = 0.5, decay = 3, size = 1; | ||||||
|  | 		var snd, rev; | ||||||
|  | 
 | ||||||
|  | 		snd = In.ar(in, 2); | ||||||
|  | 		snd = HPF.ar(snd, 100); | ||||||
|  | 		//rev = Greyhole.ar(snd, size: size, feedback: feedback) ; | ||||||
|  | 		rev = JPverb.ar(snd, decay, size: size) ; | ||||||
|  | 		rev = rev * wet; | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, snd + rev); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // feedback delay w/ bandpass filter + stereo rotation | ||||||
|  | SynthDef(\fxFeedDelay, | ||||||
|  | 	{ | ||||||
|  | 		arg in, out = 0, feedback = 0.9, time = 1, amount = 0.5; | ||||||
|  | 		var snd, input, local; | ||||||
|  | 
 | ||||||
|  | 		time = time * {Rand(0.5,1.0)}.dup; | ||||||
|  | 		time = time.min(2).max(0.01); | ||||||
|  | 
 | ||||||
|  | 		input = In.ar(in,2); | ||||||
|  | 
 | ||||||
|  | 		local = LocalIn.ar(2) * feedback; | ||||||
|  | 
 | ||||||
|  | 		local = BPF.ar(local, LFNoise1.kr(0.6).range(450,2000), LFNoise1.kr(0.1).range(0.8,1)); | ||||||
|  | 		local = Rotate2.ar(local[0], local[1], 0.23); | ||||||
|  | 
 | ||||||
|  | 		local = AllpassN.ar(local, 1, time, 2); | ||||||
|  | 		//local = DelayN.ar(local, 0.3, [0.26,0.19]); | ||||||
|  | 		//local = AllpassN.ar(local, 0.05, {Rand(0.03,0.15)}.dup, 2); | ||||||
|  | 
 | ||||||
|  | 		local = LeakDC.ar(local); | ||||||
|  | 
 | ||||||
|  | 		local = local + input; | ||||||
|  | 		LocalOut.ar(local); | ||||||
|  | 
 | ||||||
|  | 		Out.ar(out, local * amount + input); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | // delay wrangler | ||||||
|  | SynthDef(\fxDelayWarp, | ||||||
|  | 	{ | ||||||
|  | 		arg out=0, in, wet=0.1; | ||||||
|  | 		var snd, dly2; | ||||||
|  | 
 | ||||||
|  | 		snd = In.ar(in, 2); | ||||||
|  | 		dly2 = CombN.ar(HPF.ar(snd,300), 1, [0.5,0.77], 5, mul:LFNoise1.kr(0.1).range(0.8,0.3)); | ||||||
|  | 		snd = CombN.ar(snd, 1, Lag.ar(LFNoise0.ar(1/3).range(0.01,0.1),0.1), 3, mul:wet) + snd; | ||||||
|  | 		snd = Decimator.ar(snd, LFNoise1.kr(1).range(8000,22000), 0.2, 1.5) + (snd*0.5); | ||||||
|  | 		snd = AnalogTape.ar(snd,  1, 1); | ||||||
|  | 		snd = Compander.ar( | ||||||
|  | 			snd, snd, | ||||||
|  | 			thresh: 0.9, | ||||||
|  | 			slopeBelow: 1, | ||||||
|  | 			slopeAbove: 0.01, | ||||||
|  | 			clampTime:  0.01, | ||||||
|  | 			relaxTime:  0.01); | ||||||
|  | 		snd = BHiShelf.ar(snd, 3000, 0.2, 5); | ||||||
|  | 		Out.ar(out, snd); | ||||||
|  | 	} | ||||||
|  | ).add; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | ///////////////////////////////////////////////////////////////////////////////////////// | ||||||
		Loading…
	
		Reference in New Issue