sclang: array primitives - respect mutability when changing object.
[supercollider.git] / examples / pieces / Trains.scd
blobbf62b0622c98598e9b49e4d217008657bcaa2ac4
3 // (thor magnusson) (2007)
5 // a 19th century steam train leaving the station
9 var steam, pan, time, e2, filter, we, whistle;
10 time = 24;
12 e2 = Env.new([-0.8, 0.8 ], [ time+2],'sine');
13 we = Env.new([0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0], [2, 0, 0.2, 0, 0.2, 0, 0.8, 0, 4, 0, 3]);
15 steam = WhiteNoise.ar(LFSaw.ar(XLine.ar(1, 7, time)))+PinkNoise.ar(LFSaw.ar(XLine.ar(1, 7, time)));
16 filter = BPF.ar(steam, 600, 1+EnvGen.ar(Env.sine(time,9)));
17 whistle = Mix.ar(GVerb.ar(Klank.ar(`[[800, 600, 1200, 990], nil, [1, 1, 1, 1]], WhiteNoise.ar(0.005)) * EnvGen.ar(we, timeScale:time/10.2 ), 100, 0.3, 0.1));
19 pan = Pan2.ar(filter+whistle, EnvGen.ar(e2, doneAction:2));
20 pan
22 }.play
25 // (julian rohrhuber) (2007)
27 // julian took the train into the 21st century:
31 var hiss, time, e2, ee2, filter, we, whistle, train;
32 time = 24;
34 e2 = Env.new([0, 1, 0], [ time / 2, time / 2]);
35 we = Env.new([0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0], [0.2, 0, 0.2, 0, 0.2, 0, 0.8, 0, 2, 0, 3]);
36 ee2 = EnvGen.ar(e2, doneAction:2);
37 hiss = HPF.ar(WhiteNoise.ar(10 ! 2), ee2.linexp(0, 1, 10000, 1000), 0.03);
39 whistle = Mix.ar(GVerb.ar(Klank.ar(`[[1, 1.25, 1.2, 1.5].midiratio * 50, nil, [1, 1, 1, 1] * 0.3], Saw.ar(67, 0.004)) * EnvGen.ar(we, timeScale:time/10.2 ), 100, 0.3, 0.1));
41 train = hiss + whistle;
42 train = BPF.ar(train, 600, 1 + EnvGen.ar(Env.sine(time,9)));
43 train = DelayL.ar(train, 0.01, 1 - ee2 + [0, 0.01]);
44 Pan2.ar(train, ee2.linlin(0, 1, -1, 1) * [1, 0.99], ee2.linexp(0, 1, 0.01, 1));
45 }.play