From 69fc07571533461dbf328adce22aca590cc1dc31 Mon Sep 17 00:00:00 2001 From: Rob Canning Date: Tue, 13 Sep 2022 13:00:57 +0200 Subject: [PATCH] fixed spatialisation and tuned pitch transpositions Dseq --- gtr.scd | 71 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/gtr.scd b/gtr.scd index b7e7b21..4bb7071 100644 --- a/gtr.scd +++ b/gtr.scd @@ -1,4 +1,5 @@ + ( s.reboot{ s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples @@ -36,6 +37,7 @@ thisProcess.openUDPPort(57121); // RUNME 2 ========================================== // ------------------------------------------------- + ( // DEFINE SYNTHS --------------------------------- <-- // ------------------------------------------------- ( // direct signal + reverb ------------------------- @@ -49,7 +51,6 @@ SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=0, sensorInstrPan=0; instrPanMode4 = LFSaw.kr(0.33).bipolar.range(-1,1); instrPanMode5 = LFNoise1.kr(10).range(-1, 1); - instrPan = Select.kr(instrPanModeIndex, [instrPanMode0, instrPanMode1, instrPanMode2, instrPanMode3, instrPanMode4, instrPanMode5, sensorInstrPan]); @@ -91,19 +92,20 @@ SynthDef("recBuf",{ // ~rndpos = LFNoise2.kr(0.1).range(0, 1); SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, - sndbuf, envbuf, pan=0, imp=30, + sndbuf, envbuf, pan=0, imp=50, pitchmodeindex=0, sensorpitch=1, sensorgdur=0.1, sensorgpan=0, positionmodeindex=0, gdurmodeindex=0, gpanmodeindex=0, sensorposition=0, impulsemodeindex=0, sensorimpulse=0, - signalChannelIndex=0, dseqarrayIndex=1, + signalChannelIndex=1, dseqarrayIndex=1, rlow= -1, rhigh=10 | + var signal, env, freqdev, pos, pitchmode0, pitchmode1, pitchmode2,pitchmode3,pitchmode4,pitchmode5, pitchmode6, pitch, gdurmode0, gdurmode1, gdurmode2, gdurmode3, gdurmode4, gdurmode5, gdurmode6, gdur, gpanmode0, gpanmode1, gpanmode2, gpan, positionmode0, positionmode1, positionmode2, positionmode3, position, - impulsemode0, impulsemode1, impulse, dseq, dseq_array1, dseq_array2, dseq_array3, dseq_array4, dseq_array5, dseq_array6, stereosignal, quadsignalL, quadsignalR, quadsignal, signalchannels; + impulsemode0, impulsemode1, impulse, xdseq, dseq_array1, dseq_array2, dseq_array3, dseq_array4, dseq_array5, dseq_array6, stereosignal, quadsignalL, quadsignalR, quadsignal, signalchannels; // grain duration mode -untransposed, random, or sensor controlled gdurmode0 = 0.2; @@ -124,31 +126,35 @@ SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, gpan = Select.kr(gpanmodeindex, [gpanmode0, gpanmode1, gpanmode2, sensorgpan]); - // grain pitch mode -untransposed, random, or sensor controlled + // grain pitch mode -untransposed, random, or sensor controlled - dseq_array1 = Dseq([1,-1, 2, 1, -1.5, 1, 1.33, 1, -0.5, 1, 3, 1, 2.37, 1, -0.33, 1], inf); - dseq_array2 = Dseq([1,-1, -0.5, 1, 1.33, 1], inf); - dseq_array3 = Drand([(1..5).mirror.midiratio], inf); - dseq_array4 = Drand([1,-1, 2, 1, -1.5, 1, 1.33, 1, -0.5, 1, 3, 1, 2.37, 1, -0.33, 1], inf); - dseq_array5 = Dseq([1,-1, -0.5, 1, 1.33, 1], inf); + Scale.minor.degrees.midiratio; - - dseq = [dseq_array1, dseq_array2,dseq_array3, dseq_array4, dseq_array5]; + dseq_array1 = Dseq([1,-1, 2, 1, -1.5, 1, 1.33, 1, -0.5, 1, 3, 1, 2.37, 1, -0.33, 1], inf); + dseq_array2 = Dseq([1,-1, -0.5, 1, 1.33, 1], inf); + dseq_array3 = Drand([(1..5).mirror.midiratio], inf); + dseq_array4 = Drand(Scale.minor.degrees.midiratio, inf); + dseq_array5 = Dseq([1,-1, -0.5, 1, 1.33, 1], inf); + // + // + // xdseq = [dseq_array1, dseq_array2,dseq_array3, dseq_array4, dseq_array5]; dseqarrayIndex =1; pitchmode0 = 1; - pitchmode1 = Demand.kr(Impulse.kr(imp), 0, dseq[0]); - pitchmode2 = Demand.kr(Impulse.kr(imp), 0, dseq[1]); - pitchmode3 = Demand.kr(Impulse.kr(imp), 0, dseq[2]); - pitchmode4 = Demand.kr(Impulse.kr(imp), 0, dseq[3]); - pitchmode5 = Demand.kr(Impulse.kr(imp), 0, dseq[4]); + pitchmode1 = Demand.kr(Impulse.kr(imp), 0, Dseq([1,-1, 2, 1, -1.5, 1, 1.33, 1, -0.5, 1, 3, 1, 2.37, 1, -0.33, 1], inf)); + pitchmode2 = Demand.kr(Impulse.kr(imp), 0, Drand(Scale.minor.degrees.midiratio, inf) * Drand([0.5, 0.25,1,2], inf)); + pitchmode3 = Demand.kr(Impulse.kr(imp), 0, Dseq([1,-1, -0.5, 1, 1.33, 1], inf)); + pitchmode4 = Demand.kr(Impulse.kr(imp), 0, Drand([0.5, 0.25,1,2], inf)); + pitchmode5 = Demand.kr(Impulse.kr(imp), 0, Drand(Scale.diminished.degrees.midiratio, inf)); pitchmode6 = LFNoise1.kr(imp).range(rlow, rhigh); + pitch = Select.kr(pitchmodeindex, [pitchmode0, sensorpitch, pitchmode1, pitchmode2 ,pitchmode3, pitchmode4, pitchmode5, pitchmode6]); + // granular playhead mode - fixed random or sensor controlled positionmode0 = 0.2; positionmode1 = (Phasor.ar(0.01, 1 * BufRateScale.ir(b), 0, BufSamples.ir(b)) + LFNoise1.ar(100).bipolar(0.1 * SampleRate.ir) ) / BufSamples.ir(b); @@ -161,7 +167,6 @@ SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, // grain impulse frequency mode - random, metric or sensor based impulse modes impulsemode0 = Impulse.kr(imp); impulsemode1 = Dust.kr(imp); - impulse = Select.kr(impulsemodeindex, [impulsemode0, impulsemode1, sensorimpulse]); @@ -169,16 +174,6 @@ SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, signal = TGrains.ar(4, impulse, b, pitch, position, gdur, gpan, amp, 4) * env; - ////////stereosignal = signal; - - //quadsignalL = PanAz.ar(4, signal[0], MouseX.kr(0,2)); - //quadsignalR = PanAz.ar(4, signal[1], MouseX.kr(0,2).range(2,0)); - ////////quadsignal = signal; //Mix.ar([quadsignalL, quadsignalR]); - - ////////signalchannels = Select.ar(signalChannelIndex, [stereosignal, quadsignal]); - - //signal = signalchannels; - Out.ar(0, signal); }).add; @@ -194,7 +189,7 @@ SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, // TODO NO EPRAND IN INSTR! r = Synth(\recBuf, [\in, 0, \out, 0, \bufnum, b, \t_trig, 0]); // recorder - ~g1 = Synth(\buf_grain, [\sndbuf, b, \amp, 0.6, \envbuf, -1, \gate, 1, doneAction: 2]); // granulate + ~g1 = Synth(\buf_grain, [\sndbuf, b, \amp, 0.5, \envbuf, -1, \gate, 1, doneAction: 2]); // granulate ~gtrIn = Synth(\dryIn); // dry audio signaL )); @@ -203,11 +198,12 @@ SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, // ---------------------------------------------------- + (( // OSC Receivers // ENABLE SENSOR AND SWITCH VALUES <-- // ---------------------------------------------------- ~pitchmode = 0; ~positionmode = 0; ~impulsemode = 1; -~gdurmode=0; ~gpanmode=1; ~channelmode=0; -~instrPanMode =0; +~gdurmode=0; ~gpanmode=0; ~channelmode=0; +~instrPanMode=0; ~btnstate = []; ~btnsA = []; @@ -254,7 +250,7 @@ SynthDef(\buf_grain, { | out, gate = 1, amp = 0.5, //~g1.set(\sensorgpan, msg[2].linlin(-1, 1, -1, 1)); //~g1.set(\signalChannelIndex, ~channelmode ); - ~gtrIn.set(\instrPan, msg[2].linlin(-1, 1, -1, 1)); + ~gtrIn.set(\sensorInstrPan, msg[2].wrap(0, 5).linlin(0, 5, -1, 1)); ~gtrIn.set(\instrPanModeIndex, ~instrPanMode); //msg.postln; @@ -373,7 +369,7 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort; // GTR INPUT ======================= if (msg[11]==1, { - ( ~btn10val = (~btn10val + 1) % 7 ) ; + ( ~btn10val = (~btn10val + 1) % 9 ) ; switch(~btn10val, @@ -384,6 +380,9 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort; 4, { ~gtrIn.set(\in, 0 ); ~instrPanMode=3; "DRY L/R PAN {STEREO}".postln; }, 5, { ~gtrIn.set(\in, 0 ); ~instrPanMode=4; "DRY ROTATE {QUAD}".postln; }, 6, { ~gtrIn.set(\in, 0 ); ~instrPanMode=5; "DRY RaND {QUAD}".postln; }, + 7, { ~gtrIn.set(\in, 0 ); ~instrPanMode=6; "DRY SENSOR {QUAD}".postln; }, + 8, { ~gtrIn.set(\in, 0 ); ~instrPanMode=7; "DRY SENSOR {QUAD}".postln; }, + ) }); @@ -426,7 +425,7 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort; { ( ~btn14val = (~btn14val + 1) % 7 ) ; switch(~btn14val, - 0, { ~gdurmode = 0; ~g1.set(\imp, 40); "DURATION MODE 0".postln; }, + 0, { ~gdurmode = 0; ~g1.set(\imp, 64); "DURATION MODE 0".postln; }, 1, { ~gdurmode = 1; ~g1.set(\imp, 30); "DURATION MODE 1".postln; }, 2, { ~gdurmode = 2; ~g1.set(\imp, 20); "DURATION MODE 2".postln; }, 3, { ~gdurmode = 3; ~g1.set(\imp, 15); "DURATION MODE 3".postln; }, @@ -524,6 +523,9 @@ r.set(\overdub, 0); // off ~g1.set(\gate, 1); // granulator on ~g1.set(\gate, 0); // granulator off +~g1.set(\amp, 0.5); // granulator off + + a = Scale.major; @@ -545,3 +547,4 @@ a = Scale.major; //n = NetAddr.new("224.0.1.9", 6696); +