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

Dinou – M4

Copio a continuació el codi en SuperCollider d’aquesta peça musical, titulada M4.

(
SynthDef.new(\m4, {
     arg fon=40, dur=3600;
     var freq1, freq2, freq3, freq4, veu1, veu2, veu3, veu4, env;
     env = EnvGen.kr(Env.new([0.01, 0.5, 0.5, 0.01], [20, dur-40, 20], \exp), doneAction: 2);
     freq1 = EnvGen.kr(Env.circle([fon, fon*4/3, fon*5/4, fon*4/3], [600, 600, 600], \exp));
     freq2 = EnvGen.kr(Env.circle([fon, fon*4/3, fon*5/4, fon*4/3], [750, 750, 750], \exp));
     freq3 = EnvGen.kr(Env.circle([fon, fon*4/3, fon*5/4, fon*4/3], [900, 900, 900], \exp));
     freq4 = EnvGen.kr(Env.circle([fon, fon*4/3, fon*5/4, fon*4/3], [1050, 1050, 1050], \exp));
     veu1 = VarSaw.ar(freq1)*env;
     veu2 = VarSaw.ar(freq2)*env;
     veu3 = VarSaw.ar(freq3)*env;
     veu4 = VarSaw.ar(freq4)*env;
     Out.ar(0, Splay.ar([veu1, veu2, veu3, veu4]));
}).add;
)

x = Synth.new(\m4);

M4 té una duració indefinida. Al codi tal com l’he escrit aquí, i a l’arxiu d’àudio que pots reproduir a l’inici d’aquesta entrada, la duració de la peça és d’un hora (3600 segons), però he fixat aquesta duració de forma arbitrària. La peça pot ser tan llarga com es vulgui. En tant que peça, és virtualment infinita. Si no he errat els càlculs, M4 és un loop de 70 hores de duració: cada 70 hores, la peça torna a començar, i es repeteix exactament igual. Podem identificar aquest fet llegint el codi de la peça, però és un fet imperceptible per l’oïda humana, així que pot ser que no tingui cap rellevància musical.