-desde el faro negro-, 2023
Emilio Hinojosa Carrión
Pieza sonora aleatoria para 6 canales Intérpretes: Ale de la Puente, Velia González, Emilio Hinojosa Carrión, Michel Blancsubé y dos cuervos. Producción, edición y mezcla: Emilio Hinojosa Carrión Programación y espacialización: Iván Naranjo Masterización: Jorge Solís Arenazas Pieza sonora aleatoria en una acción vocal dirigida por Emilio Hinojosa Carrión junto con seis intérpretes en un faro abandonado que se encuentra en Guerrero Negro, Baja California.
SuperCollider code
s.waitForBoot({
~pth = PathName(thisProcess.nowExecutingPath).parentPath;
~b1 = SoundFile.collectIntoBuffers(~pth++”1/*”);
~b2 = SoundFile.collectIntoBuffers(~pth++”2/*”);
~b3 = SoundFile.collectIntoBuffers(~pth++”3/*”);
~b4 = SoundFile.collectIntoBuffers(~pth++”4/*”);
~b5 = SoundFile.collectIntoBuffers(~pth++”5/*”);
~b6 = SoundFile.collectIntoBuffers(~pth++”6/*”);
~b7 = SoundFile.collectIntoBuffers(~pth++”conCuervos/*”);
s.sync;
SynthDef(“samp1”, { | out, rate=1, amp, pan, att=0.1, rel=0.1, sustain=1, bufnum |
var sig, env, filt;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
sig = Pan2.ar(sig, pan, amp);
sig = sig * env;
Out.ar(out, sig);
}).add;
SynthDef(“filt1”, { | out, bufnum, rate=1, amp, pan,freq, rq, att=0.1, sustain=1 , rel=0.1, fpan, plo, phi |
var filt, env, sig;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
filt = BPF.ar(sig, freq, rq, amp);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
pan = pan + SinOsc.ar(fpan).range(plo, phi);
filt = Pan2.ar(filt, pan);
filt = filt * env;
Out.ar(out, filt);
}).add;
SynthDef(“filt1a”, { | out, bufnum, rate=1, amp, pan, freq, rq, att=0.1, sustain=1 , rel=0.1, fpan, plo, phi |
var filt, env, sig;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
filt = BPF.ar(sig, freq, rq);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
pan = pan + SinOsc.ar(fpan).range(plo, phi);
filt = Pan2.ar(filt, pan, amp);
filt = filt * env;
Out.ar(out, filt);
}).add;
SynthDef(“filt2”, { | out, bufnum, rate=1, amp, pan, freq, rq, att=0.1, sustain=1 , rel=0.1, fpan, plo, phi |
var filt, env, sig;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
filt = BPF.ar(sig, freq, rq, amp);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
filt = filt * env;
pan = pan + SinOsc.ar(fpan).range(plo, phi);
filt = Pan2.ar(filt, pan);
Out.ar(out, filt);
}).add;
SynthDef(“filt3”, { | out, bufnum, rate=1, amp, pan, freq, rq, att=0.1, sustain=1 , rel=0.1, fpan, plo, phi, trig = 1, wipe, width |
var filt, chain, env, sig;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
chain = FFT(LocalBuf(512, 1), sig);
chain = PV_BinScramble(chain, wipe, width, trig);
filt = IFFT(chain);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
filt = filt * env;
pan = pan + SinOsc.ar(fpan).range(plo, phi);
filt = Pan2.ar(filt, pan, amp);
Out.ar(out, filt);
}).add;
SynthDef(“filt3a”, { | out, bufnum, rate=1, amp, pan, freq, rq, att=0.1, sustain=1 , rel=0.1, fpan, plo, phi, trig = 1, wipe, width |
var filt, chain, env, sig;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
chain = FFT(LocalBuf(512, 1), sig);
chain = PV_BinScramble(chain, wipe, width, trig);
filt = IFFT(chain);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
filt = filt * env;
pan = pan + SinOsc.ar(fpan).range(plo, phi);
filt = Pan2.ar(filt, pan, amp);
Out.ar(out, filt);
}).add;
SynthDef(“filt4”, { | out, bufnum, bufnum2, rate=1, rate2=1, amp, pan, freq, rq, att=0.1, sustain=1 , rel=0.1, fpan, plo, phi, trig = 1, wipe, width |
var filt, chain, chain2, chains, env, sig, sig2;
att = att * BufDur.kr(bufnum);
rel = rel * BufDur.kr(bufnum);
sustain = sustain * BufDur.kr(bufnum);
sig = PlayBuf.ar(2, bufnum, BufRateScale.kr(bufnum)*rate, doneAction:2);
sig = Mix(sig);
sig2 = PlayBuf.ar(2, bufnum2, BufRateScale.kr(bufnum2)*rate2, doneAction:2);
sig2 = Mix(sig2);
chain = FFT(LocalBuf(512, 1), sig);
chain2 = FFT(LocalBuf(1024, 1), sig2);
chains = PV_BinWipe(chain, chain2, wipe);
filt = IFFT(chains);
env = EnvGen.kr(Env.linen(att, sustain-att-rel, rel), doneAction: 2);
filt = filt * env;
pan = pan + SinOsc.ar(fpan).range(plo, phi);
filt = Pan2.ar(filt, pan, amp);
Out.ar(out, filt);
}).add;
c=Pbind(*[
instrument: \samp1,
dur: Pwhite(10, 15, inf),
bufnum: Pwrand(
[Pwrand(~b1, [1, 1, 0.3, 0.3, 0.6, 1, 1, 0.8, 0.1, 0.4].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-35, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
rate: 1
]);
d = Pbind(*[
instrument: \filt1,
dur: Pwhite(7, 15, inf),
bufnum: Pwrand(
[Pwrand(~b6, [1, 1, 0.4, 1, 1, 1, 0.4].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pexprand(-35, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pwhite(100, 5000, inf),
rq: Pwhite(0.01, 0.3),
fpan: Pexprand(1.5, 50, inf),
plo: Pwhite(-0.5, -0.1, inf),
phi: Pwhite(0.1, 0.5, inf),
rate: 1
]);
e = Pbind(*[
instrument: \filt2,
dur: Pwhite(8, 23, inf),
bufnum: Pwrand(
[Pwrand(~b5, [1, 0.5, 0.2, 1, 1, 1, 0.5].normalizeSum, 1), \rest], [0.5, 0.5],
inf).trace,
amp: Pwhite(-35, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pseg(Pwhite(100, 2500, inf), Pwhite(60, 120, inf)),
rq: Pseq((0.001, 0.005..1.0).mirror, inf),
fpan: Pexprand(1.5, 80, inf),
plo: Pwhite(-0.5, -0.1, inf),
phi: Pwhite(0.1, 0.5, inf),
rate: 1
]);
f = Pbind(*[
instrument: \filt3,
dur: Pwhite(10, 15, inf),
bufnum: Pwrand(
[Pwrand(~b4, [1, 1, 0.4, 1, 0.6, 0.6, 1, 0.7].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-45, -22, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pseg(Pwhite(100, 2500, inf), Pwhite(60, 120, inf)),
wipe: Pwhite(0.0, 1.0, inf),
width: Pwhite(0.0, 0.5, inf),
fpan: Pexprand(0.5, 40, inf),
plo: Pwhite(-0.5, -0.1, inf),
phi: Pwhite(0.1, 0.5, inf),
rate: 1
]);
g=Pbind(*[
instrument: \samp1,
dur: Pwhite(10, 15, inf),
rate: 1,
bufnum: Pwrand(
[Pwrand(~b2, [1, 1, 0.8, 1, 1, 0.7, 0.8 ].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-35, -20, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
]);
h=Pbind(*[
instrument: \filt1,
dur: Pwhite(10, 18, inf),
bufnum: Pwrand(
[Pwrand(~b3, [1, 0.8, 1, 1, 0.6, 1, 0.7, 0.8, 0.3].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pexprand(-35, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pwhite(100, 5000, inf),
rq: Pwhite(0.01, 0.3),
fpan: Pexprand(0.5, 10, inf),
plo: Pwhite(-0.5, -0.1, inf),
phi: Pwhite(0.1, 0.5, inf),
rate: 1
]);
i=Pbind(*[
instrument: \samp1,
dur: Pwhite(7, 23, inf),
bufnum: Pwrand(
[Pwrand(~b3, [1, 0.8, 1, 1, 0.6, 1, 0.7, 0.8, 0.3].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-35, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
rate: 1
]);
j=Pbind(*[
instrument: \samp1,
dur: Pwhite(12, 25, inf),
bufnum: Pwrand(
[Pwrand(~b7, [0.6, 1, 1, 0.8, 0.5, 0.6, 0.6, 0.5, 0.6, 0.6, 0.8, 0.9, 0.3, 0.7, 0.9, 1].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-45, -25, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
rate: Prand([-6, -5, -3, -2, 0].midiratio, inf)
]);
k=Pbind(*[
instrument: \samp1,
dur: Pwhite(10, 15, inf),
bufnum: Pwrand(
[Pwrand(~b6, [1, 1, 0.4, 1, 1, 1, 0.4].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-30, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
rate: 1
]);
l=Pbind(*[
instrument: \samp1,
dur: Pwhite(10, 15, inf),
bufnum: Pwrand(
[Pwrand(~b4, [1, 1, 0.4, 1, 0.6, 0.6, 1, 0.7].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-35, -15, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
rate: 1
]);
m=Pbind(*[
instrument: \samp1,
dur: Pwhite(13, 25, inf),
bufnum: Pwrand(
[Pwrand(~b5, [1, 0.5, 0.2, 1, 1, 1, 0.5].normalizeSum, 1), \rest], [0.5, 0.5],
inf).trace,
amp: Pwhite(-35, -12, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
rate: 1
]);
n = Pbind(*[
instrument: \filt1a,
dur: Pwhite(7, 15, inf),
bufnum: Pwrand(
[Pwrand(~b6, [1, 1, 0.4, 1, 1, 1, 0.4].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pexprand(-35, -20, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pwhite(100, 5000, inf),
rq: Pwhite(0.01, 0.3),
fpan: Pexprand(1.5, 50, inf),
plo: Pwhite(-0.7, -0.1, inf),
phi: Pwhite(0.1, 0.1, inf),
rate: 1
]);
o = Pbind(*[
instrument: \filt3a,
dur: Pwhite(10, 15, inf),
bufnum: Pwrand(
[Pwrand(~b4, [1, 1, 0.4, 1, 0.6, 0.6, 1, 0.7].normalizeSum, 1), \rest], [0.7, 0.3],
inf).trace,
amp: Pwhite(-45, -25, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pseg(Pwhite(100, 2500, inf), Pwhite(60, 120, inf)),
wipe: Pwhite(0.0, 1.0, inf),
width: Pwhite(0.0, 0.5, inf),
fpan: Pexprand(0.5, 40, inf),
plo: Pwhite(-0.6, -0.1, inf),
phi: Pwhite(0.1, 0.6, inf),
rate: 1,
]);
p = Pbind(*[
instrument: \filt4,
dur: Pwhite(15, 25, inf),
bufnum: ~b1[7],
bufnum2: ~b2[6],
amp: Pwhite(-38, -17, inf).dbamp,
pan: Pwhite(-1.0, 1.0, inf),
freq: Pseg(Pwhite(100, 2500, inf), Pwhite(60, 120, inf)),
wipe: Pwhite(0.3, 0.7, inf),
fpan: Pexprand(7.5, 22, inf),
plo: Pwhite(-0.6, -0.1, inf),
phi: Pwhite(0.1, 0.6, inf),
rate: 1,
]);
s.sync;
z=Ptpar([
0.0, Pfindur(40, Ppar(c!2)),
50, Pfindur(70, Ppar([c, g, i, p])),
120, Pfindur(100, Ppar([c, d, k, f, l, g, g, h])),
200, Pfindur(60, Ppar([e, e, e, m])),
260, Pfindur(40, Ppar([i,d, e,f, o, j, c, m, n])),
300, Pfindur(40, Ppar([c, d, n, k, m, f, o])),
340, Pfindur(30, Ppar([i, k, g, c, l, p]))
], inf);
s.sync;
y=z.play;
})