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

 

})