density steps to fibonacci

master
Rob Canning 2022-11-24 00:51:51 +01:00
parent f1c1167ebe
commit 16747307c9
2 changed files with 97 additions and 146 deletions

View File

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

241
gtr.scd
View File

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