Jean Tinguely Relief Meta-mechanique Sonore 1, 1955
Daniel Malone Soundtrack to The Strike Church
Dieter Roth (as Diter Rot) Der Akkordeon Fluch, 1981–2
Domenico de Clario From The Opaque, 1994–95
George Brecht Comb Music (Comb Event), 1959–62
Jean Dubuffet Coq a L’oeil, 1961
John Nixon (as Two Greys Becoming) 2, 1981
Katarina Fristch Unken (Extrait)
Lillian Budd (Merryln Tweedie with Ivan Zagni) Studies For Existence, 1998
Into the Void Bank Roll
Marco Fusinato Ep in E
Peter Tyndall (as Slave Guitars) 6, 1981
Joseph Beuys & Nam June Paik Klavierduett In Memoriam George Maciunas
Anthony Clark (as The Living Rococo) Untitled, 1981
Mike Kelley & Destroy All Monsters Raga, 1993
D. M. THOMAS & Hany ARMANIOUS November 1996
Ross SINCLAIR & The Soup Dragons Head Gone Astray
Bruce McLEAN & H. M. V. DIODES Limpo-Wristo Poncho-Rocko
Louise Bourgeois Otte, 1995
Anthony Clark Intermezzo, 1981
Thomas Lawson Untitled, 1980
Martin Creed Work No. 117
Martin Kersels Fax Machine, 1995
Bill Viola Buried Secrets, 1995
Gabriel Orozco Ligne d’abandon, 1993
Gobbler Lazy Siren, 1998
Kurt Merz Schwitters Ursonate, 1922–32
Chris Burden Velvet Water, 1974
Christian Marclay One Thousand Cycles, 1981
Marcel Duchamp Musical Erratum, 1913
Laurie Anderson It’s not the bullet that kills you, it’s the hole (for Chris Burden), 1977
David Byrne Artists Only, 1978
John Nixon Alexander Alexandrovich Blok Pt 1, 1981
Matt Finnish A Short Note, 1981
Stephen Prina No one calls me friend, 1997
Willie Cole Carousel, 1996
Yoko Ono Walking on thin ice, 1981
Christian Boltanski Songs that have been sung by Christian Boltanski, 1944–46
Paul McCarthy Santa’s Bells, 1997
Tony Oursler Trance Emission
Dennis Oppenheim Broken Record Blues, 1976
Evgeny Asse & V. Fishkin & D. Gutoff Music-Hall Whistling Performance, 1995
George Maciunas & M.C Ciurlionis Fluxemblage, 1908–1964
Kabakov & Tarasov Olga Georgievna, Something is Burning
Vitaly Komar & Alexander Melamid Music Writing - Passport, 1976
John Nixon (as The Clock) Red and Black, 1980
Rolf Harris Australian traditional
Alex Selenitsch Toora Lee: Four Pieces for Bellow Organ, 1973
Beck Hansen (as Beck) Devil’s Haircut, 1996
Gunter Christmann Audio Plastik No. 4, 1974–77
John Lennon & Paul McCarthy The Ballad of John and Yoko, 1969
Marcel Duchamp La mariee mise a nu par ses celibataires, 1913
Phil Edwards Hard Rubbish Drive By, 1998
Philip Corner Carrot Chew Performance, 1964
Joe Jones Flux Music Box, 1965
Slave Pianos, A Schema and Historo-Materialist Pro-gnostic, Score (Codes)
// -- Polyphony -------------------------------------------------------------
s.boot;
MIDIClient.init;
m = MIDIOut(0, MIDIClient.destinations.at(0).uid);
"aconnect 128:1 20:0".systemCmd;
// -- Initialize
(
~peaks = {|a|
var r;
r = Array();
(a.size-2).do({|i|
if((a[i+1] > a[i]) && (a[i+1] > a[i+2]), {
r = r.add(i+1);
})
});
r;
};
~binFreqs = {|n, bins|
var w = s.sampleRate / n;
var hw = w / 2;
bins.collect({|i| (i * w) + hw});
};
~fftN = 1024;
~fftB = Buffer.alloc(s,1024);
~oscN = 64;
~freqB = Buffer.alloc(s,~oscN);
~amplB = Buffer.alloc(s,~oscN);
~midiN = 12;
~midiU = 64;
~midiC = 0.9;
~durL = 1.5;
~durR = 2.0;
~waitL = 0.01;
~waitR = 0.05;
~ctlL = 0.01;
)
// -- Run
(
~queryR = Routine({
loop {
~fftB.getn(0, ~fftN, { |b|
var c, d, e, f, g, h, i;
c = b.clump(2).flop;
d = [Signal.newFrom(c[0]), Signal.newFrom(c[1])];
e = Complex(d[0], d[1]);
f = e.magnitude;
g = ~peaks.value(f);
h = ~binFreqs.value(~fftN,g).copyRange(0,~oscN);
i = g.collect({|i| f[i]}).copyRange(0,~oscN) * 0.01;
if(~midiC.coin, {
~midiN.do({
var j = ~midiU.rand, p = h[j].cpsmidi;
m.noteOn(0, p, i[j]*128);
})});
~freqB.setn(0,h);
~amplB.setn(0,i);
});
rrand(~waitL,~waitR).yield;
}
}).play;
~analysisS = {
FFT(~fftB.bufnum, AudioIn.ar(1));
0.0;
}.play;
~synthesisS = {
var m = Mix.fill(~oscN,{|i|
var f, a;
f = Lag.kr(BufRd.kr(1, ~freqB.bufnum, i, 0, 1), ~ctlL);
a = Lag.kr(BufRd.kr(1, ~amplB.bufnum, i, 0, 1), ~ctlL);
SinOsc.ar(f,(pi*2).rand)*a;
});
Pan2.ar(
m + (AudioIn.ar(1) * 0.25),
LFNoise0.kr(~waitR.reciprocal),
0.5).clip2(1.0);
}.play;
)
// -- Modify
(
~midiN = 12;
~midiU = 64;
~midiC = 0.9;
~durL = 1.5;
~durR = 2.0;
~waitL = 0.5;
~waitR = 0.5;
~ctlL = 0.01;
m.allNotesOff(0);
)
// -- Shutdown
(
~queryR.stop;
~analysisS.free;
~synthesisS.free;
~fftB.free;
~freqB.free;
~amplB.free;
)
// -- All notes off
m.allNotesOff(0);
// -- Copy audio
{Out.ar(0,AudioIn.ar(2))}.play
Slave Pianos, A Schema and Historo-Materialist Pro-gnostic, Score (Codes)
// -- Monophony -------------------------------------------------------------
s.boot;
MIDIClient.init;
m = MIDIOut(0, MIDIClient.destinations.at(0).uid);
"aconnect 128:1 20:0".systemCmd;
// -- Setup
(
~fftB = Buffer.alloc(s, 2048, 1);
~sfB = Buffer.new(s);
~sfB.allocRead("tyndall/slave-guitars.snd");
~hainsL = 1.1;
~waitT = 0.05;
~quietL = 21;
~durL = 1.5;
~durR = 3.0;
~loudL = 110;
~rpr = {|n, t|
var i = In.kr(n,2);
TRand.ar(i[0], i[1], t);
};
~randC = {
var c = (1..4);
switch (c.choose)
{1} {
s.sendMsg("c_setn", 0, 12,
rrand(0.005, 0.025), rrand(0.05, 0.15),
rrand(0.75, 0.95), rrand(1.05, 1.25),
rrand(0.01, 0.05), rrand(0.05, 0.175),
rrand(0.1, 0.2), rrand(0.2, 0.4),
rrand(0.2, 0.45), rrand(0.55, 0.8),
rrand(-1.0, 0.0), rrand(0.0, 1.0));
}
{2} {
s.sendMsg("c_setn", 0, 12,
rrand(0.01, 0.025), rrand(0.05, 0.25),
rrand(0.75, 0.95), rrand(1.05, 1.25),
rrand(0.001, 0.01), rrand(0.02, 0.04),
rrand(0.1, 0.2), rrand(0.2, 0.4),
rrand(0.0, 0.45), rrand(0.55, 1.0),
rrand(-0.1, 0.0), rrand(0.0, 1.0));
}
{3} {
s.sendMsg("c_setn", 0, 12,
rrand(0.001, 0.015), rrand(0.015, 0.025),
rrand(0.85, 0.95), rrand(1.05, 1.15),
rrand(0.001, 0.01), rrand(0.01, 0.035),
rrand(0.1, 0.2), rrand(0.2, 0.4),
rrand(0.35, 0.45), rrand(0.55, 0.85),
rrand(-1.0, 0.0), rrand(0.0, 0.1));
}
{4} {
s.sendMsg("c_setn", 0, 12,
rrand(0.05, 0.15), rrand(0.15, 0.25),
rrand(0.75, 0.95), rrand(1.05, 1.25),
rrand(0.001, 0.01), rrand(0.02, 0.04),
rrand(0.2, 0.4), rrand(0.4, 0.8),
rrand(0.0, 0.45), rrand(0.55, 0.65),
rrand(-0.5, 0.0), rrand(0.0, 0.5));
}
};
~trRecv = OSCresponderNode(s.addr, '/tr',
{ |time, responder, msg|
var id = msg[2], nt, lvl;
if(id==0,
{
~randC.value;
nt = msg[3].cpsmidi;
lvl = ~loudL;
}, {
nt = msg[3] * 92;
lvl = ~quietL;
});
m.noteOn(0, nt, lvl);
{m.noteOff(0, nt, 0);}.defer(rrand(~durL, ~durR));
}).add;
)
// -- Run
(
~randC.value;
{
var src, dtc, dtcD, ptc, ptcE, d, clk, rat, dur, pos, pan, amp, syn, b;
src = AudioIn.ar(1);
#ptc, ptcE = Pitch.kr(src, ampThreshold: 0.02, median: 7);
b = ~sfB.bufnum;
dtc = PV_HainsworthFoote.ar(FFT(~fftB.bufnum, src), ~hainsL, 0.0, 0.75, ~waitT);
dtcD = TDelay.ar(dtc,4096*SampleDur.ir);
d = Dseq(Dwhite(In.kr(0),In.kr(1),1),9999);
clk = dtc + TDuty.ar(d, 0, WhiteNoise.ar.abs, 0);
rat = ~rpr.value(2, clk);
dur = ~rpr.value(4, clk);
pos = ~rpr.value(8, clk) * BufDur.kr(b);
pan = ~rpr.value(10, clk);
amp = ~rpr.value(6, clk);
SendTrig.ar(dtcD, 0, ptc);
SendTrig.ar(clk, 1, rat);
Out.ar(0, (src * 0.35) + TGrains.ar(2, clk, b, rat, pos, dur, pan, amp, 2));
}.play;
)
// -- Modify
(
~hainsL = 1.1;
~waitT = 0.05;
~durL = 0.05;
~durR = 0.1;
~quietL = 1;
~loudL = 125;
m.allNotesOff(0);
)
// -- Cleanup
(
~trRecv.remove;
)


