Supercollider

Dinou – Roda dentada

Copio a continuació el codi en SuperCollider d’aquesta peça musical, titulada Roda dentada. De nou es tracta d’una peça de duració indefinidament llarga, que si bé té un inici ben definit, no pot tenir cap final concret, més enllà de la disgregació de l’escolta a partir d’un cert punt. A l’arxiu d’àudio que podeu sentir aquí hi ha gravats 20 minuts aproximadament de la peça, però això no vol dir res. Senzillament m’ha semblat que era un temps suficient per donar a entendre la idea que la peça evoluciona lentament i que es pot deixar sonar tant com es vulgui.

(
SynthDef(\serra, {
  arg freq, vol=0.1, center=0, width=0.1;
  var sig, env;
  env = EnvGen.kr(Env.perc(curve: -4), doneAction: 2);
  sig = VarSaw.ar({ExpRand(freq*0.99, freq*1.01)}!19, width: width);
  sig = Splay.ar(sig, level: vol, center: center);
  sig = sig * env;
  Out.ar(0, sig);
}).add;
)

(
Pdef(\veu1,
  Pbind(
    \instrument, \serra,
    \dur, 0.125,
    \center, Pwhite(-2, 2),
    \width, Pwhite(0, 1),
    \vol, Pexprand(0.05, 0.15),
    \midinote, Pseq([
      45, 48, 52, 53, 55, 59,
      42, 48, 52, 53, 55, 62,
      39, 48, 52, 53, 55, 64,
      36, 48, 52, 53, 55, 59, 63, 66
    ], inf)
  )
).play(quant: 3.25);

Pdef(\veu2,
  Pbind(
    \instrument, \serra,
    \dur, 0.1251,
    \center, Pwhite(-2, 2),
    \width, Pwhite(0, 1),
    \vol, Pexprand(0.05, 0.15),
    \midinote, Pseq([
      45, 48, 52, 53, 55, 59,
      42, 48, 52, 53, 55, 62,
      39, 48, 52, 53, 55, 64,
      36, 48, 52, 53, 55, 59, 63, 69
    ], inf)
  )
).play(quant: 3.25);

Pdef(\veu3,
  Pbind(
    \instrument, \serra,
    \dur, 0.1252,
    \center, Pwhite(-2, 2),
    \width, Pwhite(0, 1),
    \vol, Pexprand(0.05, 0.15),
    \midinote, Pseq([
      45, 48, 52, 53, 55, 59,
      42, 48, 52, 53, 55, 62,
      39, 48, 52, 53, 55, 64,
      36, 48, 52, 53, 55, 59, 63, 72
    ], inf)
  )
).play(quant: 3.25);
)

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);