Dinou

Dinou – Perduts matí i vespre

Perdut matí:

Perdut vespre:

Copio a continuació el codi en SuperCollider que he fet servir per generar aquestes dues peces musicals, titulades Perdut matí i Perdut vespre. En els dos casos es tracta d’un acompanyament fixat, repetitiu, sobre el qual evoluciona una melodia aleatòria.

És important dir que els dos arxius que pots reproduir a l’inici d’aquesta entrada són dos enregistraments particulars, d’uns 5 minuts cadascun aproximadament, d’aquestes peces, però que no són en cap cas les peces. Serien, per dir-ho així, interpretacions concretes de les peces (interpretacions fetes per l’ordinador, en aquest cas). Una interpretació de Perdut matí i de Perdut vespre consistiria en una execució concreta del codi que copio a sota, en unes circumstàncies determinades. Perdut matí consta de les veus anomenades \baix, \harmonia i \melodia1; Perdut vespre consta de les veus \baix i \melodia2. En si les dues peces tenen una duració indefinida i, en rigor, excepte accidents (és clar), no es repeteixen mai.

La Lúa Coderch em deia l’altre dia que aquestes peces són caixetes de música. Penso que té raó. Però són caixetes de música no mecàniques, caixetes computacionals, aleatòries i infinites.

(
SynthDef(\ding, {
     arg freq;
     var env = EnvGen.kr(Env.perc(releaseTime: 3, level: {Rand(0.05, 0.2)}), doneAction: 2);
     var sig = SinOsc.ar(freq*{Rand(0.99, 1.01)}!2)*env;
     Out.ar(0, sig);
}).add
)

(
x = Pdef(\baix,
     Pbind(
         \instrument, \ding,
         \dur, Pseq([2, 3], inf),
         \degree, Pseq([-3, -2, 0], inf),
         \scale, Scale.minor
     )
).play(TempoClock.default)
)

x.clear

(
y = Pdef(\harmonia,
     Pbind(
         \instrument, \ding,
         \dur, Pseq([0.5, 0.25, 0.25, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25], inf),
         \degree, Pseq([0, 2, 4, 1, 3, 4, 2, 0, 1, 3], inf),
         \scale, Scale.minor
     )
).play(TempoClock.default)
)

y.clear

(
z = Pdef(\melodia1,
     Pbind(
         \instrument, \ding,
         \dur, Pseq([Prand([0.5, 0.25])], inf),
         \degree, Pseq([Prand([2, 3, 4, 6, 7, 8, 9, 10, 11, 12])], inf),
         \scale, Scale.minor
     )
).play(TempoClock.default)
)

z.clear

(
t = Pdef(\melodia2,
     Pbind(
         \instrument, \ding,
         \dur, Pseq([Prand([0.5, 1, 1.5, 2])], inf),
         \degree, Pseq([Prand([1, 2, 3, 4, 5, 6, 7, 8])], inf),
         \scale, Scale.minor
     )
).play(TempoClock.default)
)

t.clear

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