From 16747307c94f817b510dcd3c8d0b693cce40e05c Mon Sep 17 00:00:00 2001 From: Rob Canning Date: Thu, 24 Nov 2022 00:51:51 +0100 Subject: [PATCH] density steps to fibonacci --- gtr-gui-manual.scd | 2 +- gtr.scd | 241 ++++++++++++++++++--------------------------- 2 files changed, 97 insertions(+), 146 deletions(-) diff --git a/gtr-gui-manual.scd b/gtr-gui-manual.scd index 72b4e8b..7380b2b 100644 --- a/gtr-gui-manual.scd +++ b/gtr-gui-manual.scd @@ -139,7 +139,7 @@ VLayout( ~densityModeGui = QPopUpMenu.new(~grainGui, Rect(10,200,300,40)) - .items_(["1", "2","4","8","16","32","64","128"]) + .items_(["1","2","3","5","8","13","21", "34", "55","89","144","233", "377"]) .font_(Font.default.size_(35)).background_(Color.yellow); StaticText(~grainGui, Rect(50,50,300,40)).string_("IMPULSE MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); diff --git a/gtr.scd b/gtr.scd index dd976a0..23cbb54 100644 --- a/gtr.scd +++ b/gtr.scd @@ -1,4 +1,4 @@ -' + // RUNME 0 ========================================= // todo countdown on density voices @@ -400,73 +400,55 @@ SynthDef(\buf_grain, { | out=0, gate = 1, amp = 0.5, }).add; )*/ - - - - - - (( // RUNME 3 ========================================== + // START SYNTHS --------------------------------- - // ---------------------------------------------------- r = Synth(\recBuf, [\in, 0, \out, 0, \bufnum, b, \t_trig, 0]); // recorder - - - ( - -b.zero; - -~g = 1.collect({ - - arg n; - - Synth(\gran,[ - \amp, n.linlin(0,4, -3,-20).dbamp, - \buf, b, // which buffer - \out, 0, - \atk, 1, - \rel, 1, - \gate, 1, - \sync, 1, - \dens, exprand(2,80), - \baseDur, 1, //0.08 - \durRand, 5, - \rate, 1, - \rateRand, 2, - \pan, 0, - \panRand, 1.5, - \grainEnv, -1, - \ptrBus, ~ptrBus, - \ptrSampleDelay, n.linlin(0,4, 20000, s.sampleRate*2), - \ptrRandSamples, 2000, - \minPtrDelay, 1000, - ], ~granGrp); -}); - -); - - ~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~reverbBus], ~sourceGroup); // dry audio signaL ~reverbFX = Synth(\freeVerb, [\in, ~reverbBus], ~fxGroup); ~ringMod = Synth(\ringModulator, [\in, ~ringModBus], ~fxGroup); + ( // granular synth + + b.zero; + + ~g = 1.collect({ + arg n; + Synth(\gran,[ + \amp, n.linlin(0,4, -3,-20).dbamp, + \buf, b, // which buffer + \out, 0, + \atk, 1, + \rel, 1, + \gate, 1, + \sync, 1, + \dens, exprand(2,80), + \baseDur, 1, //0.08 + \durRand, 5, + \rate, 1, + \rateRand, 2, + \pan, 0, + \panRand, 1.5, + \grainEnv, -1, + \ptrBus, ~ptrBus, + \ptrSampleDelay, n.linlin(0,4, 20000, s.sampleRate*2), + \ptrRandSamples, 2000, + \minPtrDelay, 1000, + ], ~granGrp); + }); + ); + )); -b.plot; - - -~ringMod.set(\modulator, 0); -~ringMod.set(\mulrate, 0); - - // RUNME 4 ========================================== // ---------------------------------------------- + OSCFunc.trace(true); // Turn posting on OSCFunc.trace(false); // Turn posting off -(( // OSC Receivers // ENABLE SENSOR AND SWITCH VALUES <-- +(( // OSC Receivers // ENABLE SENSOR AND SWITCH VALUES <-- // ---------------------------------------------------- ~overdubMode= 0; ~pitchMode = 0; ~positionMode = 0; ~impulseMode = 1; @@ -482,20 +464,26 @@ OSCFunc.trace(false); // Turn posting off ~btn4val = -1; ~btn5val = -1; ~btn6val = -1; ~btn7val = -1; ~btn8val = -1; // shift buttons - ~btn9val = -1; ~btn10val = -1; ~btn11val = -1; ~btn12val = -1; ~btn13val = -1; ~btn14val = -1; ~btn15val = -1; ~btn16val = -1; - ( // accel gyro quaternion mapping /////////////////// // msg[1] msg[2] msg[3] X Y Z ==> ROLL, PITCH, YAW o = OSCdef(\test, { arg msg, time, addr, recvPort, rlow, rhigh; - // PAN ------- X Roll + + + ~g.do({arg n; n.set(\rateRand, msg[2].linlin(0, 1, 1, 50).postln; )}; ); + //~g.do({arg n; n.set(\rate, 1; )}; ); + + + /* // PAN ------- X Roll ~g1.set(\pan, msg[1].linlin(-0.3, 0.3, -1, 1)); ~g1.set(\gpanmodeindex, ~gpanMode ); + + // PITCH ------- Y Pitch ~g1.set(\sensorpitch, msg[3]+1 * 2); ~g1.set(\pitchmodeindex, ~pitchMode ); @@ -522,7 +510,8 @@ OSCFunc.trace(false); // Turn posting off //~g1.set(\signalChannelIndex, ~channelmode ); ~gtrIn.set(\sensorInstrPan, msg[2].wrap(0, 5).linlin(0, 5, -1, 1)); - ~gtrIn.set(\instrPanModeIndex, ~instrPanMode); + ~gtrIn.set(\instrPanModeIndex, ~instrPanMode);*/ + // //msg.postln; }; , '/euler'); @@ -562,6 +551,8 @@ OSCFunc.trace(false); // Turn posting off ~btnstate = [~btnsA, ~btnsB, ~btnsC]; + /// PRESETS !!!!!!!!!!!!!!!!!!!!!!! + if (msg[9] == 1 && msg[10] == 1, { ( ~btn0val = (~btn0val + 1) % 5 ) ; @@ -575,10 +566,8 @@ OSCFunc.trace(false); // Turn posting off ~g.do({arg n; n.set(\rateRand, 32)}); ~g.do({arg n; n.set(\sync, 1)}); ~g.do({arg n; n.set(\ptrRandSamples, 6400000, )}); - }, - 1, { "DRONAUSAURUS".postln; ~g.do({arg n; n.set([\baseDur, 1, \durRand, 2, \dens, 100, \rate, 1, \rateRand, 1, \sync, 0, \ptrRandSamples, 200000, ])}); }, 2, { "MINIMAL5THsISM".postln; @@ -650,24 +639,23 @@ OSCFunc.trace(false); // Turn posting off // ~recTrigButton // ~recModeGui + // granular gui //////////////////////////////////////////////////////////////// - // granular gui - // case {~pitchMode == 0 }{{~pitchModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\rateRand, 1, \rate, 1) }); } {~pitchMode == 1 }{{~pitchModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\rate, 2, \rateRand, 1) }); } - {~pitchMode == 2 }{{~pitchModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\rate, 0.25, \rateRand, 1) }); } + {~pitchMode == 2 }{{~pitchModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\rate, 0.5, \rateRand, 1) }); } {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 4 }{{~pitchModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\rate, 0.15, \rateRand, 3, \amp, 1.5) }); } - {~pitchMode == 5 }{{~pitchModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\rate, 0.15, \rateRand, 100) }); } + {~pitchMode == 4 }{{~pitchModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\rate, 0.25, \rateRand, 3) }); } + {~pitchMode == 5 }{{~pitchModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 100) }); } {~pitchMode == 6 }{{~pitchModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\rate, 100, \rateRand, 1000) }); } - {~pitchMode == 7 }{{~pitchModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\rate, 0.015, \rateRand, 10000) }); }; - // + {~pitchMode == 7 }{{~pitchModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\rate, 1) }); }; + case - {~gdurMode == 0 }{{~durModeGui.value_(0) }.defer} - {~gdurMode == 1 }{{~durModeGui.value_(1) }.defer} - {~gdurMode == 2 }{{~durModeGui.value_(2) }.defer} - {~gdurMode == 3 }{{~durModeGui.value_(3) }.defer} + {~gdurMode == 0 }{{~durModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\baseDur, 1, \durRand, 1)}); } + {~gdurMode == 1 }{{~durModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\baseDur, 0.008, \durRand, 10.1)}); } + {~gdurMode == 2 }{{~durModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\baseDur, 0.008, \durRand, 100.1)});} + {~gdurMode == 3 }{{~durModeGui.value_(3) }.defer ; ~g.do({arg n; n.set(\baseDur, 0.2, \durRand, 0)});} {~gdurMode == 4 }{{~durModeGui.value_(4) }.defer} {~gdurMode == 5 }{{~durModeGui.value_(5) }.defer} {~gdurMode == 6 }{{~durModeGui.value_(6) }.defer} @@ -684,14 +672,19 @@ OSCFunc.trace(false); // Turn posting off {~positionMode == 7 }{{~positionModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, 256000) }); }; case - {~densMode == 0 }{{~densityModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\dens, 1)});} - {~densMode == 1 }{{~densityModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\dens, 2)}); } - {~densMode == 2 }{{~densityModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\dens, 4)});} - {~densMode == 3 }{{~densityModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\dens, 8)});} - {~densMode == 4 }{{~densityModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\dens, 16)});} - {~densMode == 5 }{{~densityModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\dens, 32)});} - {~densMode == 6 }{{~densityModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\dens, 64)});} - {~densMode == 7 }{{~densityModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\dens, 128)}); }; + {~densMode == 0 }{{~densityModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\dens, 1, \amp, 1)}); } + {~densMode == 1 }{{~densityModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\dens, 2, \amp, 1)}); } + {~densMode == 2 }{{~densityModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\dens, 3, \amp, 1)});} + {~densMode == 3 }{{~densityModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\dens, 5, \amp, 1)});} + {~densMode == 4 }{{~densityModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\dens, 8, \amp, 0.9)});} + {~densMode == 5 }{{~densityModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\dens, 13, \amp, 0.85)});} + {~densMode == 6 }{{~densityModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\dens, 21, \amp, 0.8)});} + {~densMode == 7 }{{~densityModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\dens, 34, \amp, 0.75)}); } + {~densMode == 8 }{{~densityModeGui.value_(8) }.defer; ~g.do({arg n; n.set(\dens, 55, \amp, 0.65)}); } + {~densMode == 9 }{{~densityModeGui.value_(9) }.defer; ~g.do({arg n; n.set(\dens, 89, \amp, 0.5)}); } + {~densMode == 10 }{{~densityModeGui.value_(10) }.defer; ~g.do({arg n; n.set(\dens, 144, \amp, 0.45)}); } + {~densMode == 11 }{{~densityModeGui.value_(11) }.defer; ~g.do({arg n; n.set(\dens, 233, \amp, 0.4)}); } + {~densMode == 12 }{{~densityModeGui.value_(12) }.defer; ~g.do({arg n; n.set(\dens, 377, \amp, 0.2)}); }; case {~gpanMode == 0 }{{~gPanModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\panRand, 0.25, \pan, 0)}); } @@ -707,8 +700,7 @@ OSCFunc.trace(false); // Turn posting off {~impulseMode == 0 }{{~impulseModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\sync, 0)}); } {~impulseMode == 1 }{{~impulseModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\sync, 1)}); }; - - ////////////////// instrument mode gui + ////////////////// instrument mode gui //////////////////////////// case {~instrPanMode == 0 }{{~instrPanModeGui.value_(0) }.defer } @@ -730,8 +722,7 @@ OSCFunc.trace(false); // Turn posting off {~fxMode == 6 }{{~fxModeGui.value_(6) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 0, \mulrate, 0); } {~fxMode == 7 }{{~fxModeGui.value_(7) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 0, \mulrate, 0); }; - - ////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////// // BUTTON X ----> toggle fx if (msg[13]==1, @@ -746,7 +737,6 @@ OSCFunc.trace(false); // Turn posting off 5, { ~fxMode=5; "fx5".postln; }, 6, { ~fxMode=6; "fx6".postln; }, 7, { ~fxMode=7; "fx7".postln; }, - ); }); @@ -762,19 +752,27 @@ OSCFunc.trace(false); // Turn posting off }); // INCREASE IMPULSE RATE --------------------------------------- - + // todo - counter wrap around -- to ping pong count up and down + // if counter is > then + otherwise minus counter if (msg[15]==1, { - ( ~btn6val = (~btn6val + 1) % 8 ) ; + ( ~btn6val = (~btn6val + 1) % 13 ) ; switch(~btn6val, - 0, { ~densMode = 0; "DENSITY MODE 0".postln; ~g.do({arg n; n.set(\amp, 1, \dens, 1 )}); }, - 1, { ~densMode = 1; "DENSITY MODE 1".postln; ~g.do({arg n; n.set(\amp, 0.9, \dens, 4 )}); }, - 2, { ~densMode = 2; "DENSITY MODE 2".postln; ~g.do({arg n; n.set(\amp, 0.5, \dens, 8 )}); }, - 3, { ~densMode = 3; "DENSITY MODE 3".postln; ~g.do({arg n; n.set(\amp, 0.8, \dens, 16 )}); }, - 4, { ~densMode = 4; "DENSITY MODE 4".postln; ~g.do({arg n; n.set(\amp, 0.8, \dens, 32 )}); }, - 5, { ~densMode = 5; "DENSITY MODE 5".postln; ~g.do({arg n; n.set(\amp, 0.9, \dens, 64 )}); }, - 6, { ~densMode = 6; "DENSITY MODE 6".postln; ~g.do({arg n; n.set(\amp, 0.75, \dens, 128 )}); }, - 7, { ~densMode = 7; "DENSITY MODE 7".postln; ~g.do({arg n; n.set(\amp, 0.5, \dens, 256 )}); }, + 0, { ~densMode = 0; "DENSITY MODE 0".postln; }, + 1, { ~densMode = 1; "DENSITY MODE 1".postln; }, + 2, { ~densMode = 2; "DENSITY MODE 2".postln; }, + 3, { ~densMode = 3; "DENSITY MODE 3".postln; }, + 4, { ~densMode = 4; "DENSITY MODE 4".postln; }, + 5, { ~densMode = 5; "DENSITY MODE 5".postln; }, + 6, { ~densMode = 6; "DENSITY MODE 6".postln; }, + 7, { ~densMode = 7; "DENSITY MODE 7".postln; }, + 8, { ~densMode = 8; "DENSITY MODE 8".postln; }, + 9, { ~densMode = 9; "DENSITY MODE 9".postln; }, + 10, { ~densMode = 10; "DENSITY MODE 10".postln; }, + 11, { ~densMode = 11; "DENSITY MODE 11".postln; }, + 12, { ~densMode = 12; "DENSITY MODE 12".postln; }, + + ) }); @@ -811,7 +809,7 @@ OSCFunc.trace(false); // Turn posting off switch(~btn10val, 0, { ~gtrIn.set(\instrAmp, 0 ); "DRY SIGNAL OFF".postln; }, - 1, { ~instrPanMode=0; "DRY FRONT {STERE0}".postln; }, + 1, { ~instrPanMode=0; ~gtrIn.set(\instrAmp, 1 ); "DRY FRONT {STERE0}".postln; }, 2, { ~instrPanMode=1; "DRY BACK {STERE0}".postln; }, 3, { ~instrPanMode=2; "DRY RaND {STEREO}".postln; }, 4, { ~instrPanMode=3; "L/R PAN {STEREO}".postln; }, @@ -914,27 +912,18 @@ r.set(\overdub, 0.9); // overdub mode 0 - 0.99 - MAPPED TO SWITCH 4 ~g.set(\gate, 0); ~g.do({arg n; n.set(\gate, 1 )}); -~g.do({arg n; n.set(\rate, 1 )}); +~g.do({arg n; n.set(\rate, 2 )}); \amp, n.linlin(0,4, -3,-20).dbamp, ~g.do({arg n; n.set(\amp, 1, \rateRand, 1000 )}); ~g.do({arg n; n.set(\amp, 1, \rateRand, 1 )}); - -~g.do({arg n; n.set(\amp, 0, \dens, 128 )}); - - +~g.do({arg n; n.set(\amp, 0, \dens, 1 )}); ~g.do({arg n; n.set(\rateRand, 0)}); ~g.do({arg n; n.set(\panRand, 1)}); - - - ~g.do({arg n; n.set(\sync, 1 )}); - ~g.do({arg n; n.set(\atk, exprand(0.1, 1) )}); - ~g.do({arg n; n.set(\rel, 1 )}); - ~g.do({arg n; n.set(\dens, exprand(1,80) )}); ~g.do({arg n; n.set(\dens,1)}); @@ -947,64 +936,26 @@ r.set(\overdub, 0.9); // overdub mode 0 - 0.99 - MAPPED TO SWITCH 4 ~g.do({arg n; n.set(\ptrRandSamples, 200000 )}); ~g.do({arg n; n.set(\minPtrDelay, 100000 )}); -~g.do({arg n; n.set([\baseDur, 0.013])}); -~g.do({arg n; n.set([\durRand, 10.2])}); +~g.do({arg n; n.set([\baseDur, 0.13])}); +~g.do({arg n; n.set([\durRand, 1000])}); ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); -~g.do({arg n; n.set([\baseDur, 0.08, \durRand, 1])}); +~g.do({arg n; n.set(\baseDur, 0.008, \durRand, 10.1)}); ~g.do({arg n; n.set([\baseDur, 1.08, \durRand, 3, \sync, 0, \dens, 25 ])}); ~rec.set(\overdubLevel, 0.1); - //////////////////////////////////////////////////////////////////////// thisProcess.platform.recordingsDir;// find where the recordings are written to s.record(numChannels:4); // record -///////////////////// -~g1.set(\pitchmodeindex, 1); // pitchmode -~g1.set(\gdurmodeindex, 1); // grain duration mode -~g1.set(\imp,2); // grain impulse rate -~g1.set(\impulsemodeindex, 1); // 0 1 2 imp, dust, sensor -~g1.set(\positionmodeindex, 1); // playhead FIXED.RND.SENSOR 0 1 2 -~g1.set(\gpanmodeindex, 1); // pan mode -~g1.set(\amp, 0); // amplitude -~ringMod.set(\modulator, 0); // 0 to disable -~channelmode = 1; -//~ringMod.set(\in, 0); -//~gtrIn.set(\out, 0); -~gtrIn.set(\out, ~ringModBus); -//~gtrIn.set(\out, ~reverbBus); -//~gtrIn.set(\out, [~reverbBus, ~ringModBus]); - -~ringMod.set(\modulator, 177, \mulrate, 0.1); -~ringMod.set(\modulator, 0, \mulrate, 0); -~ringMod.set(\mulrate, 0); - -~gtrIn.set(\instrAmp, 1); - -// fix doneaction -~g1.set(\gate, 1); // granulator on -~g1.set(\gate, 0); // granulator off -~g1.set(\amp, 1); // granulator off - -a = Scale.major; - -///////////////////////////////////////////////// -// ----------------------------------------------- - -~btn4val = 2; -~gdurMode = 4; - // list all open ports - -// ----------------------------------------------- // CODE DUMP ZONE /////////////////////////////// // switch to the custom env