From b9321ff9b15e1cd4f200f3f7b6f25db1cdcb59b2 Mon Sep 17 00:00:00 2001 From: Rob Canning Date: Thu, 12 Jan 2023 01:51:44 +0100 Subject: [PATCH] microcompositions added to midimother --- midimother.scd | 269 +++++++++++++++++++++++++++++++++++++++++---- motherPatterns.scd | 133 +++++++++++++++++++--- 2 files changed, 362 insertions(+), 40 deletions(-) diff --git a/midimother.scd b/midimother.scd index 186daae..e589ff4 100644 --- a/midimother.scd +++ b/midimother.scd @@ -1,50 +1,275 @@ "/home/rob/gtr/motherMIDISetup.scd".load; + TempoClock.default.tempo = 60/60; + +~xx = ( +Pdef(\m_1).play(quant: 4); // TOP MOTHER +Pdef(\m_1_CC).play(quant:4); // CC 1 +Pdef(\m_2).play(quant: 4); // BTM MOTHER NOTEON +Pdef(\m_2_CC).play(quant:4); // CC 1 +) + +Pdef(\m_1).stop; // NOTEON +Pdef(\m_1_CC).stop; +Pdef(\m_2).stop; // NOTEON +Pdef(\m_2_CC).stop; + //////////////////////////////////////// Pdef(\m_1).play(quant: 4); // TOP MOTHER -Pdef(\m_1).stop; // NOTEON Pdef(\m_1_CC).play(quant:4); // CC 1 +Pdef(\m_1).stop; // NOTEON Pdef(\m_1_CC).stop; // --------------- / Pdef(\m_2).play(quant: 4); // BTM MOTHER NOTEON -Pdef(\m_2).stop; // NOTEON Pdef(\m_2_CC).play(quant:4); // CC 1 +Pdef(\m_2).stop; // NOTEON Pdef(\m_2_CC).stop; ////////////////////////////// Pbindef(\m_1,\scale,~s1,\degree,~d4,\dur,~r1,\octave,~o2, \mtranspose,0); Pbindef(\m_2,\scale,~s1,\degree,~d4,\dur,~r2,\octave,~o2, \mtranspose,0); + // indiviudal controls ////////////// Pbindef(\m_1, \root, 4); Pbindef(\m_2, \root, 4); Pbindef(\m_1, \mtranspose, 0); Pbindef(\m_2, \mtranspose, 0); Pbindef(\m_1, \scale, ~s1 ); Pbindef(\m_2, \scale, ~s1); Pbindef(\m_1, \octave, ~o0); Pbindef(\m_2, \octave, 2); Pbindef(\m_1, \dur, ~r4); Pbindef(\m_2, \dur, ~r0); -Pbindef(\m_1, \degree, ~d6); Pbindef(\m_2, \degree, ~d3); -// ground bass figure // chromatic // -Pbindef(\m_1, \dur, 8, \octave, 3, \scale,~s4,\degree,~d8, inf); -Pbindef(\m_2, \dur, 9, \octave, 2, \scale,~s4,\degree,~d8, inf); +Pbindef(\m_1, \degree, ~ddd); Pbindef(\m_2, \degree, ~ddd); + +// ------------------- +// variation for piano webern op27 mvt3 +// sustain ON - decay full + +//~row0 = [3, 11, 10, 2, 1, 0, 6, 4, 7, 5, 9, 8]; + +~op = Scale.new(#[3, 11, 10, 2, 1, 0, 6, 4, 7, 5, 9, 8], name: "op27_III"); + +~vfp3 = Pseq(~row0, 4); +~vfp3_reverse = Pseq(~row0.reverse, 4); + +~vfp2 = Pseq([4,5,1,3,0,2,8,9,10,6,7,11], 4); +~vfp2_reverse = Pseq([4,5,1,3,0,2,8,9,10,6,7,11].reverse, 4); + +~fib = Pseq([2,3.5,8,13,21], 4); // four interations of fibonnaci duration sequence +~fibr = Pseq([2,3.5,8,13,21].reverse, 4); // counterpoint rhythmic inversion + +// change from dur 8 to ~fib + +Pbindef(\m_1, \dur, ~fib, \octave, 7, \scale,~s4,\degree,~vfp2, inf); +Pbindef(\m_2, \dur, ~fibr, \octave, 2, \scale,~s4,\degree,~vfp2_reverse, inf); + +( Pdef(\m_1_CC, Pbind( \type, \midi, \midicmd, \control, \midiout, ~m32_1, + \ctlNum, 1, \control, Pexprand(77,127, inf) ,\dur, 1/16)).play(quant:4)); + +Pdef(\m_2_CC, Pbind( \type, \midi, \midicmd, \control, \midiout, ~m32_2, \ctlNum, 1, \control, Pexprand(77,127, inf), \dur, 1/16 )).play(quant:4); + + + +// rhinosorous /////////////////////////////////// + +TempoClock.default.tempo = 90/60; + +~durs = [1/16,1/8, 3/16, 1/4, 1/3, 3/8, 1/2, 5/8, 2/3, 3/4, 7/8, 1, 5/4, 2]; //16 beats + +~wdurs = Pwrand([1/8, 1/4, 1/3, 1/2, 2, 6, 10, Rest(1)],[50, 30, 20, 10, 35, 20 ,10, 30].normalizeSum, inf); +~wdurs1 = Pwrand([1/16, 1/8, 1/6, 1/4, 1],[50, 30, 20, 10, 20].normalizeSum, inf); + +~drnd1 = Pconst(16, Pxrand(~durs, ~durs.size)); // 16 beats of rnd durs +~dgauss0 = Pfindur(16, Pgauss(0,1, inf) ); + +~op = Scale.new(#[3, 11, 10, 2, 1, 0, 6, 4, 7, 5, 9, 8], name: "op27_III"); + +~df = Pseq([1,1,3,1,1,1,5,1,2,1,8,1,13],1); + +~durpat = Pseq([ // .sum to check + 1,1,3,1,1,1,5,1,2,1,8,1,13, + Pconst(32, ~wdurs), + Pseq([Pn(1/16, 8), 4,3.5], 1), // 8 + 1,1,3,1,1,1,5,1,2,1,8,1,13, + Pseq([1/2, 1/2, 1/2, 1/6, 1/6, 1/6, 5], 4), // 28 + Pseq([1/6,1/6,1/6,1/6,1/6,1/6, 3], 4), // 16 + //Pseq([1/6,1/6,1/6,1/6,1/6,1/6], 4), + //Pseq([3/8, 1/8, 1/6, 1/6, 1/6, Rest(3), 2 ], 8), + Pconst(21, Pseq([5,3,5,8],1)), + Rest(32) +], 1); + +~octptn = Pseq([ + Pfin(13, Pn(4,inf)), + Pconst(32, Pn(7,inf)), + Pconst(8, Pn(3, inf)), + + Pfin(13, Pn(4,inf)), + + Pconst(28, Pn(7,inf)), + Pconst(16, Pn(5,inf)), + Pconst(21, Pn(4,inf)), + +], inf); + +//~deg = Pseq((0..11) ++ Pseq([8,9,10,11],3) ++ (11..0) ++ [\rest], 1); +//~deg = Pseq((0..11) ++ [\rest], 4); + +~prime = Pseq( (0..11) , 1); +~retro = Pseq( (11..0) , 1); + +~melodyA = Pseq([~prime, ~prime, ~retro], inf); +~melodyB = Pseq([~prime, ~retro, ~prime], inf); + +Pbindef(\m_1, \dur, ~durpat, \octave, ~octptn, \scale, ~op, \degree,~melodyA); +Pbindef(\m_2, \dur, ~durpat, \octave, 3, \scale,~op, \degree,~melodyB, inf); + +//Pchain + +Pdef(\m_1).play(quant: 4); // TOP MOTHER +Pdef(\m_2).play(quant: 4); // TOP MOTHER + +Pdef(\m_1).stop; +Pdef(\m_2).stop; + + + +//////////////////////////////////// + +TempoClock.default.tempo = 30/60; + +~drepeat = Pseq([ +Pseq([0],16), +Pseq([7,8,9],4), +Pseq([9],16), +Pseq([1,3,5],5), +Pseq([2],16), +Pseq([8],16), +Pseq([10,9,4],6), +Pseq([10],16), +Pseq([10,11],8), +], 4); + +~rp0 = 1/8; + +~rp1 = Pseq([ + 1/8, + 1/8, + 1/16, + 1/16, + 1/16, + 1/16, + + 1/8, + 1/8, + 1/16, + 1/16, + 1/16, + 1/16 ], 1); + +~rp2 = Pseq([ + 1/8, + 1/8, + 1/16, + 1/16, + 1/16, + 1/16, + 1/8, + 1/8, + Rest(1) +],1); + +~pr = Pseq([ + Pseq([~rp0],16), + Pseq([~rp2],4), + Pseq([~rp0],16), + Pseq([~rp2],1), + Pseq([~rp1],4)], +4); + +~pr2 = Pseq([ + Pseq([~rp2],4), + Pseq([~rp0],16), + Pseq([~rp0],16), + Pseq([~rp2],1), + Pseq([~rp1],4)], +4); + +Pbindef(\m_1, \scale,~s4,\degree,~drepeat,\octave, ~o1,\dur, ~pr ); +Pbindef(\m_2, \scale,~s4,\degree,~drepeat,\octave, ~o3,\dur, ~pr2 ); + +Pbindef(\m_1, \octave, 4, \dur, ~r0 ); +Pbindef(\m_2, \octave, 6, \dur, ~r0 ); + +///////////////////////////////////////////////////// + +//// MINIMAL BAROQUE GROOVE + +~r0 = Pn(1/8, 16); + +TempoClock.default.tempo = 60/60; + +~rx0 = Pwrand([1/8, 1/4, 1/2, 4],[80,50,20,20].normalizeSum, 1); +~rx1 = Pwrand([1/8, 1/4, 1/2, 1],[80,50,20,20].normalizeSum, 1); +~rx2 = Pwrand([1/8, 1/4, 1/2],[80,50,20].normalizeSum, 1); +~rx3 = Pwrand([1/8, 1/4],[90,30].normalizeSum, 1); + +~rs = Pseq([ + Pconst(32, Pseq([~rx0],inf)), + Pconst(32, Pseq([~r0],inf)), + + /*Pconst(32, Pseq([~rx0],inf)), + + Pseq([~rx2],32), + Pseq([~rx3],32), + + Pseq([~r03],8), + Pseq([~r04],8), + Pseq([~r0],8), + Pseq([~r0],8), + Pseq([~r04],8), + //Pseq([~r16],8), + Pseq([~r0],inf),*/ +],1); + +~rb = Pseq([ + Pconst(32, Pseq([~rx0],inf)), + Pconst(32, Pseq([~r0],inf)), + + // + // Pseq([~rx0],32), + // Pseq([~rx1],32), + // Pseq([~rx2],32), + // Pseq([~rx3],32), + // + // Pseq([~r03],8), + // Pseq([~r04],8), + // Pseq([~r0],8), + // Pseq([~r0],8), + // Pseq([~r04],8), + // //Pseq([~r16],8), + // Pseq([~r0],inf), +],1); + +Pbindef(\m_1, \scale,~s0,\degree,~ddd,\octave, ~oo,\dur,~rs ); +Pbindef(\m_2, \scale,~s0,\degree,~ddd,\octave, ~o1,\dur,~rb ); + +Pdef(\m_1).play(quant: 4); // TOP MOTHER +Pdef(\m_2).play(quant: 4); // BTM MOTHER NOTEON + +// CC Control Message 1 ---> TOP Mother32 ASSIGN OUT +( Pdef(\m_1_CC, Pbind( \type, \midi, \midicmd, \control, \midiout, ~m32_1, + \ctlNum, 1, \control, Pexprand(50,127, inf),\dur, 1/16)).play(quant:4)); + +// CC Control Message 1 ---> BOTTOM Mother32 ASSIGN OUT +Pdef(\m_2_CC, Pbind( \type, \midi, \midicmd, \control, \midiout, ~m32_2, \ctlNum, 1, \control, Pexprand(77,127, inf), \dur, 1/8 )).play(quant:4); + // quasi-extended serialism Pbindef(\m_1, \scale,~s4,\degree,~d6,\octave,~o3,\dur,~phrase); Pbindef(\m_2, \scale,~s4,\degree,~d6,\octave,~o1,\dur,~phrase); + // chiptune minmalismo in melodic minor /////////////////////////////// r 0,1,3 -Pbindef(\m_1, \scale,~s0,\degree,~d4,\octave,~o3,\dur,~rrr ); +Pbindef(\m_1, \scale,~s0,\degree,~d4,\octave,7,\dur,~rrr ); Pbindef(\m_2, \scale,~s0,\degree,~d4,\octave,~o3,\dur,~rrr ); + + + ////////$$$///////// Pbindef(\m_1, \octave, 1, \scale, ~s3 ) Pbindef(\m_2, \scale,~s0, \mtranspose,0) - - -//// new -Pbindef(\m_1, \scale,~s0,\degree,~ddd,\octave, ~o3,\dur,~rr ); -Pbindef(\m_2, \scale,~s0,\degree,~ddd,\octave, ~o2,\dur,~rrr ); - - -// CC Control Message 1 ---> TOP Mother32 ASSIGN OUT -( Pdef(\m_1_CC, Pbind( \type, \midi, \midicmd, \control, \midiout, ~m32_1, - \ctlNum, 1, \control, - //Pexprand(7,100, inf), - \dur, ~r0)).play(quant:4)); - -// CC Control Message 1 ---> BOTTOM Mother32 ASSIGN OUT -Pdef(\m_2_CC, Pbind( \type, \midi, \midicmd, \control, \midiout, ~m32_2, \ctlNum, 1, \control, Pexprand(77,127, inf), \dur, 1/8 )).play(quant:4); \ No newline at end of file diff --git a/motherPatterns.scd b/motherPatterns.scd index 7280435..a96073b 100644 --- a/motherPatterns.scd +++ b/motherPatterns.scd @@ -16,20 +16,62 @@ ~d6 = Pclutch(~d4, Pseq(#[0,0,0,0,0,0,0,0,1,1,1,1,1],inf)); ~d7 = Pstutter(Prand([1, 2, 5], inf), Pwhite(-1.0, 1.0)); //c = Pstutter(3, Pxrand([1, 2, 3], inf) * 4 + 65); -~d8 = Pseq([0,6,2,4,1,3,3,7,5,11]); // ground bass +~d8 = Pseq([0,6,2,4,1,3,3,7,5,11]); // ground bass ~d9 = Prand([1,3,5,7],8); ~d10 = Pseq([2,4,6,8],8); ~d11 = Prand([0,2,4,6],8); ~d12 = Pseq([3,5,7,9],8); - -~ddd = Pseq([~d9, ~d10, ~d11, ~d12],inf); - -~r0 = 1/8; +~ddd = Pseq([~d9, ~d10, ~d11, ~d12],inf); ///////////////////////////////////////////////// +~rx0 = Pwrand([1/8, 1/4, 1/2, 2],[80,50,20,20].normalizeSum, 1); +~rx1 = Pwrand([1/8, 1/4, 1/2, 2],[80,50,20,20].normalizeSum, 1); +~rx2 = Pwrand([1/8, 1/4, 1/2, 2],[80,50,20,20].normalizeSum, 1); +~rx3 = Pwrand([1/8, 1/4,],[90,30, 10, 0].normalizeSum, 1); + +~rx3 = Pxrand([ + 1/8, + 1/4, + 1/2, + 1/8, + 1 +],1); + +/////////////////////// + +~r16 = Pseq([ + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, + 1/16, +],1); + +~r0 = Pseq([ + 1/8, + 1/8, + 1/8, + 1/8, + 1/8, + 1/8, + 1/8, + 1/8, +],1); + ~r01 = Pseq([ 1/8, Rest(1/8), @@ -47,7 +89,7 @@ Rest(1/8), Rest(1/8), 1/8, - 1/8, + Rest(1/8), Rest(1/8), Rest(1/8), ],1); @@ -56,29 +98,88 @@ 1/8, 1/8, 1/8, + Rest(1/8), 1/8, 1/8, 1/8, - 1/8, - 1/8, + Rest(1/8), ],1); ~r04 = Pseq([ - 1/8, - 1/8, Rest(1/8), 1/8, + 1/8, + 1/8, Rest(1/8), 1/8, 1/8, 1/8, ],1); -~rrr = NodeProxy.new.play; -~rrr.source = Pxrand([~r01,~r02, ~r03, ~r04],inf); +~rrr = PatternProxy.new; +~rr = PatternProxy.new; -///////////////////////////////////////////////// +~rr.source = Pxrand([~r01,~r02, ~r03, ~r04],inf); +~rrr.source = Pxrand([~r0,~r0, ~r0, ~r02],inf); +~rr.source = Prand([~r03,~r04, ~r0, ~r0],inf); +~rrr.source = Prand([~r03,~r03,~r02, ~r4],inf); + +~rs = Pseq([ + Pseq([~rx0],32), + Pseq([~rx1],32), + Pseq([~rx2],32), + Pseq([~rx3],32), + + Pseq([~r03],8), + Pseq([~r04],8), + Pseq([~r0],8), + Pseq([~r0],8), + Pseq([~r04],8), + Pseq([~r16],8), + Pseq([~r0],inf), +],inf); + +~rb = Pseq([ + Pseq([~rx0],32), + Pseq([~rx1],32), + Pseq([~rx2],32), + Pseq([~rx3],32), + + Pseq([~r03],8), + Pseq([~r04],8), + Pseq([~r0],8), + Pseq([~r0],8), + Pseq([~r04],8), + Pseq([~r16],8), + Pseq([~r0],inf), +],inf); + +/////////////////////////////// OCTAVISATION PATTERNS + +~oo = PatternProxy.new; +~ooo = PatternProxy.new; + +~o0 = Prand([5], inf); +~o1 = Prand([2,3], inf); +~o2 = Prand([3,4,5], inf); +~o3 = Pwrand([3,4,5,6,7],[15,20,3,4,5].normalizeSum, inf); + +~o = Pseq([ + Pxrand([4,5,6], 32), + Pseq([5,6,7], 32), + Pseq([4,7], 32), + Pxrand([4,5,6,7], 32), +] , inf); + +~oo.source = ~o; + + +~o = Pseq([ + Pseq([8], 32), +] , inf); + +///////////////////////////////////////////////////// ~r1 = 1/4; ~r2 = Pwrand([0.25, Rest(0.75), 1], [0.6, 0.2, 0.2], inf); @@ -98,8 +199,4 @@ ~phrase = Pxrand([~white, ~sync8th, ~sixteen, ~long, ~rest, ~rest+0.7], inf); -~o0 = Prand([5], inf); -~o1 = Prand([1,2,3], inf); -~o2 = Prand([3,4,5], inf); -~o3 = Pwrand([3,4,5,6,7],[15,20,3,4,5].normalizeSum, inf); - +////////////////////////////////////////////////////// \ No newline at end of file