////////////////////////////////////////////////////// // // // KOAN for String Quartet by James Tenney (1984) // // // // Digital performance by Thomas Nicholson (2020) // // // ////////////////////////////////////////////////////// ( s.waitForBoot{ // AUDIO SETUP // ~bus = Bus.audio(s, 2); SynthDef(\string, { |freq, dur, vol_tone, vol_spec, bow_pos=1, m=0.15, n=0.31, o=1.5, p=2, q=0, r=0.1| var i, y, z; // the core tone i = Saw.ar(freq); i = LPF.ar(i, freq * 3); i = BLowPass.ar(i, (freq * 17).clip(20,20000), 7); i = BPeakEQ.ar(i, freq * 5/2, 9, -8); i = i!2 * 0.7 * Env([0, vol_tone, vol_tone, 0], [0.15, dur - m, 0.13],'sin').kr(p); i = i * bow_pos; // the spectrum y = DWGBowedTor.ar(freq,0.7,1,0,0.18,1,1,3,0.41,2,1,1,1,1); y = DWGSoundBoard.ar(y); y = BPeakEQ.ar(y, freq, 1, 2); y = BPeakEQ.ar(y, freq/2, 1, 6); y = BPF.ar(y, 430, 1) + y; y = BPF.ar(y, 490, 1) + y; y = BLowPass.ar(y, (freq * 20).clip(20, 20000), 5); y = LPF.ar(y, (freq * 15).clip(20, 20000), 1.5); y = BPeakEQ.ar(y, freq * 5/2, 9, -9); y = HPF.ar(y, freq, -0.23); y = y!2 * 0.4 * Env([0, vol_spec, vol_spec, 0], [0.2, dur - n, 0.2],'sin').kr(q); // subtle bow attack z= WhiteNoise.ar(r) * Env([0, 0.01, 0], [0.05, 0.15, 0.05],'sin').kr(); // summation of signals i = (i * 1) + (y * 1) + (z * 1); Out.ar(~bus, i); }).add; SynthDef(\master, { var sig1, sig2, mix; sig1 = In.ar(~bus, 2); // envelope for sul ponticello effect (spectrum) sig1 = HPF.ar(sig1, Env([20, 20, 330, 10200], [1286.5, 1, 55],\exp).kr()); // envelope for sul ponticello effect (noise) sig2 = WhiteNoise.ar(0.01) * Env([0, 0, 0.02, 0.02, 0], [1287.5, 55, 2.8, 0.1],'sin').kr(); // summation of signals mix = (sig1 * 1.5) + (sig2 * 1.5); Out.ar(0, mix); }).add; s.sync; Synth(\master); // VARIABLES // ~half = 2.5; ~string_E = 440 * 3/2; ~string_A = 440; ~string_D = 440 * 2/3; /////////////// // SECTION A // /////////////// ~violin1_A = ~string_D * Pseq([ Pseq([2/3, 1], 10), Pseq([27/40, 1], 10), Pseq([15/22, 1], 10), Pseq([11/16, 1], 10), Pseq([9/13, 1], 10), Pseq([7/10, 1], 10), Pseq([12/17, 1], 10), Pseq([5/7, 1], 10), Pseq([13/18, 1], 10), Pseq([8/11, 1], 10), Pseq([11/15, 1], 10), Pseq([20/27, 1], 10), Pseq([3/4, 1], 10), Pseq([25/33, 1], 10), Pseq([13/17, 1], 10), Pseq([10/13, 1], 10), Pseq([7/9, 1], 10), Pseq([11/14, 1], 10), Pseq([19/24, 1], 10), Pseq([4/5, 1], 10), Pseq([13/16, 1], 10), Pseq([9/11, 1], 10), Pseq([14/17, 1], 10), Pseq([5/6, 1], 10), Pseq([16/19, 1], 10), Pseq([11/13, 1], 10), Pseq([6/7, 1], 10), Pseq([13/15, 1], 10), Pseq([7/8, 1], 10), Pseq([15/17, 1], 10), Pseq([8/9, 1], 10), Pseq([9/10, 1], 10), Pseq([10/11, 1], 10), Pseq([11/12, 1], 10), Pseq([12/13, 1], 10), Pseq([14/15, 1], 10), Pseq([16/17, 1], 10), Pseq([20/21, 1], 10), Pseq([24/25, 1], 10), Pseq([32/33, 1], 10), Pseq([44/45, 1], 10), Pseq([80/81, 1], 10), Pseq([1, 1], 10), ],1); ~cello_A = ~string_D * Pseq([2/3, [2/3, 1], 1, Pseq([1], 42)],1); ~vln1_A = Pbind(*[ instrument: \string, freq: ~violin1_A, delta: Pseq([~half/10],860), // = 43 bars dur: Pkey(\delta), vol_spec: 0.3, vol_tone: 1, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vc_A = Pbind(*[ instrument: \string, freq: ~cello_A, delta: Pseq([Pseq([~half,3]),Pseq([2*~half],42)],1), // = 43.5 bar dur: Pkey(\delta), vol_spec: 0.18, vol_tone: 0.58, r: 0, ]); /////////////// // SECTION B // /////////////// ~violin1_B = ~string_D * Pseq([ Pseq([1, 1], 10), Pseq([81/80, 1], 10), Pseq([45/44, 1], 10), Pseq([33/32, 1], 10), Pseq([25/24, 1], 10), Pseq([21/20, 1], 10), Pseq([17/16, 1], 10), Pseq([15/14, 1], 10), Pseq([13/12, 1], 10), Pseq([12/11, 1], 10), Pseq([11/10, 1], 10), Pseq([10/9, 1], 10), Pseq([9/8, 1], 10), Pseq([17/15, 1], 10), Pseq([8/7, 1], 10), Pseq([15/13, 1], 10), Pseq([7/6, 1], 10), Pseq([13/11, 1], 10), Pseq([19/16, 1], 10), Pseq([6/5, 1], 10), Pseq([17/14, 1], 10), Pseq([11/9, 1], 10), Pseq([16/13, 1], 10), Pseq([5/4, 1], 10), Pseq([24/19, 1], 10), Pseq([14/11, 1], 10), Pseq([9/7, 1], 10), Pseq([13/10, 1], 10), Pseq([17/13, 1], 10), Pseq([33/25, 1], 10), Pseq([4/3, 1], 10), Pseq([27/20, 1], 10), Pseq([15/11, 1], 10), Pseq([11/8, 1], 10), Pseq([18/13, 1], 10), Pseq([7/5, 1], 10), Pseq([17/12, 1], 10), Pseq([10/7, 1], 10), Pseq([13/9, 1], 10), Pseq([16/11, 1], 10), Pseq([22/15, 1], 10), Pseq([40/27, 1], 10), Pseq([3/2, 1], 10), ],1); ~viola_B = ~string_D * Pseq([ Pseq([1], 2), Pseq([79/80], 2), Pseq([43/44], 2), Pseq([31/32], 2), Pseq([23/24], 2), Pseq([19/20], 2), Pseq([15/16], 2), Pseq([13/14], 2), Pseq([11/12], 2), Pseq([10/11], 2), Pseq([9/10], 2), Pseq([8/9], 2), Pseq([7/8], 2), Pseq([13/15], 2), Pseq([6/7], 2), Pseq([11/13], 2), Pseq([5/6], 2), Pseq([9/11], 2), Pseq([13/16], 2), Pseq([4/5], 2), Pseq([11/14], 2), Pseq([7/9], 2), Pseq([10/13], 2), Pseq([3/4], 2), Pseq([14/19], 2), Pseq([8/11], 2), Pseq([5/7], 2), Pseq([7/10], 2), Pseq([9/13], 2), Pseq([17/25], 2), Pseq([2/3], 2), Pseq([13/20], 2), Pseq([7/11], 2), Pseq([5/8], 2), Pseq([8/13], 2), Pseq([3/5], 2), Pseq([7/12], 2), Pseq([4/7], 2), Pseq([5/9], 2), Pseq([6/11], 2), Pseq([8/15], 2), Pseq([14/27], 2), Pseq([1/2], 2), ],1); ~cello_B = ~string_D * Pseq([ Pseq([1], 43), ],1); ~vln1_B = Pbind(*[ instrument: \string, freq: ~violin1_B, delta: Pseq([~half/10],860), // = 43 bars dur: Pkey(\delta), vol_spec: 0.3, vol_tone: 1, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vla_B = Pbind(*[ instrument: \string, freq: ~viola_B, delta: Pseq([~half],86), // = 43 bars dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, r: 0, ]); ~vc_B = Pbind(*[ instrument: \string, freq: ~cello_B, delta: Pseq([2*~half],43), // = 43 bars dur: Pkey(\delta), vol_spec: 0.18, vol_tone: 0.58, r: 0, ]); /////////////// // SECTION C // /////////////// ~violin1_C = ~string_A * Pseq([ Pseq([1, 2/3], 10), Pseq([1, 27/40], 10), Pseq([1, 15/22], 10), Pseq([1, 11/16], 10), Pseq([1, 9/13], 10), Pseq([1, 7/10], 10), Pseq([1, 12/17], 10), Pseq([1, 5/7], 10), Pseq([1, 13/18], 10), Pseq([1, 8/11], 10), Pseq([1, 11/15], 10), Pseq([1, 20/27], 10), Pseq([1, 3/4], 10), Pseq([1, 25/33], 10), Pseq([1, 13/17], 10), Pseq([1, 10/13], 10), Pseq([1, 7/9], 10), Pseq([1, 11/14], 10), Pseq([1, 19/24], 10), Pseq([1, 4/5], 10), Pseq([1, 13/16], 10), Pseq([1, 9/11], 10), Pseq([1, 14/17], 10), Pseq([1, 5/6], 10), Pseq([1, 16/19], 10), Pseq([1, 11/13], 10), Pseq([1, 6/7], 10), Pseq([1, 13/15], 10), Pseq([1, 7/8], 10), Pseq([1, 15/17], 10), Pseq([1, 8/9], 10), Pseq([1, 9/10], 10), Pseq([1, 10/11], 10), Pseq([1, 11/12], 10), Pseq([1, 12/13], 10), Pseq([1, 14/15], 10), Pseq([1, 16/17], 10), Pseq([1, 20/21], 10), Pseq([1, 24/25], 10), Pseq([1, 32/33], 10), Pseq([1, 44/45], 10), Pseq([1, 80/81], 10), Pseq([1, 1], 10), ],1); ~viola_C = ~string_A * Pseq([ Pseq([1/3], 2), Pseq([7/20], 2), Pseq([4/11], 2), Pseq([3/8], 2), Pseq([5/13], 2), Pseq([2/5], 2), Pseq([7/17], 2), Pseq([3/7], 2), Pseq([4/9], 2), Pseq([5/11], 2), Pseq([7/15], 2), Pseq([13/27], 2), Pseq([1/2], 2), Pseq([17/33], 2), Pseq([9/17], 2), Pseq([7/13], 2), Pseq([5/9], 2), Pseq([4/7], 2), Pseq([7/12], 2), Pseq([3/5], 2), Pseq([5/8], 2), Pseq([7/11], 2), Pseq([11/17], 2), Pseq([2/3], 2), Pseq([13/19], 2), Pseq([9/13], 2), Pseq([5/7], 2), Pseq([11/15], 2), Pseq([3/4], 2), Pseq([13/17], 2), Pseq([7/9], 2), Pseq([4/5], 2), Pseq([9/11], 2), Pseq([5/6], 2), Pseq([11/13], 2), Pseq([13/15], 2), Pseq([15/17], 2), Pseq([19/21], 2), Pseq([23/25], 2), Pseq([31/33], 2), Pseq([43/45], 2), Pseq([79/81], 2), Pseq([1], 2), ],1); ~cello_C = ~string_A * Pseq([ Pseq([1], 43), ],1); ~vln1_C = Pbind(*[ instrument: \string, freq: ~violin1_C, delta: Pseq([~half/10],860), // = 43 bars dur: Pkey(\delta), vol_spec: 0.3, vol_tone: 1, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vla_C = Pbind(*[ instrument: \string, freq: ~viola_C, delta: Pseq([~half],86), // = 43 bars dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, r: 0, ]); ~vc_C = Pbind(*[ instrument: \string, freq: ~cello_C, delta: Pseq([2*~half],43), // = 43 bars dur: Pkey(\delta), vol_spec: 0.18, vol_tone: 0.58, r: 0, ]); /////////////// // SECTION D // /////////////// ~violin1_D = ~string_A * Pseq([ Pseq([1, 1], 10), Pseq([1, 81/80], 10), Pseq([1, 45/44], 10), Pseq([1, 33/32], 10), Pseq([1, 25/24], 10), Pseq([1, 21/20], 10), Pseq([1, 17/16], 10), Pseq([1, 15/14], 10), Pseq([1, 13/12], 10), Pseq([1, 12/11], 10), Pseq([1, 11/10], 10), Pseq([1, 10/9], 10), Pseq([1, 9/8], 10), Pseq([1, 17/15], 10), Pseq([1, 8/7], 10), Pseq([1, 15/13], 10), Pseq([1, 7/6], 10), Pseq([1, 13/11], 10), Pseq([1, 19/16], 10), Pseq([1, 6/5], 10), Pseq([1, 17/14], 10), Pseq([1, 11/9], 10), Pseq([1, 16/13], 10), Pseq([1, 5/4], 10), Pseq([1, 24/19], 10), Pseq([1, 14/11], 10), Pseq([1, 9/7], 10), Pseq([1, 13/10], 10), Pseq([1, 17/13], 10), Pseq([1, 33/25], 10), Pseq([1, 4/3], 10), Pseq([1, 27/20], 10), Pseq([1, 15/11], 10), Pseq([1, 11/8], 10), Pseq([1, 18/13], 10), Pseq([1, 7/5], 10), Pseq([1, 17/12], 10), Pseq([1, 10/7], 10), Pseq([1, 13/9], 10), Pseq([1, 16/11], 10), Pseq([1, 22/15], 10), Pseq([1, 40/27], 10), Pseq([1, 3/2], 10), ],1); ~violin2_D = ~string_A * Pseq([ Pseq([1], 2), Pseq([41/40], 2), Pseq([23/22], 2), Pseq([17/16], 2), Pseq([13/12], 2), Pseq([11/10], 2), Pseq([9/8], 2), Pseq([8/7], 2), Pseq([7/6], 2), Pseq([13/11], 2), Pseq([6/5], 2), Pseq([11/9], 2), Pseq([5/4], 2), Pseq([19/15], 2), Pseq([9/7], 2), Pseq([17/13], 2), Pseq([4/3], 2), Pseq([15/11], 2), Pseq([11/8], 2), Pseq([7/5], 2), Pseq([10/7], 2), Pseq([13/9], 2), Pseq([19/13], 2), Pseq([3/2], 2), Pseq([29/19], 2), Pseq([17/11], 2), Pseq([11/7], 2), Pseq([8/5], 2), Pseq([21/13], 2), Pseq([41/25], 2), Pseq([5/3], 2), Pseq([17/10], 2), Pseq([19/11], 2), Pseq([7/4], 2), Pseq([23/13], 2), Pseq([9/5], 2), Pseq([11/6], 2), Pseq([13/7], 2), Pseq([17/9], 2), Pseq([21/11], 2), Pseq([29/15], 2), Pseq([53/27], 2), Pseq([2/1], 2), ],1); ~viola_D = ~string_A * Pseq([ 1, Pseq([79/80], 2), Pseq([43/44], 2), Pseq([31/32], 2), Pseq([23/24], 2), Pseq([19/20], 2), Pseq([15/16], 2), Pseq([13/14], 2), Pseq([11/12], 2), Pseq([10/11], 2), Pseq([9/10], 2), Pseq([8/9], 2), Pseq([7/8], 2), Pseq([13/15], 2), Pseq([6/7], 2), Pseq([11/13], 2), Pseq([5/6], 2), Pseq([9/11], 2), Pseq([13/16], 2), Pseq([4/5], 2), Pseq([11/14], 2), Pseq([7/9], 2), Pseq([10/13], 2), Pseq([3/4], 2), Pseq([14/19], 2), Pseq([8/11], 2), Pseq([5/7], 2), Pseq([7/10], 2), Pseq([9/13], 2), Pseq([17/25], 2), Pseq([2/3], 2), Pseq([13/20], 2), Pseq([7/11], 2), Pseq([5/8], 2), Pseq([8/13], 2), Pseq([3/5], 2), Pseq([7/12], 2), Pseq([4/7], 2), Pseq([5/9], 2), Pseq([6/11], 2), Pseq([8/15], 2), Pseq([14/27], 2), Pseq([1/2], 2), ],1); ~cello_D = ~string_A * Pseq([ Pseq([1], 43), ],1); ~vln1_D = Pbind(*[ instrument: \string, freq: ~violin1_D, delta: Pseq([~half/10],860), // = 43 bars dur: Pkey(\delta), vol_spec: 0.3, vol_tone: 1, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vln2_D = Pbind(*[ instrument: \string, freq: ~violin2_D, delta: Pseq([~half],86), // = 43 bars dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, r: 0, ]); ~vla_D = Pbind(*[ instrument: \string, freq: ~viola_D, delta: Pseq([~half],85), // = 42.5 bars dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, r: 0, ]); ~vc_D = Pbind(*[ instrument: \string, freq: ~cello_D, delta: Pseq([2*~half],43), // = 43 bars dur: Pkey(\delta), vol_spec: 0.18, vol_tone: 0.58, r: 0, ]); /////////////// // SECTION E // /////////////// ~violin1_E = ~string_E * Pseq([ Pseq([2/3, 1], 10), Pseq([27/40, 1], 10), Pseq([15/22, 1], 10), Pseq([11/16, 1], 10), Pseq([9/13, 1], 10), Pseq([7/10, 1], 10), Pseq([12/17, 1], 10), Pseq([5/7, 1], 10), Pseq([13/18, 1], 10), Pseq([8/11, 1], 10), Pseq([11/15, 1], 10), Pseq([20/27, 1], 10), Pseq([3/4, 1], 10), Pseq([25/33, 1], 10), Pseq([13/17, 1], 10), Pseq([10/13, 1], 10), Pseq([7/9, 1], 10), Pseq([11/14, 1], 10), Pseq([19/24, 1], 10), Pseq([4/5, 1], 10), Pseq([13/16, 1], 10), Pseq([9/11, 1], 10), Pseq([14/17, 1], 10), Pseq([5/6, 1], 10), Pseq([16/19, 1], 10), Pseq([11/13, 1], 10), Pseq([6/7, 1], 10), Pseq([13/15, 1], 10), Pseq([7/8, 1], 10), Pseq([15/17, 1], 10), Pseq([8/9, 1], 10), Pseq([9/10, 1], 10), Pseq([10/11, 1], 10), Pseq([11/12, 1], 10), Pseq([12/13, 1], 10), Pseq([14/15, 1], 10), Pseq([16/17, 1], 10), Pseq([20/21, 1], 10), Pseq([24/25, 1], 10), Pseq([32/33, 1], 10), Pseq([44/45, 1], 10), Pseq([80/81, 1], 10), Pseq([1, 1], 10), ],1); ~violin2_E = ~string_E * Pseq([ Pseq([4/3], 2), Pseq([53/40], 2), Pseq([29/22], 2), Pseq([21/16], 2), Pseq([17/13], 2), Pseq([13/10], 2), Pseq([22/17], 2), Pseq([9/7], 2), Pseq([23/18], 2), Pseq([14/11], 2), Pseq([19/15], 2), Pseq([34/27], 2), Pseq([5/4], 2), Pseq([41/33], 2), Pseq([21/17], 2), Pseq([16/13], 2), Pseq([11/9], 2), Pseq([17/14], 2), Pseq([29/24], 2), Pseq([6/5], 2), Pseq([19/16], 2), Pseq([13/11], 2), Pseq([20/17], 2), Pseq([7/6], 2), Pseq([22/19], 2), Pseq([15/13], 2), Pseq([8/7], 2), Pseq([17/15], 2), Pseq([9/8], 2), Pseq([19/17], 2), Pseq([10/9], 2), Pseq([11/10], 2), Pseq([12/11], 2), Pseq([13/12], 2), Pseq([14/13], 2), Pseq([16/15], 2), Pseq([18/17], 2), Pseq([22/21], 2), Pseq([26/25], 2), Pseq([34/33], 2), Pseq([46/45], 2), Pseq([79/81], 2), Pseq([1/1], 2), ],1); ~viola_E = ~string_E * Pseq([ Pseq([1/3], 2), Pseq([7/20], 2), Pseq([4/11], 2), Pseq([3/8], 2), Pseq([5/13], 2), Pseq([2/5], 2), Pseq([7/17], 2), Pseq([3/7], 2), Pseq([4/9], 2), Pseq([5/11], 2), Pseq([7/15], 2), Pseq([13/27], 2), Pseq([1/2], 2), Pseq([17/33], 2), Pseq([9/17], 2), Pseq([7/13], 2), Pseq([5/9], 2), Pseq([4/7], 2), Pseq([7/12], 2), Pseq([3/5], 2), Pseq([5/8], 2), Pseq([7/11], 2), Pseq([11/17], 2), Pseq([2/3], 2), Pseq([13/19], 2), Pseq([9/13], 2), Pseq([5/7], 2), Pseq([11/15], 2), Pseq([3/4], 2), Pseq([13/17], 2), Pseq([7/9], 2), Pseq([4/5], 2), Pseq([9/11], 2), Pseq([5/6], 2), Pseq([11/13], 2), Pseq([13/15], 2), Pseq([15/17], 2), Pseq([19/21], 2), Pseq([23/25], 2), Pseq([31/33], 2), Pseq([43/45], 2), Pseq([79/81], 2), Pseq([1], 2), ],1); ~cello_E = ~string_E * Pseq([ Pseq([1], 43), ],1); ~vln1_E = Pbind(*[ instrument: \string, freq: ~violin1_E, delta: Pseq([~half/10],860), // = 43 bars dur: Pkey(\delta), vol_spec: 0.3, vol_tone: 1, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vln2_E = Pbind(*[ instrument: \string, freq: ~violin2_E, delta: Pseq([~half],86), // = 43 bars dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, r: 0, ]); ~vla_E = Pbind(*[ instrument: \string, freq: ~viola_E, delta: Pseq([~half],86), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, r: 0, ]); ~vc_E = Pbind(*[ instrument: \string, freq: ~cello_E, delta: Pseq([Pseq([2*~half],42),~half],1), // 42.5 bars dur: Pkey(\delta), vol_spec: 0.18, vol_tone: 0.58, r: 0, ]); /////////////// // SECTION F // /////////////// ~violin1_F = ~string_E * Pseq([ Pseq([1, 1], 10), Pseq([81/80, 1], 10), Pseq([45/44, 1], 10), Pseq([33/32, 1], 10), Pseq([25/24, 1], 10), Pseq([21/20, 1], 10), Pseq([17/16, 1], 10), Pseq([15/14, 1], 10), Pseq([13/12, 1], 10), Pseq([12/11, 1], 10), Pseq([11/10, 1], 10), Pseq([10/9, 1], 10), Pseq([9/8, 1], 10), Pseq([17/15, 1], 10), Pseq([8/7, 1], 10), Pseq([15/13, 1], 10), Pseq([7/6, 1], 10), Pseq([13/11, 1], 10), Pseq([19/16, 1], 10), Pseq([6/5, 1], 10), Pseq([17/14, 1], 10), Pseq([11/9, 1], 10), Pseq([16/13, 1], 10), Pseq([5/4, 1], 10), Pseq([24/19, 1], 10), Pseq([14/11, 1], 10), Pseq([9/7, 1], 10), Pseq([13/10, 1], 10), Pseq([17/13, 1], 10), Pseq([33/25, 1], 10), Pseq([4/3, 1], 10), Pseq([27/20, 1], 10), Pseq([15/11, 1], 10), Pseq([11/8, 1], 10), Pseq([18/13, 1], 10), Pseq([7/5, 1], 10), Pseq([17/12, 1], 10), Pseq([10/7, 1], 10), Pseq([13/9, 1], 10), Pseq([16/11, 1], 10), Pseq([22/15, 1], 10), Pseq([40/27, 1], 10), ],1); ~violin2_F = ~string_E * Pseq([ 1, Pseq([83/80], 2), Pseq([47/44], 2), Pseq([35/32], 2), Pseq([9/8], 2), Pseq([23/20], 2), Pseq([19/16], 2), Pseq([17/14], 2), Pseq([5/4], 2), Pseq([14/11], 2), Pseq([13/10], 2), Pseq([4/3], 2), Pseq([11/8], 2), Pseq([7/5], 2), Pseq([10/7], 2), Pseq([19/13], 2), Pseq([3/2], 2), Pseq([17/11], 2), Pseq([25/16], 2), Pseq([8/5], 2), Pseq([23/14], 2), Pseq([5/3], 2), Pseq([22/13], 2), Pseq([7/4], 2), Pseq([34/19], 2), Pseq([20/11], 2), Pseq([13/7], 2), Pseq([19/10], 2), Pseq([25/13], 2), Pseq([49/25], 2), Pseq([2], 2), Pseq([41/20], 2), Pseq([23/11], 2), Pseq([17/8], 2), Pseq([28/13], 2), Pseq([11/5], 2), Pseq([9/4], 2), Pseq([16/7], 2), Pseq([7/3], 2), Pseq([26/11], 2), Pseq([12/5], 2), Pseq([22/9], 2), ],1); ~viola_F = ~string_E * Pseq([ 1, Pseq([79/80], 2), Pseq([43/44], 2), Pseq([31/32], 2), Pseq([23/24], 2), Pseq([19/20], 2), Pseq([15/16], 2), Pseq([13/14], 2), Pseq([11/12], 2), Pseq([10/11], 2), Pseq([9/10], 2), Pseq([8/9], 2), Pseq([7/8], 2), Pseq([13/15], 2), Pseq([6/7], 2), Pseq([11/13], 2), Pseq([5/6], 2), Pseq([9/11], 2), Pseq([13/16], 2), Pseq([4/5], 2), Pseq([11/14], 2), Pseq([7/9], 2), Pseq([10/13], 2), Pseq([3/4], 2), Pseq([14/19], 2), Pseq([8/11], 2), Pseq([5/7], 2), Pseq([7/10], 2), Pseq([9/13], 2), Pseq([17/25], 2), Pseq([2/3], 2), Pseq([13/20], 2), Pseq([7/11], 2), Pseq([5/8], 2), Pseq([8/13], 2), Pseq([3/5], 2), Pseq([7/12], 2), Pseq([4/7], 2), Pseq([5/9], 2), Pseq([6/11], 2), Pseq([8/15], 2), Pseq([14/27], 2), ],1); ~cello_F = ~string_E * Pseq([ Pseq([1], 2), Pseq([39/40], 2), Pseq([21/22], 2), Pseq([15/16], 2), Pseq([11/12], 2), Pseq([9/10], 2), Pseq([7/8], 2), Pseq([6/7], 2), Pseq([5/6], 2), Pseq([9/11], 2), Pseq([4/5], 2), Pseq([7/9], 2), Pseq([3/4], 2), Pseq([11/15], 2), Pseq([5/7], 2), Pseq([9/13], 2), Pseq([2/3], 2), Pseq([7/11], 2), Pseq([5/8], 2), Pseq([3/5], 2), Pseq([4/7], 2), Pseq([5/9], 2), Pseq([7/13], 2), Pseq([1/2], 2), Pseq([9/19], 2), Pseq([5/11], 2), Pseq([3/7], 2), Pseq([2/5], 2), Pseq([5/13], 2), Pseq([9/25], 2), Pseq([1/3], 2), Pseq([3/10], 2), Pseq([3/11], 2), Pseq([1/4], 2), Pseq([3/13], 2), Pseq([1/5], 2), Pseq([1/6], 2), Pseq([1/7], 2), Pseq([1/9], 2), Pseq([1/11], 2), Pseq([2/15], 2), Pseq([2/27], 2), ],1); ~vln1_F = Pbind(*[ instrument: \string, freq: ~violin1_F, delta: Pseq([Pseq([~half/10],839),1],1), // = 43 bars dur: Pkey(\delta), vol_spec: 0.3, vol_tone: 1, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vln2_F = Pbind(*[ instrument: \string, freq: ~violin2_F, delta: Pseq([Pseq([~half],82),~half+0.75],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, ]); ~vla_F = Pbind(*[ instrument: \string, freq: ~viola_F, delta: Pseq([Pseq([~half],82),~half+0.75],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, ]); ~vc_F = Pbind(*[ instrument: \string, freq: ~cello_F, delta: Pseq([Pseq([~half],83),~half+0.75],1), dur: Pkey(\delta), vol_spec: 0.5, vol_tone: 0.8, ]); /////////////// // SECTION F // /////////////// ~violin1_G = ~string_E * Pseq([ Pseq([3/2, 1], 220), ],1); ~violin2_G = ~string_E * Pseq([ Pseq([5/2], 22), ],1); ~viola_G = ~string_E * Pseq([ Pseq([1/2], 22), ],1); ~cello_G = ~string_E * Pseq([ Pseq([3/2], 22), ],1); ~vln1_G = Pbind(*[ instrument: \string, freq: ~violin1_G, delta: Pseq([Pseq([~half/10],219),~half+(~half/10)],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, m: 0.04, n: 0.12, o: 1.13, p: 0, q: 2, r: 0, ]); ~vln2_G = Pbind(*[ instrument: \string, freq: ~violinG_F, delta: Pseq([Pseq([~half],21),2*~half],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, ]); ~vla_G = Pbind(*[ instrument: \string, freq: ~viola_G, delta: Pseq([Pseq([~half],21),2*~half],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, ]); ~vc_G = Pbind(*[ instrument: \string, freq: ~cello_G, delta: Pseq([Pseq([~half],21),2*~half],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, ]); ~chords = Pbind(*[ instrument: \string, freq: ~cello_G, delta: Pseq([Pseq([~half],21),2*~half],1), dur: Pkey(\delta), vol_spec: 0.2, vol_tone: 0.7, ]); ~chords = [ // A "KOAN for String Quartet\nby James Tenney (1984)\n\nSECTION A\n---------\n2 : 3", "27 : 40", "15 : 22", "11 : 16", "9 : 13", "7 : 10", "12 : 17", "5 : 7", "13 : 18", "8 : 11", "11 : 15", "20 : 27", "3 : 4", "25 : 33", "13 : 17", "10 : 13", "7 : 9", "11 : 14", "19 : 24", "4 : 5", "13 : 16", "9 : 11", "14 : 17", "5 : 6", "16 : 19", "11 : 13", "6 : 7", "13 : 15", "7 : 8", "15 : 17", "8 : 9", "9 : 10", "10 : 11", "11 : 12", "12 : 13", "14 : 15", "16 : 17", "20 : 21", "24 : 25", "32 : 33", "44 : 45", "80 : 81", "1 : 1", // B "\nSECTION B\n---------\n1 : 1 : 1", "79 : 80 : 81", "43 : 44 : 45", "31 : 32 : 33", "23 : 24 : 25", "19 : 20 : 21", "15 : 16 : 17", "13 : 14 : 15", "11 : 12 : 13", "10 : 11 : 12", "9 : 10 : 11", "8 : 9 : 10", "7 : 8 : 9", "13 : 15 : 17", "6 : 7 : 8", "11 : 13 : 15", "5 : 6 : 7", "9 : 11 : 13", "13 : 16 : 19", "4 : 5 : 6", "11 : 14 : 17", "7 : 9 : 11", "10 : 13 : 16", "3 : 4 : 5", "14 : 19 : 24", "8 : 11 : 14", "5 : 7 : 9", "7 : 10 : 13", "9 : 13 : 17", "17 : 25 : 33", "2 : 3 : 4", "13 : 20 : 27", "7 : 11 : 15", "5 : 8 : 11", "8 : 13 : 18", "3 : 5 : 7", "7 : 12 : 17", "4 : 7 : 10", "5 : 9 : 13", "6 : 11 : 16", "8 : 15 : 22", "14 : 27 : 40", "1 : 2 : 3", ]; ~sequence = {|chords| i = 0; while ( { i < 257 }, { chords[i].postln; i = i + 1; (2 * ~half).wait; }); }; //////////////////////// // Playback Sequences // //////////////////////// Ppar([ // Violin 1 // Pseq([ ~vln1_A, ~vln1_B, ~vln1_C, ~vln1_D, ~vln1_E, ~vln1_F, Rest.new(~half - 0.75), ~vln1_G, ],1).play, // Violin 2 // Pseq([ Rest.new(2 * ~half * 43 * 3), ~vln2_D, ~vln2_E, Rest.new(~half), ~vln2_F, Rest.new(~half - 0.75), ~vln2_G, ],1).play, // Viola // Pseq([ Rest.new(2 * ~half * 43), ~vla_B, ~vla_C, Rest.new(~half), ~vla_D, ~vla_E, Rest.new(~half), ~vla_F, Rest.new(~half - 0.75), ~vla_G, ],1).play, // Cello // Pseq([ ~vc_A, ~vc_B, ~vc_C, ~vc_D, ~vc_E, ~vc_F, Rest.new(~half - 0.75), ~vc_G, ],1).play, Routine {0.2.wait; ~sequence.(~chords); }.play; ],1); /////////////// // RECORDING // /////////////// // uncomment to record a wav file //s.recHeaderFormat = "wav"; //s.record; } ) // end of program