«Hello World, I Am Lonely Too» by Schemawound

on 03 Sep'12 08:54 in ambientgranulargenerative

"Hello World, I Am Lonely Too" by Schemawound Appears on the album "They Want To Make Your Body Move. I Want To Hold You Perfectly Still."

Full album is available for download from http://www.schemawound.com

Blog post about the creation of this track http://schemawound.com/post/31040026304/hello-world-i-am-lonely-too

Code by Jonathan Siemasko (Additional Code by Carl Testa - http://www.carltesta.net ) Contact: schemawound@yahoo.com Homepage: http://www.schemawound.com/

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
"Hello World, I Am Lonely Too" by Schemawound
Appears on the album "They Want To Make Your Body Move.  I Want To Hold You Perfectly Still."

Full album is available for download from http://www.schemawound.com

Blog post about the creation of this track http://schemawound.com/post/31040026304/hello-world-i-am-lonely-too

Code by Jonathan Siemasko (Additional Code by Carl Testa - http://www.carltesta.net )
Contact: schemawound@yahoo.com
Homepage: http://www.schemawound.com/
*/

(
	{
		//Variables
		var mainOut, verbBus, reverb, dust, syn, synOctaveSeq, movements = Array(3);

		//SynthDefs
		SynthDef(\randomAddSynth, {|out = 0, freq = 200, gate = 1, amp = 1, maxDelay = 1, maxAttack = 1, maxDecay = 1, maxHold = 1, maxRelease = 1|
			var numOfHarmonics = 10;
			var harmonics = freq * (2..numOfHarmonics);
			var delayArray = Array.fill(numOfHarmonics, {arg i; Rand.new(0.0, maxDelay)});
			var attackArray = Array.fill(numOfHarmonics, {arg i; Rand.new(0.0, maxAttack)});
			var decayArray = Array.fill(numOfHarmonics, {arg i; Rand.new(0.0, maxDecay)});
			var holdArray = Array.fill(numOfHarmonics, {arg i; Rand.new(0.0, maxHold)});
			var releaseArray = Array.fill(numOfHarmonics, {arg i; Rand.new(0.0, maxRelease)});
			var sines = (SinOsc.ar(freq) * EnvGen.ar(Env.dadsr(Rand(maxDelay), Rand(maxAttack), Rand(maxDecay), Rand(maxHold), maxRelease), gate, doneAction:2)) / numOfHarmonics;
			harmonics.do{|frequency, i| sines = sines + (SinOsc.ar(frequency) * EnvGen.ar(Env.dadsr(delayArray[i], attackArray[i], decayArray[i], holdArray[i], releaseArray[i]), gate) / numOfHarmonics);};
			Out.ar(out, sines!2 * amp);
		}).add;

		SynthDef(\perc, { | out=0, freq=200, width=0.5, density=5, amp=0.1, gate=1 |
			var pan = Rand.new(-1, 1);
			var filterNoise = RLPF.ar(PinkNoise.ar, freq, width / freq);
			var dustNoise = Dust.kr(density) * filterNoise;
			var env = EnvGen.kr(Env.perc, gate, doneAction:2);
			Out.ar(out, Pan2.ar(dustNoise, pan, amp));
		}).add;

		SynthDef(\reverb, { |in=0, out=0, mix=0.5, room=0.5, damp=0.5, pan=0, amp=1 |
			var reverb = FreeVerb.ar(InFeedback.ar(in, 2),mix,room,damp);
			Out.ar(out, Pan2.ar(reverb, pan, amp));
		}).add;

		//Sync
		s.sync;

		//Busses
		mainOut = 0;
		verbBus = Bus.audio(Server.default, 2);
		reverb = Synth.new(\reverb, [\out, mainOut, \in, verbBus, \room, 1, \mix, 0.5, \damp, 0.5]);

		//Patterns
		dust = Pbind(*[
			instrument: \perc,
			density: 1,
			freq: Pseq([Pseq([10,10000], 20), Pseq([10,100,1000,10000], 10)], inf),
			dur: Pwhite(0.1,0.2,inf),
			sustain: 0.1,
			amp: 0.1,
			out: verbBus
		]);

		synOctaveSeq = Pseq([Prand([1,2], 8), Pwrand([1,2,3], [0.25, 0.5, 0.25], 10)], inf);
		syn = Pbind(*[
			instrument:	\randomAddSynth, 
			note: 		Prand([2.5,5.5,3.5,4.3,4.7], inf),
			octave:		synOctaveSeq,
			dur: 		Pwhite(1,3,inf),
			amp:		0.4,
			maxDelay:	2,
			maxAttack:	Pwrand([0.05, 4], [0.25, 0.75], inf), //Short or long attack 
			maxDecay:	10, 
			maxHold:	1,
			maxRelease:	10,
			out:		mainOut
		]);

		//Movements
		movements.add({
			"***Section 1***".postln;
			Pdef(\dust).play;
			Pdef(\dust, dust);							"Slow Crackle".postln;						15.wait; 	// 00:15
			Pbindef(\dust, \density, 100); 				"Speed Up".postln;							15.wait; 	// 00:30
			Pdef(\syn).fadeTime_(10).play;
			Pdef(\syn, syn);							"Syn".postln;								30.wait; 	// 01:00
			Pbindef(\dust, \density, 10); 				
			Pbindef(\syn, \out, verbBus);				"Verb".postln;								30.wait; 	// 01:30
			Pbindef(\dust, \density, 100); 				
			Pbindef(\syn, \out, mainOut);				"No verb".postln;							30.wait;	// 02:00
			Pdef(\dust).stop; Pdef(\syn).stop;			"Full Stop".postln;							7.wait;		// 02:07
		});
		movements.add({
			"***Section 2***".postln;
			Pdef(\dust, dust).play;					
			Pbindef(\dust, \density, 1); 				"Dust Back".postln;							7.wait;		// 00:00
			Pbindef(\dust, \density, 20); 				"Faster".postln;							7.wait;		// 00:07
			Pbindef(\dust, \density, 50); 				"And Faster".postln;						7.wait;		// 00:14
			Pbindef(\dust, \density, 100);
			Pdef(\syn, syn).play;
			Pbindef(\syn, \octave, synOctaveSeq + 1);	"Syn back and Hi".postln;					30.wait;	// 00:44
			Pbindef(\dust, \density, 20);
			Pbindef(\syn, \out, verbBus);				"Hi Verb".postln;							30.wait; 	// 01:14
			Pbindef(\syn, \out, mainOut);				"No verb".postln;							
			Pbindef(\dust, \density, 1); 				"Slow the crackle".postln;
			Pbindef(\syn, \dur, 0.5);					"Regulate Synth Rythum".postln;				30.wait;	// 01:44
			Pbindef(\dust, \density, 2);				"Density: 2".postln;						2.wait;		// 01:46
			Pbindef(\dust, \density, 4);				"Density: 4".postln;						2.wait;		// 01:48
			Pbindef(\dust, \density, 8);				"Density: 8".postln;						2.wait;		// 01:50
			Pbindef(\dust, \density, 16);				"Density: 16".postln;						2.wait;		// 01:52
			Pbindef(\dust, \density, 32);				"Density: 32".postln;						2.wait;		// 01:54
			Pbindef(\dust, \density, 64);				"Density: 64".postln;						2.wait;		// 01:56
			Pbindef(\dust, \density, 128);				"Density: 128".postln;						1.wait;		// 01:57
			Pbindef(\dust, \density, 256);				"Density: 256".postln;						1.wait;		// 01:58
			Pbindef(\dust, \density, 512);				"Density: 512".postln;						1.wait;		// 01:59
			Pbindef(\dust, \density, 1024);				"Density: 1024".postln;						1.wait;		// 02:00
			Pdef(\dust).stop; Pdef(\syn).stop;			"Full Stop".postln;							7.wait;		// 02:07
		});
		movements.add({
			"***Section 3***".postln;
			Pdef(\dust, dust).play; 
			Pdef(\syn, syn).play;			
			Pbindef(\syn, \dur, 0.5);					
			Pbindef(\syn, \octave, synOctaveSeq - 1);
			Pbindef(\syn, \out, verbBus);				"Down 2 octaves and verbed".postln;			60.wait;	// 01:00
			Pbindef(\dust, \density, 10);
			Pbindef(\dust, \freq, Pseq([10,100,1000,5000], inf));
			Pbindef(\dust, \dur, 0.25);					"New noise signature".postln;				45.wait;	// 01:45
			Pbindef(\syn, \dur, Pwhite(1,3,inf),);
			Pbindef(\syn, \octave, synOctaveSeq);
			Pbindef(\dust, \density, 20);				"Denser".postln;							45.wait;	// 02:30
			Pdef(\dust).stop; Pdef(\syn).stop; 			"Ring Out".postln;							10.wait;	// 02:40
		});

		//Sequence
		Pdef(\dust).fadeTime_(10); Pdef(\syn).fadeTime_(10);
		"".postln;"-----Start Sequence-----".postln;
		movements[0].(); // 02:07
		movements[1].(); // 04:14
		movements[2].(); // 06:54
		reverb.free;
		"-----End Sequence-----".postln; "".postln;
	}.fork
)
raw 6469 chars (focus & ctrl+a+c to copy)
reception
comments