«ambient scifi pads» by xffff

on 23 Aug'12 02:27 in scifipadscs80

pad synthesis with a couple of loops

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// been listening to a lot of vangelis/wendy carlos recently
// largely modified from the cs80_mh in synthdefpool 

(
var scale,fund;

scale = [0,3,7];

fork{
	loop{
		var t = [16,32].choose;
		fund = 26+[0,3,7,10,14].choose;
		fund.postln;
		t.wait;
	};
};

fork{			
	loop{
		var t = 1/2;
		var a,d,s,r,fa,fd,fs,fr,ratio,dtune,freq,
			ffreq,vibrate,vibdepth,cutoff,amp;
 		freq = (scale.choose+fund+(12*(0..3).choose)).midicps;
 		vibrate = t/(1..10).choose;
 		vibdepth = (90..500).choose.reciprocal;
		dtune = 1e-3; LFNoise0.kr(t,0.02,1);
		cutoff = freq * (1.1,1.2..4).choose;
 		ratio = (0.99,0.991..1.01).choose;	
 		amp = 1/3;
		
 		a = 3.0.rand/t;		
 		s = 3.0.rand/t;
 		r = 3.0.rand/t;
 		fa = 3.0.rand/t;
 		fs = 3.0.rand/t;
 		fr = 3.0.rand/t;
		
		play{
			var env, fenv, sig, gate, vib;
			gate = Line.kr(1,0,t);
			env = EnvGen.kr(Env.linen(a,s,r),doneAction:2);
			fenv = EnvGen.kr(Env.linen(fa,fs,fr));
			freq = Line.kr(freq,freq*ratio,t);
			vib = SinOsc.kr(vibrate).range(vibdepth.neg,vibdepth)+1;
			freq = vib*freq;			
			//freq = freq.lag(t);
			sig = Select.ar(2.rand,[
				Pulse.ar([freq,freq*(1+dtune),freq*(1-dtune)],
					LFNoise2.kr(t,0.5,0.5), 0.1).sum,
				Saw.ar([freq,freq*(1+dtune),freq*(1-dtune)]).sum
			]);
			sig = sig.tanh * env;
			ffreq = max(fenv*freq*12,cutoff)+100;
			sig = MoogFF.ar(sig,ffreq,LFNoise2.kr(1/t,1.4,1.5)).tanh;
			sig = RLPF.ar(sig,1e4,0.9).tanh;
			Pan2.ar(sig*amp,LFNoise2.kr(t.rand));
			};
		t.wait;
		};
	};

// this was inspired by http://sccode.org/1-4EG 
// good way to get the reverb out of the loop... 
// thanks rukano ;)
{
	var in = In.ar(0,2);
	in = in * 0.25;
	in = Compander.ar(in,in,0.75,1,0.75,0.1,0.4);
	in = (in*0.2) + GVerb.ar(HPF.ar(in,100), 20, 20, mul:0.6).tanh;
	in = Limiter.ar(LeakDC.ar(in));		
	ReplaceOut.ar(0, in)
}.play(addAction:\addToTail);
)
raw 1907 chars (focus & ctrl+a+c to copy)
reception
comments
samaaron user 24 Aug'12 11:07

beautiful :-)

beryann.parker user 27 Aug'12 21:27

It's true it's beautiful...!! (what does "addToTail" do? is it the effect, the reverb?).... Beryann

xffff user 30 Aug'12 17:50

thanks.

@beryann -> Yes, it's just a global reverb. Really should start commenting my code; bad habit. addToTail makes sure it goes to the end of the group. This might be interesting if you haven't read it already -> http://doc.sccode.org/Guides/Order-of-execution.html

rukano user 02 Sep'12 20:04

really cool :) I'm glad my triple super global reverb helped with something ;)

beryann.parker user 03 Sep'12 12:25

ok thx a lot!! and the global reverb is very nice too !(@Rukano)--- your tracks on SCloud are very interesting, exploring different kind of musical textures (in particular "wet") , is the "automatic piano" tracks done with SC too? :-}}

xffff user 03 Sep'12 16:52

@beyrann -> thanks again. "Wet" was done just with a DAW and a little bit of M4L tinkering if I remember rightly. Automatic piano tracks were all written with Common Music 3 + a lot(!) of editing in Sibelius. :)

beryann.parker user 05 Sep'12 08:45

ok thanx for all these informations....!

mstep user 17 Sep'12 14:22

great!