Supercollider

Dinou – Dents de serra

Copio a continuació el codi en SuperCollider d’aquesta peça, titulada Dents de serra. En aquesta ocasió la peça dura exactament una hora. Evoluciona durant els primers 30 minuts, fins el punt central de la peça, a partir del qual desfà els seus passos, de manera exacta, fins que torna al punt inicial.

(
SynthDef(\drone, {
     arg dur=3600, fon=150;
     var env, veu1, veu2, veu3, veu4, veu5, veu6, veu7, veu8, veu9, veu10, veu11, veu12, veu13, veu14, veu15, veu16, veu17, veu18, veu19;
     env = EnvGen.kr(Env.new([0, 0.25, 0.25, 0], [5, dur-10, 5]), doneAction: 2);
     veu1 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/19))
     )*env;
     veu2 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/2)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/18))
     )*env;
     veu3 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/3)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/17))
     )*env;
     veu4 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/4)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/16))
     )*env;
     veu5 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/5)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/15))
     )*env;
     veu6 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/6)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/14))
     )*env;
     veu7 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/7)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/13))
     )*env;
     veu8 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/8)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/12))
     )*env;
     veu9 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/9)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/11))
     )*env;
     veu10 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/10)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/10))
     )*env;
     veu11 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/11)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/9))
     )*env;
     veu12 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/12)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/8))
     )*env;
     veu13 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/13)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/7))
     )*env;
     veu14 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/14)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/6))
     )*env;
     veu15 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/15)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/5))
     )*env;
     veu16 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/16)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/4))
     )*env;
     veu17 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/17)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/3))
     )*env;
     veu18 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/18)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800/2))
     )*env;
     veu19 = VarSaw.ar(
         EnvGen.kr(Env.circle([fon, fon*1.5], 1800/19)), 0,
         EnvGen.kr(Env.circle([0, 1], 1800))
     )*env;
     Out.ar(0, Splay.ar([veu1, veu2, veu3, veu4, veu5, veu6, veu7, veu8, veu9, veu10, veu11, veu12, veu13, veu14, veu15, veu16, veu17, veu18, veu19]));
}).add
)

x = Synth(\drone);