From 9a51a20a4ff9cba6eca5b83b14fbaadfa7b6448b Mon Sep 17 00:00:00 2001 From: Rob Canning Date: Mon, 5 Dec 2022 12:39:53 +0100 Subject: [PATCH] glitch fix - pointer enabled properly --- gtr-gui-manual.scd | 20 +- gtr.scd | 1127 ++++++++++++++---------------------- live_jackpatchbay.xml | 76 +++ recording_jackpatchbay.xml | 112 ++++ start_jackd.sh | 4 +- 5 files changed, 648 insertions(+), 691 deletions(-) create mode 100644 live_jackpatchbay.xml create mode 100644 recording_jackpatchbay.xml diff --git a/gtr-gui-manual.scd b/gtr-gui-manual.scd index c282e59..99fe7e3 100644 --- a/gtr-gui-manual.scd +++ b/gtr-gui-manual.scd @@ -114,7 +114,7 @@ VLayout( StaticText(~grainGui, Rect(50,50,300,40)).string_("PLAYHEAD MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); ~posModeGui = QPopUpMenu(~grainGui, Rect(10, 50, 300, 40)) - .items_([0, "Static", "Looping","Randomise","Constrained", "Sensor", 6, 7]) + .items_(["0.125", "0.25", "0.5", "1","2", "3", "4", "sensor"]) .font_(Font.default.size_(35)).background_(Color.yellow); StaticText(~grainGui, Rect(50,50,300,40)).string_("PITCH MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); @@ -150,17 +150,17 @@ VLayout( .value_(0) .stringColor_(Color.black).background_(Color.yellow); - StaticText(~grainGui, Rect(50,50,300,40)).string_("DENSITY").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); + StaticText(~grainGui, Rect(50,150,150,40)).string_("DENSITY").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); - ~densityModeGui = QPopUpMenu.new(~grainGui, Rect(10,200,100,40)) - .items_(["1","2","3","5","8","13","21", "34", "55","89","144","233", "377"]) - .font_(Font.default.size_(35)).background_(Color.yellow); + ~densModeGui = QPopUpMenu.new(~grainGui, Rect(50,60,100,40)) + .items_(["1","2","3","5","8","13","21", "34", "55","89","144","233", "377"]) .font_(Font.default.size_(30)).background_(Color.yellow); - StaticText(~grainGui, Rect(50,50,300,40)).string_("IMPULSE MODE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); + StaticText(~grainGui, Rect(50,50,150,40)).string_("IMPULSE").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30)); - ~impulseModeGui = QPopUpMenu.new(~grainGui, Rect(10,250,300,40)) - .items_(["SYNCHRONIOUS","ASYNCHRONIOUS","Array"]) - .font_(Font.default.size_(20)).background_(Color.yellow); + // ~impulseModeGui = QPopUpMenu.new(~grainGui, Rect(30,350,300,40)) + // .items_(["SYNCHRONIOUS","ASYNCHRONIOUS","Array"]) .font_(Font.default.size_(20)).background_(Color.yellow); + + ~impulseModeGui = CheckBox.new(~grainGui, Rect(30,350,80,60)).value_(1).string_("sync/async"); ~gPanModeGui = QPopUpMenu(~grainGui, Rect(10, 300, 220, 30)) .items_(["OFF","STEREO FRONT","STEREO BACK", "STEREO PAN", "STEREO RND", "QUAD", "QUAD ROTATE", "QUAD RANDOM" ]).font_(Font.default.size_(24)); @@ -181,7 +181,7 @@ VLayout( .alwaysOnTop_(true); ~inputGui.bounds_(Rect(10, 60, 250, 450)); // contents adjust since coords are relative -~grainGui.bounds_(Rect(280, 60, 350, 550)); // contents adjust since coords are relative +~grainGui.bounds_(Rect(280, 60, 450, 650)); // contents adjust since coords are relative ~iSpatGui.bounds_(Rect(10, 570, 250, 500)); // contents adjust since coords are relative ) diff --git a/gtr.scd b/gtr.scd index 44007c1..e17892c 100644 --- a/gtr.scd +++ b/gtr.scd @@ -1,4 +1,3 @@ - // RUNME 0 ========================================= // todo countdown on density voices @@ -13,52 +12,43 @@ s.options.numOutputBusChannels = 8; }) + // RUNME 1 ========================================= - - ( // SETUP ---------------=-------------------------- -// Allocate a 4 second mono buffer -b = Buffer.alloc(s, s.sampleRate * 4.0, 1); +b = Buffer.alloc(s, s.sampleRate * 5.0, 1); // Allocate a 5 second mono buffer ~b1 = Buffer.alloc(s, s.sampleRate * 4.0, 1); f = Buffer.alloc(s, s.sampleRate * 4.0, 1); -// load a test file -//f = Buffer.read(s, thisProcess.nowExecutingPath.dirname +/+ "sounds/Front_Left.wav"); -//b = Buffer.read(s, "/usr/share/sounds/alsa/Front_Left.wav"); - -//b=f; - // Open port 57121 for ESP32 UDP OSC thisProcess.openUDPPort(57121); /////////////////////////////////////// + ~sourceGroup = Group.new; ~fxGroup = Group.after(~sourceGroup); ~reverbBus = Bus.audio(s, 1); ~ringModBus = Bus.audio(s, 1); +~micGrp = Group.new; +~ptrGrp = Group.after(~micGrp); +~recGrp = Group.after(~ptrGrp); +~granGrp = Group.after(~recGrp); + + //load the gui - "/home/rob/gtr/gtr-gui-manual.scd".load; - -); - s.plotTree; +s.meter; +); // RUNME 2 ========================================== // ------------------------------------------------- - - (( // DEFINE SYNTHS --------------------------------- - -s.meter; - - // ------------------------------------------------- - ( // direct signal + reverb ------------------------- +///// outs set to 2 /// for recording to ardour .... fork todo -SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=0, sensorInstrPan=0, instrPitch=0.7, instrAmp=1; +SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=2, sensorInstrPan=0, instrPitch=0.7, instrAmp=1; var signal, dry, wet, instrPan, instrPanMode0, instrPanMode1, instrPanMode2, instrPanMode3, instrPanMode4, instrPanMode5; instrPanMode0 = 0; //LFNoise1.kr(100).range(-0.2, 0.2); @@ -67,15 +57,12 @@ SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=0, sensorInstrPan=0, ins instrPanMode3 = LFNoise1.kr(10).range(-0.2, 0.2); 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]); - signal = SoundIn.ar(in); //signal = PanAz.ar(4, signal, instrPan); signal = signal * instrAmp; - //wet = PitchShift.ar(signal, pitchRatio: instrPitch, pitchDispersion: 0.3, timeDispersion: 0.1); Out.ar(out, signal); //Out.ar(0, Mix.ar( [signal, wet] )); @@ -84,12 +71,12 @@ SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=0, sensorInstrPan=0, ins ( SynthDef("freeVerb", { - arg in=0; + arg in=0, mix=0.5, room=0.8, damp = 0.5; var signal, dry, wet; dry = In.ar(in); - wet = FreeVerb.ar(dry, mix:0.5, room:0.99, damp:0.5,); + wet = FreeVerb.ar(dry, mix:mix, room:room, damp:damp,); signal = wet * 0.9; - Out.ar(0, signal!2); + Out.ar(2, signal!2); }).add; ); @@ -99,114 +86,13 @@ SynthDef("ringModulator", { signal = In.ar(in); multiplier = SinOsc.ar(mulrate); rm = signal * SinOsc.ar(modulator, mul:multiplier); - signal = (rm + signal) * 0.5; - Out.ar(0, signal!2); + //signal = (rm + signal) * 0.5; + Out.ar(2, rm!2); }).add; ); - - -// ---------~posMode = 1; ------------------------------------------- - -/*( // Granulator --------------------------------------r.get(\in).postln; - -// ---------------------------------------------------- - -// a custom envelope -//var winenv; -//winenv = Env([0, 1, 0], [0.5, 0.5], [8, -8]); -//z = Buffer.sendCollection(s, winenv.discretize, 1); -// ~rndpos = LFNoise2.kr(0.1).range(0, 1); - -SynthDef(\buf_grain, { | out=0, gate = 1, amp = 0.5, - sndbuf, envbuf, pan=0, imp=50, - pitchmodeindex=0, sensorpitch=1, sensorgdur=0.1, sensorgpan=0, - posModeindex=0, gdurmodeindex=0, gpanmodeindex=0, - sensorposition=0, impulsemodeindex=0, sensorimpulse=0, - 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,gpanmode3, gpanmode4, gpanmode5,gpanmode6, gpanmode7, gpanmode8, gpan, - posMode0, posMode1, posMode2, posMode3, position, - 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; - gdurmode1 = 0.5; - gdurmode2 = LFNoise1.kr.range(0.1, 0.3); - gdurmode3 = LFNoise1.kr.range(0.1, 0.6); - gdurmode4 = LFNoise1.kr.range(1, 2); - gdurmode5 = LFNoise1.kr.range(1, 4); - gdurmode6 = LFNoise1.kr.range(4, 4); - - gdur = Select.kr(gdurmodeindex, - [gdurmode0, gdurmode1, gdurmode2, gdurmode3, gdurmode4, gdurmode5, gdurmode6, sensorgdur]); - - // grain pan mode STEREO, QUAD, ROTATING - gpanmode0 = 0; //LFNoise1.kr(100).range(-0.2, 0.2); - gpanmode1 = 1; //LFNoise1.kr(100).range(-0.2, 0.2); - gpanmode2 = SinOsc.kr(0.33).range(-0.2, 0.2); - gpanmode3 = LFNoise1.kr(10).range(-0.2, 0.2); - gpanmode4 = LFSaw.kr(0.33).bipolar.range(-1,1); - gpanmode5 = LFNoise1.kr(10).range(-1, 1); - gpanmode6 = LFNoise1.kr(10).range(-1, 1); - gpanmode7 = LFNoise1.kr(10).range(-1, 1); - gpanmode8 = LFNoise1.kr(10).range(-1, 1); - gdurmode6 = LFNoise1.kr.range(4, 4); - gdurmode6 = LFNoise1.kr.range(4, 4); - - - gpan = Select.kr(gpanmodeindex, - [gpanmode0, gpanmode1, gpanmode2, gpanmode3, gpanmode4, gpanmode5, gpanmode6, gpanmode7, gpanmode8, sensorgpan]); - - // grain pitch mode -untransposed, random, or sensor controlled - - pitchmode0 = 1; - //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)); - pitchmode1 = Demand.kr(Impulse.kr(imp), 0, Drand([1,1, 1,1,1,1, 2, 3, 3, 0.5, 0.5], 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 - posMode0 = 0.2; - posMode1 = (Phasor.ar(0.01, 1 * BufRateScale.ir(b), 0, BufSamples.ir(b)) + LFNoise1.ar(100).bipolar(0.1 * SampleRate.ir) ) / BufSamples.ir(b); - posMode2 = LFNoise1.kr.range(0.05, (BufSamples.ir(b)-1) - 1000 ); - posMode3 = LFNoise1.kr.range(0.1, 3.8 ); - - position = Select.kr(posModeindex, - [posMode0, posMode1, posMode2, posMode3, sensorposition]); - - // 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]); - - env = EnvGen.kr( Env([0, 1, 0], [1, 1], \sin, 1), gate, levelScale: amp, doneAction: 2); - - signal = TGrains.ar(4, impulse, b, pitch, position, gdur, gpan, amp, 4) * env; - - Out.ar(0, signal); - -}).add; -);*/ - -( -~micBus = Bus.audio(s,1); -~ptrBus = Bus.audio(s,1); -); +( ~micBus = Bus.audio(s,1); ~ptrBus = Bus.audio(s,1);); ( SynthDef.new(\mic, { @@ -223,8 +109,6 @@ SynthDef.new(\ptr, { Out.ar(out, sig); }).add; -b.numFrames; - SynthDef.new(\rec, { arg ptrIn=0, micIn=0, buf=0; var ptr, sig; @@ -236,10 +120,10 @@ SynthDef.new(\rec, { ( // mono buffer recorder ---------------------------- // with loop and overdub modes ///////////////////// SynthDef("recBuf",{ - arg in=0, out=0, ptrIn=0, bufnum=0, t_trig=0, l=0, overdub=0; + arg micIn=0, out=0, ptrIn=0, bufnum=0, t_trig=0, l=0, overdub=0; var sig, ptr, chain, onsets; - sig = SoundIn.ar(in, 1); -// ptr = In.ar(ptrIn, 1); + sig = SoundIn.ar(micIn, 1); + ptr = In.ar(ptrIn, 1); // Onsets //chain = FFT(LocalBuf(512), sig); @@ -249,14 +133,11 @@ SynthDef("recBuf",{ recLevel: 1, preLevel: overdub, doneAction: 0, trigger:t_trig, - //offset: ptr, - + offset: ptr, ); }).add; ); - - SynthDef.new(\gran, { arg amp=0.5, out=0, buf=0, atk=1, rel=1, gate=1, @@ -276,7 +157,7 @@ SynthDef.new(\gran, { panCtrl = pan + LFNoise1.kr(100).bipolar(panRand); ptrRand = LFNoise1.ar(100).bipolar(ptrRandSamples); - totalDelay = max(ptrSampleDelay - ptrRand, minPtrDelay); // make sure value doesnt go below this value, which would cross discontinuity point + totalDelay = max(ptrSampleDelay - ptrRand, minPtrDelay); // make sure value doesnt go below this value and cross discontinuity point ptr = In.ar(ptrBus, 1); ptr = ptr - totalDelay; // how far ptr lags behind discontinuity point @@ -285,7 +166,6 @@ SynthDef.new(\gran, { maxGrainDur = (totalDelay / rateCtrl) / SampleRate.ir; durCtrl = min(durCtrl, maxGrainDur); - sig = GrainBuf.ar( 4, densCtrl, @@ -303,157 +183,67 @@ SynthDef.new(\gran, { }).add; -) - - - - -) - -/*( // New Granulator -------------------------------------- - -SynthDef(\buf_grain, { | out=0, gate = 1, amp = 0.5, - sndbuf, envbuf, pan=0, imp=50, - pitchmodeindex=0, sensorpitch=1, sensordensity=1, sensorgdur=0.1, sensorgpan=0, - posModeindex=0, gdurmodeindex=0, gpanmodeindex=0, densitymodeindex=0, - sensorposition=0, impulsemodeindex=0, sensorimpulse=0, - 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, - posMode0, posMode1, posMode2, posMode3, position, - densmode0,densmode1,densmode2,densmode3,densmode4,densmode5,densmode6,densmode7, density, - 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; - gdurmode1 = 0.5; - gdurmode2 = LFNoise1.kr.range(0.1, 0.3); - gdurmode3 = LFNoise1.kr.range(0.1, 0.6); - gdurmode4 = LFNoise1.kr.range(1, 2); - gdurmode5 = LFNoise1.kr.range(1, 4); - gdurmode6 = LFNoise1.kr.range(4, 4); - - gdur = Select.kr(gdurmodeindex, - [gdurmode0, gdurmode1, gdurmode2, gdurmode3, gdurmode4, gdurmode5, gdurmode6, sensorgdur]); - - // grain pan mode STEREO, QUAD, ROTATING - - gpanmode0 = LFNoise1.kr(100).range(-0.2, 0.2); - gpanmode1 = LFSaw.kr(0.33).bipolar.range(-1,1); - gpanmode2 = LFNoise1.kr(100).range(-1, 1); - gpan = Select.kr(gpanmodeindex, - [gpanmode0, gpanmode1, gpanmode2, sensorgpan]); - - - // density mode - - dens0 = 1; - dens1 = 2; - dens2 = 4; - dens3 = 8; - dens4 = 16; - dens5 = 32; - dens6 = 64; - dens7 = 128; - density = Select.kr(densitymodeindex, - [dens0,dens1,dens2,dens3,dens4,dens5,dens6,dens7]); - - - // grain pitch mode -untransposed, random, or sensor controlled - pitchmode0 = 1; - //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)); - pitchmode1 = Demand.kr(Impulse.kr(imp), 0, Drand([1,1, 1,1,1,1, 2, 3, 3, 0.5, 0.5], 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 - posMode0 = 0.2; - posMode1 = (Phasor.ar(0.01, 1 * BufRateScale.ir(b), 0, BufSamples.ir(b)) + LFNoise1.ar(100).bipolar(0.1 * SampleRate.ir) ) / BufSamples.ir(b); - posMode2 = LFNoise1.kr.range(0.05, (BufSamples.ir(b)-1) - 1000 ); - posMode3 = LFNoise1.kr.range(0.1, 3.8 ); - - position = Select.kr(posModeindex, - [posMode0, posMode1, posMode2, posMode3, sensorposition]); - - // 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]); - - env = EnvGen.kr( Env([0, 1, 0], [1, 1], \sin, 1), gate, levelScale: amp, doneAction: 2); - - signal = TGrains.ar(4, impulse, b, pitch, position, gdur, gpan, amp, 4) * env; - - Out.ar(0, signal); - -}).add; -)*/ +)) ( // RUNME 3 ========================================== + // START SYNTHS ------------------------------------- - // START SYNTHS --------------------------------- +r = Synth(\recBuf, [\ptrIn, ~ptrBus, \micIn, ~micBus, \buf, b, \t_trig, 0], ~recGrp); // recorder - r = Synth(\recBuf, [\in, 0, \out, 0, \bufnum, b, \t_trig, 0]); // recorder - ~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~reverbBus], ~sourceGroup); // dry audio signaL - ~reverbFX = Synth(\freeVerb, [\in, ~reverbBus], ~fxGroup); - ~ringMod = Synth(\ringModulator, [\in, ~ringModBus], ~fxGroup); +~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~reverbBus], ~sourceGroup); // dry audio signaL +~reverbFX = Synth(\freeVerb, [\in, ~reverbBus], ~fxGroup); +~ringMod = Synth(\ringModulator, [\in, ~ringModBus], ~fxGroup); - b.zero; - ~g = 1.collect({ - arg n; - Synth(\gran,[ - \amp, 0.15, - // \amp, n.linlin(0,4, -3,-20).dbamp, - \buf, b, // which buffer - \out, 0, - \atk, 1, - \rel, 1, - \gate, 1, - \sync, 1, - \dens, 21, // exprand(2,80), - \baseDur, 1, //0.08 - \durRand, 1, - \rate, 1, - \rateRand, 1, - \pan, 0, - \panRand, 1, - \grainEnv, -1, - \ptrBus, ~ptrBus, // make different style ptrs - //\ptrSampleDelay, n.linlin(0,4, 20000, s.sampleRate*2), - \ptrSampleDelay, 20000, // how far pointer lags behind write head - \ptrRandSamples, 2000, // how much to randomly jump around - \minPtrDelay, 1000, // dont get any closer to the ptr than this - ], ~granGrp); - }); - ); +Synth(\mic, [\in, 0, \out, ~micBus], ~micGrp); +Synth(\ptr, [\buf, b, \out, ~ptrBus], ~ptrGrp); +Synth(\rec, [\ptrIn, ~ptrBus, \micIn, ~micBus, \buf, b], ~recGrp); + + +b.zero; + +~g = 4.collect({ + arg n; + Synth(\gran,[ + \amp, 0.15, + // \amp, n.linlin(0,4, -3,-20).dbamp, + \buf, b, // which buffer + \out, 0, + \atk, 10, + \rel, 10, + \gate, 1, + \sync, 1, + \dens, 21, // exprand(2,80), + \baseDur, 1, //0.08 + \durRand, 1, + \rate, 1, + \rateRand, 1, + \pan, 0, + \panRand, 1, + \grainEnv, -1, + \ptrBus, ~ptrBus, // make different style ptrs + //\ptrSampleDelay, n.linlin(0,4, 20000, s.sampleRate*2), + \ptrSampleDelay, 20000, // how far pointer lags behind write head + \ptrRandSamples, 2000, // how much to randomly jump around + \minPtrDelay, 1000, // dont get any closer to the ptr than this + ], ~granGrp); +}); +); + +); -)); // RUNME 4 ========================================== -// ---------------------------------------------- + +// - - OSC Receivers // ENABLE SENSOR AND SWITCH VALUES OSCFunc.trace(true); // Turn posting on OSCFunc.trace(false); // Turn posting off -(( // OSC Receivers // ENABLE SENSOR AND SWITCH VALUES <-- +( // ---------------------------------------------------- -// ---------------------------------------------------- -~overdubMode= 0; ~pitchMode = 0; ~posMode = 0; ~impulseMode = 1; +~overdubMode= 0; ~pitchMode = 0; ~posMode = 0; ~impulseMode = 0; ~gdurMode=0; ~gpanMode=0; ~channelmode=0; ~instrPanMode=0; @@ -470,444 +260,407 @@ OSCFunc.trace(false); // Turn posting off ~btn13val = -1; ~btn14val = -1; ~btn15val = -1; ~btn16val = -1; - ( // accel gyro quaternion mapping /////////////////// - // msg[1] msg[2] msg[3] X Y Z ==> ROLL, PITCH, YAW +(( // accel gyro quaternion mapping /////////////////// - o = OSCdef(\test, { arg msg, time, addr, recvPort, rlow, rhigh; + // msg[1] msg[2] msg[3] X Y Z ==> ROLL, PITCH, YAW + +o = OSCdef(\test, { arg msg, time, addr, recvPort, rlow, rhigh; + + ~g.do({arg n; n.set(\rateRand, msg[2].linlin(0, 1, 1, 50); )}; ); - ~g.do({arg n; n.set(\rateRand, msg[2].linlin(0, 1, 1, 50); )}; ); - //~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 ); - - // POSITION ------- Z Yaw - ~g1.set(\sensorposition, msg[1].linlin(-0.2, 0.6, 0.05, 3.99)); - ~g1.set(\posModeindex, ~posMode ); - - // RATE ------- X (roll [with PAN]) - - ~g1.set(\sensorimpulse, msg[2].linlin(-1, 1, 5, 50)); - ~g1.set(\impulsemodeindex, ~impulseMode ); - - ~g1.set(\sensorgdur, msg[2].linlin(-1, 1, 0.1, 1)); - ~g1.set(\gdurmodeindex, ~gdurMode ); - - ~g1.set(\sensordensity, msg[2].linlin(-1, 1, 0.1, 1)); - ~g1.set(\densitymodeindex, ~gdurMode ); - - ~g1.set(\sensorgpan, msg[2]); - ~g1.set(\gpanmodeindex, ~gpanMode ); - - //~g1.set(\sensorgpan, msg[2].linlin(-1, 1, -1, 1)); - //~g1.set(\signalChannelIndex, ~channelmode ); - - ~gtrIn.set(\sensorInstrPan, msg[2].wrap(0, 5).linlin(0, 5, -1, 1)); - ~gtrIn.set(\instrPanModeIndex, ~instrPanMode);*/ - // - //msg.postln; - - }; , '/euler'); - ); +}; , '/euler'); +); // ---------------------------------------------------- // send message back to nodejs - m = NetAddr("127.0.0.1", 57100); - // on off osconoff accelerometer data - m.sendMsg("/xyzc", 1); - m.sendMsg("/xyzc", 0); +m = NetAddr("127.0.0.1", 57100); +// on off osconoff accelerometer data +m.sendMsg("/xyzc", 1); +m.sendMsg("/xyzc", 0); // ---------------------------------------------------- // button press mapping /////////////////////////////// // ---------------------------------------------------- - n = NetAddr("127.0.0.1", NetAddr.langPort); +n = NetAddr("127.0.0.1", NetAddr.langPort); - //~switchArray = [0, 0, 0, 0 ,0 ,0 ,0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ]; - //~switchArray.put(15, 1); ~switchArray.put(11, 1); ~switchArray.put(10, 1); ~switchArray.put(9, 1); +p = OSCdef(\keys, { arg msg, time, addr, recvPort; + //msg[1].postln; + ~btnsA[~btn2val, ~btn3val]; + ~btnsB[~btn4val, ~btn5val, ~btn6val, ~btn7val]; + ~btnsC[~btn5val]; - //j = List.new; + ~btnstate = [~btnsA, ~btnsB, ~btnsC]; - //j = ~switchArray.replace("[", "").replace("]", ""); + /// PRESETS !!!!!!!!!!!!!!!!!!!!!!! - //n.sendMsg("/keys", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - //n.sendMsg("/keys",); + if (msg[9] == 1 && msg[10] == 1, { - //n.sendMsg("/keys", 1,2,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); + ( ~btn0val = (~btn0val + 1) % 5 ) ; + switch( ~btn0val, + 0, { "PONTALISTIFANTASTICO".postln; + ~g.do({arg n; n.set(\baseDur, 0.5 )}); + ~g.do({arg n; n.set(\durRand, 1)}); + ~g.do({arg n; n.set(\dens, 32)}); + ~g.do({arg n; n.set(\rate, 1)}); + ~g.do({arg n; n.set(\rateRand, 32)}); + ~g.do({arg n; n.set(\sync, 1)}); + ~g.do({arg n; n.set(\ptrRandSamples, 6400000, )}); + }, - p = OSCdef(\keys, { arg msg, time, addr, recvPort; - //msg[1].postln; - ~btnsA[~btn2val, ~btn3val]; - ~btnsB[~btn4val, ~btn5val, ~btn6val, ~btn7val]; - ~btnsC[~btn5val]; + 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; + ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); }, + 3, { "PONTALISTIFANTASTICO====".postln; + ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); }, + 4, { "PONTALISTIFANTASTICO+++++++++".postln; + ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); }, + ); - ~btnstate = [~btnsA, ~btnsB, ~btnsC]; + }); - /// PRESETS !!!!!!!!!!!!!!!!!!!!!!! + // ============================== + // BUTTON MAPPING + // ============================== - if (msg[9] == 1 && msg[10] == 1, { + // TRIGGER BUTTONS (3) ------------------------------ - ( ~btn0val = (~btn0val + 1) % 5 ) ; - switch( ~btn0val, - 0, { "PONTALISTIFANTASTICO".postln; - - ~g.do({arg n; n.set(\baseDur, 0.5 )}); - ~g.do({arg n; n.set(\durRand, 1)}); - ~g.do({arg n; n.set(\dens, 32)}); - ~g.do({arg n; n.set(\rate, 1)}); - ~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; - ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); }, - 3, { "PONTALISTIFANTASTICO====".postln; - ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); }, - 4, { "PONTALISTIFANTASTICO+++++++++".postln; - ~g.do({arg n; n.set([\baseDur, 0, \durRand, 6, \dens, 1, \rate, 1, \rateRand, 1.1, \sync, 1, \ptrRandSamples, 200000, ])}); }, - ); - - }); - - // ============================== - // BUTTON MAPPING - // ============================== - - // TRIGGER BUTTONS (3) ------------------------------ - - // if SHIFT key is 0: - if (msg[9] == 0, { + // if SHIFT key is 0: + if (msg[9] == 0, { // BUTTON X ----- TRIGGER ONESHOT BUFFER RECORD - if (msg[10] == 1, { - r.set( \in, 0, \l, 0, \t_trig, 1); "/////////// SAMPLING!".postln; { ~recTrigButton.value_(0) }.defer; + if (msg[10] == 1, { + r.set( \in, 0, \l, 0, \t_trig, 1); "/////////// SAMPLING!".postln; { ~recTrigButton.value_(0) }.defer; - }, { - {~recTrigButton.value_(1) }.defer - } ); + }, { + {~recTrigButton.value_(1) }.defer + } ); - // BUTTON X ----> LOOP RECORDING MODE ON/OFF - if (msg[11]==1, - { - ( ~btn2val = (~btn2val + 1) % 3 ) ; - switch( ~btn2val, - 0, { r.set(\l, 0); "RECORD LOOPING OFF".postln; { ~recModeGui.value_(0) }.defer; }, - 1, { r.set(\l, 1); "RECORD LOOPING ON".postln; { ~recModeGui.value_(1) }.defer; }, - 2, { r.set(\l, 0); "ONSET DETECTION ON".postln; { ~recModeGui.value_(2) }.defer; }, - ); - }); + // BUTTON X ----> LOOP RECORDING MODE ON/OFF + if (msg[11]==1, + { + ( ~btn2val = (~btn2val + 1) % 3 ) ; + switch( ~btn2val, + 0, { r.set(\l, 0); "RECORD LOOPING OFF".postln; { ~recModeGui.value_(0) }.defer; }, + 1, { r.set(\l, 1); "RECORD LOOPING ON".postln; { ~recModeGui.value_(1) }.defer; }, + 2, { r.set(\l, 0); "ONSET DETECTION ON".postln; { ~recModeGui.value_(2) }.defer; }, + ); + }); - // BUTTON X ----> OVERDUB RECORDING MODE ON/OFF - if (msg[12]==1, - { - ( ~btn3val = (~btn3val + 1) % 6 ) ; - switch( ~btn3val, - 0, { ~overdubMode = 0; "SAMPLE OVERDUB OFF".postln; }, - 1, { ~overdubMode = 1; "SAMPLE OVERDUB ON 30%".postln; }, - 2, { ~overdubMode = 2; "SAMPLE OVERDUB ON 50%".postln; }, - 3, { ~overdubMode = 3; "SAMPLE OVERDUB ON 75%".postln; }, - 4, { ~overdubMode = 4; "SAMPLE OVERDUB ON 90%".postln; }, - 5, { ~overdubMode = 5; "SAMPLE OVERDUB ON 100%".postln; }, - ) - }); + // BUTTON X ----> OVERDUB RECORDING MODE ON/OFF + if (msg[12]==1, + { + ( ~btn3val = (~btn3val + 1) % 6 ) ; + switch( ~btn3val, + 0, { ~overdubMode = 0; "SAMPLE OVERDUB OFF".postln; }, + 1, { ~overdubMode = 1; "SAMPLE OVERDUB ON 30%".postln; }, + 2, { ~overdubMode = 2; "SAMPLE OVERDUB ON 50%".postln; }, + 3, { ~overdubMode = 3; "SAMPLE OVERDUB ON 75%".postln; }, + 4, { ~overdubMode = 4; "SAMPLE OVERDUB ON 90%".postln; }, + 5, { ~overdubMode = 5; "SAMPLE OVERDUB ON 100%".postln; }, + ) + }); -///// GUI UPDATER CODE ///////////////////////////////////////////////////////////////// - - //// sampler gui - - case - {~overdubMode == 0 }{{~overdubModeGui.value_(0) }.defer; r.set(\overdub, 0); } - {~overdubMode == 1 }{{~overdubModeGui.value_(1) }.defer; r.set(\overdub, 0.3); } - {~overdubMode == 2 }{{~overdubModeGui.value_(2) }.defer; r.set(\overdub, 0.5); } - {~overdubMode == 3 }{{~overdubModeGui.value_(3) }.defer; r.set(\overdub, 0.75); } - {~overdubMode == 4 }{{~overdubModeGui.value_(4) }.defer; r.set(\overdub, 0.9); } - {~overdubMode == 5 }{{~overdubModeGui.value_(5) }.defer; r.set(\overdub, 1); } - {~overdubMode == 6 }{{~overdubModeGui.value_(6) }.defer; r.set(\overdub, 0); } - {~overdubMode == 7 }{{~overdubModeGui.value_(7) }.defer; r.set(\overdub, 0); }; - - // ~recTrigButton - // ~recModeGui - - // 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.5, \rateRand, 1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.1) }); } - {~pitchMode == 3 }{{~pitchModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 1.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.25, \rateRand, 5) }); } - {~pitchMode == 5 }{{~pitchModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\rate, 0.1, \rateRand, 100) }); } - {~pitchMode == 6 }{{~pitchModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\rate, 10, \rateRand, 1000) }); } - {~pitchMode == 7 }{{~pitchModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\rate, 1) }); }; - - case - {~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, 2, \durRand, 1)}); } - {~gdurMode == 2 }{{~durModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\baseDur, 4, \durRand, 1)});} - {~gdurMode == 3 }{{~durModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\baseDur, 1/4, \durRand, 1)});} - {~gdurMode == 4 }{{~durModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\baseDur, 1/8, \durRand, 1)});} - {~gdurMode == 5 }{{~durModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\baseDur, 1/16, \durRand, 1)});} - {~gdurMode == 6 }{{~durModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\baseDur, 1/32, \durRand, 1)});} - {~gdurMode == 7 }{{~durModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\baseDur, 1/64, \durRand, 1)});}; - - case - {~posMode == 0 }{{~posModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames, \minPtrDelay, 1000) }); } - {~posMode == 1 }{{~posModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames/4, \minPtrDelay, 1000 ) }); } - {~posMode == 2 }{{~posModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames/8, \minPtrDelay, 1000 ) }); } - {~posMode == 3 }{{~posModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames/16, \minPtrDelay, 1000 ) }); } - {~posMode == 4 }{{~posModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames/32) }); } - {~posMode == 5 }{{~posModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames/64) }); } - {~posMode == 6 }{{~posModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, 0.001, \minPtrDelay, 10 ) }); } - {~posMode == 7 }{{~posModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\ptrRandSamples, b.numFrames/200000, \minPtrDelay, 1000;) }); }; - - case - {~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)}); } - {~gpanMode == 1 }{{~gPanModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\panRand, 0.25, \pan, 0)}); } - {~gpanMode == 2 }{{~gPanModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\pan, 0, \panRand, 1)}); } - {~gpanMode == 3 }{{~gPanModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } - {~gpanMode == 4 }{{~gPanModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } - {~gpanMode == 5 }{{~gPanModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } - {~gpanMode == 6 }{{~gPanModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } - {~gpanMode == 7 }{{~gPanModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); }; - - case - {~impulseMode == 0 }{{~impulseModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\sync, 1)}); } - {~impulseMode == 1 }{{~impulseModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\sync, 0)}); }; - - ////////////////// instrument mode gui //////////////////////////// - - case - {~instrPanMode == 0 }{{~instrPanModeGui.value_(0) }.defer } - {~instrPanMode == 1 }{{~instrPanModeGui.value_(1) }.defer } - {~instrPanMode == 2 }{{~instrPanModeGui.value_(2) }.defer } - {~instrPanMode == 3 }{{~instrPanModeGui.value_(3) }.defer } - {~instrPanMode == 4 }{{~instrPanModeGui.value_(4) }.defer } - {~instrPanMode == 5 }{{~instrPanModeGui.value_(5) }.defer } - {~instrPanMode == 6 }{{~instrPanModeGui.value_(6) }.defer } - {~instrPanMode == 7 }{{~instrPanModeGui.value_(7) }.defer }; - - case - {~fxMode == 0 }{{~fxModeGui.value_(0) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 0, \mulrate, 0); } - {~fxMode == 1 }{{~fxModeGui.value_(1) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 77, \mulrate, 0.1); } - {~fxMode == 2 }{{~fxModeGui.value_(2) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 277, \mulrate, 10.1);} - {~fxMode == 3 }{{~fxModeGui.value_(3) }.defer; ~gtrIn.set(\out, [~reverbBus, ~ringModBus]); ~ringMod.set(\modulator, 277, \mulrate, 10.1);} - {~fxMode == 4 }{{~fxModeGui.value_(4) }.defer; ~gtrIn.set(\out, ~reverbBus); } - {~fxMode == 5 }{{~fxModeGui.value_(5) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 0, \mulrate, 0); } - {~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, - { - ( ~btn4val = (~btn4val + 1) % 8 ) ; - switch( ~btn4val, - 0, { ~fxMode=0; "fx0".postln; }, - 1, { ~fxMode=1; "fx1".postln; }, - 2, { ~fxMode=2; "fx2".postln; }, - 3, { ~fxMode=3; "fx3".postln; }, - 4, { ~fxMode=4; "fx4".postln; }, - 5, { ~fxMode=5; "fx5".postln; }, - 6, { ~fxMode=6; "fx6".postln; }, - 7, { ~fxMode=7; "fx7".postln; }, - ); - }); - - /////////////////// RESET RANDOM PITCH TO FIXED PITCH IN ONE TAP - - if (msg[14]==1, - { - ( ~btn5val = (~btn5val + 1) % 2 ) ; - switch( ~btn5val, - 0, { ~pitchMode = 0; "PITCH RESET TO UNTRANSPOSED MODE".postln; }, - 1, { ~pitchMode = 1; "PITCH IN SENSOR MODE".postln; } - ); - }); - - // 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) % 13 ) ; - switch(~btn6val, - 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; }, + ///// GUI UPDATER CODE ///////////////////////////////////////////////////////////////// - ) - }); - // BUTTON X ----- G PANNING MODE - // TODO FIX MAPPINGS - GUI AND REALITY DO NOT MATCH - if (msg[16]==1, - { - ( ~btn7val = (~btn7val + 1) % 9 ) ; - switch( ~btn7val, - 0, { ~gpanMode = 0 ; "SIGNAL OFF".postln; }, - 1, { ~gpanMode = 1 ; "DRY FRONT {STERE0}".postln; }, - 2, { ~gpanMode = 2 ; "DRY BACK {STERE0}".postln; }, - 3, { ~gpanMode = 3 ; "L/R PAN {STEREO}".postln; }, - 4, { ~gpanMode = 4 ; "DRY RaND {STEREO}".postln; }, - 5, { ~gpanMode = 5 ; "DRY ROTATE {QUAD}".postln; }, - 6, { ~gpanMode = 6 ; "DRY RaND {QUAD}".postln; }, - 7, { ~gpanMode = 7 ; "DRY SENSOR {QUAD}".postln; }, - 8, { ~gpanMode = 8 ; "PAN RANDOM QUAD".postln; }, - ) - }); + //// sampler gui - }, /// SHIFT 0 LOGIC ENDS HERE -------------------------------------------- - { - // SHIFT IN STATE 1 ======================= .......................... + case + {~overdubMode == 0 }{{~overdubModeGui.value_(0) }.defer; r.set(\overdub, 0); } + {~overdubMode == 1 }{{~overdubModeGui.value_(1) }.defer; r.set(\overdub, 0.3); } + {~overdubMode == 2 }{{~overdubModeGui.value_(2) }.defer; r.set(\overdub, 0.5); } + {~overdubMode == 3 }{{~overdubModeGui.value_(3) }.defer; r.set(\overdub, 0.75); } + {~overdubMode == 4 }{{~overdubModeGui.value_(4) }.defer; r.set(\overdub, 0.9); } + {~overdubMode == 5 }{{~overdubModeGui.value_(5) }.defer; r.set(\overdub, 1); }; - // GTR INPUT ======================= - if (msg[11]==1, - { - ( ~btn10val = (~btn10val + 1) % 9 ) ; + // ~recTrigButton + // ~recModeGui + + // granular gui //////////////////////////////////////////////////////////////// + + // rrand(1,3); exprand(1,2); 5.rand; 1.0.linrand; + 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.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, 1, \rateRand, 5) }); } + {~pitchMode == 5 }{{~pitchModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 10) }); } + {~pitchMode == 6 }{{~pitchModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\rate, 1, \rateRand, 100) }); } + {~pitchMode == 7 }{{~pitchModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\rate, [0.5,1,2,].choose;) }); }; + + case + {~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, 2, \durRand, 1)}); } + {~gdurMode == 2 }{{~durModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\baseDur, 1/4, \durRand, 5)});} + {~gdurMode == 3 }{{~durModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\baseDur, 1/8, \durRand, 100)});} + {~gdurMode == 4 }{{~durModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\baseDur, 1/16, \durRand, 1)});} + {~gdurMode == 5 }{{~durModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\baseDur, 1, \durRand, 100)});} + {~gdurMode == 6 }{{~durModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\baseDur, 1, \durRand, 1000)});} + {~gdurMode == 7 }{{~durModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\baseDur, 1, \durRand, 1)});}; + + case // \ptrSampleDelay + {~posMode == 0 }{{~posModeGui.value_(0) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 0.125, \minPtrDelay, 1000, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 1 }{{~posModeGui.value_(1) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 0.25, \minPtrDelay, 1500, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 2 }{{~posModeGui.value_(2) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 0.5, \minPtrDelay, 15000, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 3 }{{~posModeGui.value_(3) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 1, \minPtrDelay, 15000, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 4 }{{~posModeGui.value_(4) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 2, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 5 }{{~posModeGui.value_(5) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 3, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 6 }{{~posModeGui.value_(6) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 5, \minPtrDelay, 1500, \ptrSampleDelay, s.sampleRate * 1) }); } + + {~posMode == 7 }{{~posModeGui.value_(7) }.defer; ~g.do({arg n; n.set( + \ptrRandSamples, s.sampleRate * 1, \minPtrDelay, 15000; ) }); }; + + //[1,2,3].choose; + + case + {~densMode == 0 }{{~densModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\dens, 1, )}); } + {~densMode == 1 }{{~densModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\dens, 2, )}); } + {~densMode == 2 }{{~densModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\dens, 3, )});} + {~densMode == 3 }{{~densModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\dens, 5, )});} + {~densMode == 4 }{{~densModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\dens, 8, )});} + {~densMode == 5 }{{~densModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\dens, 13, )});} + {~densMode == 6 }{{~densModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\dens, 21, )});} + {~densMode == 7 }{{~densModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\dens, 34, )}); } + {~densMode == 8 }{{~densModeGui.value_(8) }.defer; ~g.do({arg n; n.set(\dens, 55, )}); } + {~densMode == 9 }{{~densModeGui.value_(9) }.defer; ~g.do({arg n; n.set(\dens, 89, )}); } + {~densMode == 10 }{{~densModeGui.value_(10) }.defer; ~g.do({arg n; n.set(\dens, 144, )}); } + {~densMode == 11 }{{~densModeGui.value_(11) }.defer; ~g.do({arg n; n.set(\dens, 233, )}); } + {~densMode == 12 }{{~densModeGui.value_(12) }.defer; ~g.do({arg n; n.set(\dens, 377, )}); }; + + case + {~gpanMode == 0 }{{~gPanModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\panRand, 0.25, \pan, 0)}); } + {~gpanMode == 1 }{{~gPanModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\panRand, 0.25, \pan, 0)}); } + {~gpanMode == 2 }{{~gPanModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\pan, 0, \panRand, 1)}); } + {~gpanMode == 3 }{{~gPanModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } + {~gpanMode == 4 }{{~gPanModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } + {~gpanMode == 5 }{{~gPanModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } + {~gpanMode == 6 }{{~gPanModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); } + {~gpanMode == 7 }{{~gPanModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\panRand, 0)}); }; + + case + {~impulseMode == 0 }{{~impulseModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\sync, 1)}); } + {~impulseMode == 1 }{{~impulseModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\sync, 0)}); }; + + ////////////////// instrument mode gui //////////////////////////// + + case + {~instrPanMode == 0 }{{~instrPanModeGui.value_(0) }.defer } + {~instrPanMode == 1 }{{~instrPanModeGui.value_(1) }.defer } + {~instrPanMode == 2 }{{~instrPanModeGui.value_(2) }.defer } + {~instrPanMode == 3 }{{~instrPanModeGui.value_(3) }.defer } + {~instrPanMode == 4 }{{~instrPanModeGui.value_(4) }.defer } + {~instrPanMode == 5 }{{~instrPanModeGui.value_(5) }.defer } + {~instrPanMode == 6 }{{~instrPanModeGui.value_(6) }.defer } + {~instrPanMode == 7 }{{~instrPanModeGui.value_(7) }.defer }; + + case + {~fxMode == 0 }{{~fxModeGui.value_(0) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 0, \mulrate, 0,); } + {~fxMode == 1 }{{~fxModeGui.value_(1) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 477, \mulrate, 100.1); } + {~fxMode == 2 }{{~fxModeGui.value_(2) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 277, \mulrate, 100.1);} + {~fxMode == 3 }{{~fxModeGui.value_(3) }.defer; ~gtrIn.set(\out, ~reverbBus); ~reverbFX.set(\room, 0.6, \mix, 0.5, \damp, 0); } + {~fxMode == 4 }{{~fxModeGui.value_(4) }.defer; ~gtrIn.set(\out, ~reverbBus); ~reverbFX.set(\room, 0.8, \mix, 0.5, \damp, 0); } + {~fxMode == 5 }{{~fxModeGui.value_(5) }.defer; ~gtrIn.set(\out, ~reverbBus); ~reverbFX.set(\room, 0.95, \mix, 1, \damp, 0);} + {~fxMode == 6 }{{~fxModeGui.value_(6) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 1, \mulrate, 3); } + {~fxMode == 7 }{{~fxModeGui.value_(7) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 2, \mulrate, 5); } + {~fxMode == 8 }{{~fxModeGui.value_(8) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 3, \mulrate, 7); } + {~fxMode == 9 }{{~fxModeGui.value_(9) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 5, \mulrate, 13); } + {~fxMode == 10 }{{~fxModeGui.value_(10) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, 8, \mulrate, 21); } + {~fxMode == 11 }{{~fxModeGui.value_(11) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, rrand(1,1111), \mulrate, 1); } + {~fxMode == 12 }{{~fxModeGui.value_(12) }.defer; ~gtrIn.set(\out, ~ringModBus); ~ringMod.set(\modulator, rrand(1,22111), \mulrate, 1); }; + + //////////////////////////////////////////////////////////////////// + + // BUTTON X ----> toggle fx + if (msg[13]==1, + { + ( ~btn4val = (~btn4val + 1) % 13 ) ; + switch( ~btn4val, + 0, { ~fxMode=0; "fx0".postln; }, + 1, { ~fxMode=1; "fx1".postln; }, + 2, { ~fxMode=2; "fx2".postln; }, + 3, { ~fxMode=3; "fx3".postln; }, + 4, { ~fxMode=4; "fx4".postln; }, + 5, { ~fxMode=5; "fx5".postln; }, + 6, { ~fxMode=6; "fx6".postln; }, + 7, { ~fxMode=7; "fx7".postln; }, + 8, { ~fxMode=8; "fx8".postln; }, + 9, { ~fxMode=9; "fx9".postln; }, + 10, { ~fxMode=10; "fx10".postln; }, + 11, { ~fxMode=11; "fx11".postln; }, + 12, { ~fxMode=12; "fx12".postln; }, + ); + }); + + /////////////////// RESET RANDOM PITCH TO FIXED PITCH IN ONE TAP + + if (msg[14]==1, + { + ( ~btn5val = (~btn5val + 1) % 2 ) ; + switch( ~btn5val, + 0, { ~pitchMode = 0; "PITCH RESET TO UNTRANSPOSED MODE".postln; }, + 1, { ~pitchMode = 1; "PITCH IN SENSOR MODE".postln; } + ); + }); + + // 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) % 13 ) ; + switch(~btn6val, + 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; }, - switch(~btn10val, + ) + }); - 0, { ~gtrIn.set(\instrAmp, 0 ); "DRY SIGNAL OFF".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; }, - 5, { ~instrPanMode=4; "DRY ROTATE {QUAD}".postln; }, - 6, { ~instrPanMode=5; "DRY RaND {QUAD}".postln; }, - 7, { ~instrPanMode=6; "DRY SENSOR {QUAD}".postln; }, - 8, { ~instrPanMode=7; "DRY SENSOR {QUAD}".postln; }, - - ) - }); + // BUTTON X ----- G PANNING MODE + // TODO FIX MAPPINGS - GUI AND REALITY DO NOT MATCH + if (msg[16]==1, + { + ( ~btn7val = (~btn7val + 1) % 9 ) ; + switch( ~btn7val, + 0, { ~gpanMode = 0 ; "SIGNAL OFF".postln; }, + 1, { ~gpanMode = 1 ; "DRY FRONT {STERE0}".postln; }, + 2, { ~gpanMode = 2 ; "DRY BACK {STERE0}".postln; }, + 3, { ~gpanMode = 3 ; "L/R PAN {STEREO}".postln; }, + 4, { ~gpanMode = 4 ; "DRY RaND {STEREO}".postln; }, + 5, { ~gpanMode = 5 ; "DRY ROTATE {QUAD}".postln; }, + 6, { ~gpanMode = 6 ; "DRY RaND {QUAD}".postln; }, + 7, { ~gpanMode = 7 ; "DRY SENSOR {QUAD}".postln; }, + 8, { ~gpanMode = 8 ; "PAN RANDOM QUAD".postln; }, + ) + }); - // BUTTON X && X RESET/ZERO SENSORS [in firmware just here for notificaton] - if (msg[12] == 1, { " ===== EULER ZEROED! =====".postln }, {}); + }, /// SHIFT 0 LOGIC ENDS HERE -------------------------------------------- + + { + // SHIFT IN STATE 1 ======================= .......................... + + // GTR INPUT ======================= + if (msg[11]==1, + { + ( ~btn10val = (~btn10val + 1) % 9 ) ; + + switch(~btn10val, + + 0, { ~gtrIn.set(\instrAmp, 0 ); "DRY SIGNAL OFF".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; }, + 5, { ~instrPanMode=4; "DRY ROTATE {QUAD}".postln; }, + 6, { ~instrPanMode=5; "DRY RaND {QUAD}".postln; }, + 7, { ~instrPanMode=6; "DRY SENSOR {QUAD}".postln; }, + 8, { ~instrPanMode=7; "DRY SENSOR {QUAD}".postln; }, + ) + }); + + // BUTTON X && X RESET/ZERO SENSORS [in firmware just here for notificaton] + if (msg[12] == 1, { " ===== EULER ZEROED! =====".postln }, {}); - // BUTTON X ----- GRANULAR POSITION MODE - if (msg[13]==1, - { - ( ~btn12val = (~btn12val + 1) % 8 ) ; - switch(~btn12val, - 0, { ~posMode = 0; "~posMode 0 ".postln; }, - 1, { ~posMode = 1; "~posMode 1 ".postln; }, - 2, { ~posMode = 2; "~posMode 2".postln; }, - 3, { ~posMode = 3; "~posMode 3".postln; }, - 4, { ~posMode = 5; "~posMode 4".postln; }, - 5, { ~posMode = 6; "~posMode 5".postln; }, - 6, { ~posMode = 7; "~posMode 6 ".postln; }, - 7, { ~posMode = 8; "~posMode 7 ".postln; }, - ) - }); + // BUTTON X ----- GRANULAR POSITION MODE + if (msg[13]==1, + { + ( ~btn12val = (~btn12val + 1) % 8 ) ; + switch(~btn12val, + 0, { ~posMode = 0; "~posMode 0 ".postln; }, + 1, { ~posMode = 1; "~posMode 1 ".postln; }, + 2, { ~posMode = 2; "~posMode 2".postln; }, + 3, { ~posMode = 3; "~posMode 3".postln; }, + 4, { ~posMode = 5; "~posMode 4".postln; }, + 5, { ~posMode = 6; "~posMode 5".postln; }, + 6, { ~posMode = 7; "~posMode 6 ".postln; }, + 7, { ~posMode = 8; "~posMode 7 ".postln; }, + ) + }); - // BUTTON X ----- GRANULAR PITCH MODE - if (msg[14]==1, - { - ( ~btn13val = ((~btn13val + 1) % 8 ) ) ; - switch(~btn13val, - 0, { ~pitchMode = 0; "pitch mode 0".postln; }, - 1, { ~pitchMode = 1; "pitch mode 1".postln; }, - 2, { ~pitchMode = 2; "pitch mode 2".postln; }, - 3, { ~pitchMode = 3; "pitch mode 3".postln; }, - 4, { ~pitchMode = 4; "pitch mode 4".postln; }, - 5, { ~pitchMode = 5; "pitch mode 5".postln; }, - 6, { ~pitchMode = 6; "pitch mode 6".postln; }, - 7, { ~pitchMode = 7; "pitch mode 7".postln; }, - ) - }); + // BUTTON X ----- GRANULAR PITCH MODE + if (msg[14]==1, + { + ( ~btn13val = ((~btn13val + 1) % 8 ) ) ; + switch(~btn13val, + 0, { ~pitchMode = 0; "pitch mode 0".postln; }, + 1, { ~pitchMode = 1; "pitch mode 1".postln; }, + 2, { ~pitchMode = 2; "pitch mode 2".postln; }, + 3, { ~pitchMode = 3; "pitch mode 3".postln; }, + 4, { ~pitchMode = 4; "pitch mode 4".postln; }, + 5, { ~pitchMode = 5; "pitch mode 5".postln; }, + 6, { ~pitchMode = 6; "pitch mode 6".postln; }, + 7, { ~pitchMode = 7; "pitch mode 7".postln; }, + ) + }); - //~durBtn = 1; + //~durBtn = 1; - // BUTTON X ----- GRAIN DURATION MODE - if (msg[15]==1, - { - ( ~btn14val = (~btn14val + 1) % 8 ) ; - switch(~btn14val, - 0, { ~gdurMode = 0; "DURATION MODE 0".postln; }, - 1, { ~gdurMode = 1; "DURATION MODE 1".postln; }, - 2, { ~gdurMode = 2; "DURATION MODE 2".postln; }, - 3, { ~gdurMode = 3; "DURATION MODE 3".postln; }, - 4, { ~gdurMode = 4; "DURATION MODE 4".postln; }, - 5, { ~gdurMode = 5; "DURATION MODE 5".postln; }, - 6, { ~gdurMode = 6; "DURATION MODE 6".postln; }, - 7, { ~gdurMode = 7; "DURATION MODE: SENSOR".postln; }, - ) - }); + // BUTTON X ----- GRAIN DURATION MODE + if (msg[15]==1, + { + ( ~btn14val = (~btn14val + 1) % 8 ) ; + switch(~btn14val, + 0, { ~gdurMode = 0; "DURATION MODE 0".postln; }, + 1, { ~gdurMode = 1; "DURATION MODE 1".postln; }, + 2, { ~gdurMode = 2; "DURATION MODE 2".postln; }, + 3, { ~gdurMode = 3; "DURATION MODE 3".postln; }, + 4, { ~gdurMode = 4; "DURATION MODE 4".postln; }, + 5, { ~gdurMode = 5; "DURATION MODE 5".postln; }, + 6, { ~gdurMode = 6; "DURATION MODE 6".postln; }, + 7, { ~gdurMode = 7; "DURATION MODE: SENSOR".postln; }, + ) + }); - // BUTTON X ----- GRANULAR IMPULSE MODE - if (msg[16]==1, - { - ( ~btn15val = (~btn15val + 1) % 2 ) ; - switch( ~btn15val, - 0, { ~impulseMode = 0; ~g1.set(\impulsemodeindex, 0 ); "IMPULSE MODE FIXED".postln; }, - 1, { ~impulseMode = 1; ~g1.set(\impulsemodeindex, 1 ); "IMPULSE MODE DUST".postln; }, - ) - }); + // BUTTON X ----- GRANULAR IMPULSE MODE + if (msg[16]==1, + { + ( ~btn15val = (~btn15val + 1) % 2 ) ; + switch( ~btn15val, + 0, { ~impulseMode = 0; ~g1.set(\impulsemodeindex, 0 ); "IMPULSE MODE FIXED".postln; }, + 1, { ~impulseMode = 1; ~g1.set(\impulsemodeindex, 1 ); "IMPULSE MODE DUST".postln; }, + ) + }); - }); // SHIFT ONE LOGIC ENDS HERE ================ + }); // SHIFT ONE LOGIC ENDS HERE ================ - } , '/keys'); +} , '/keys'); // } , '/localhostInLevels'); - )); - - +); ~gdurMode = 2; @@ -917,8 +670,10 @@ OSCFunc.trace(false); // Turn posting off // LIVE CODE / PERFORMABLE PARAMETERS ///////////////// // ---------------------------------------------------- // set recorder loop and overdub modes //////////// + // start recording (without button) -r.set(\in, 0, \l, 0, \overdub, 0, \t_trig, 1); + +r.set(\in, 0, \l, 1, \overdub, 0.2, \t_trig, 1); r.set(\l, 0); // looping record on/off 0/1 - MAPPED TO SWITCH 3 r.set(\overdub, 0.9); // overdub mode 0 - 0.99 - MAPPED TO SWITCH 4 @@ -930,34 +685,46 @@ r.set(\overdub, 0.9); // overdub mode 0 - 0.99 - MAPPED TO SWITCH 4 \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, 1 )}); +~g.do({arg n; n.set(\amp, 0.8)}); +~g.do({arg n; n.set(\rateRand, 300 )}); +~g.do({arg n; n.set(\amp, 0.3, \dens, 4 )}); ~g.do({arg n; n.set(\rateRand, 0)}); + +~g.do({arg n; n.set(\baseDur, 2)}); +~g.do({arg n; n.set(\durRand, 100)}); + + ~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(\atk, exprand(0.1, 1) )}); +~g.do({arg n; n.set(\atk, 1000 )}); + +~g.do({arg n; n.set(\rel, 1000 )}); ~g.do({arg n; n.set(\dens, exprand(1,80) )}); -~g.do({arg n; n.set(\dens,1)}); + +~g.do({arg n; n.set(\dens,10)}); ~g.do({arg n; n.set(\panRand, 1 )}); -\ptrSampleDelay, n.linlin(0,4, 20000, s.sampleRate*2), +\ptrSampleDelay, n.linlin(0,4, 20000, s.sampleRate*5), -~g.do({arg n; n.set(\ptrSampleDelay, s.sampleRate * 1) }); -~g.do({arg n; n.set(\ptrRandSamples, 20000 )}); -~g.do({arg n; n.set(\minPtrDelay, 2000000 )}); +~g.do({arg n; n.set(\ptrSampleDelay, s.sampleRate * 4) }); +~g.do({arg n; n.set(\ptrRandSamples, s.sampleRate * 4 )}); -~g.do({arg n; n.set([\baseDur, 10])}); +~g.do({arg n; n.set(\ptrRandSamples, 2000 )}); + +~g.do({arg n; n.set(\minPtrDelay, 200 )}); + +~g.do({arg n; n.set([\baseDur, 0.0100])}); ~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.008, \durRand, 10.1)}); +~g.do({arg n; n.set(\baseDur, 0.3, \durRand, 1, \sync, 1, \dens, 155 )}); ~g.do({arg n; n.set([\baseDur, 1.08, \durRand, 3, \sync, 0, \dens, 25 ])}); diff --git a/live_jackpatchbay.xml b/live_jackpatchbay.xml new file mode 100644 index 0000000..0706cc3 --- /dev/null +++ b/live_jackpatchbay.xml @@ -0,0 +1,76 @@ + + + + + capture_1 + capture_2 + capture_3 + capture_4 + + + Master\/audio_out\ 1 + Master\/audio_out\ 2 + + + SC\ 4CHAN\/audio_out\ 1 + SC\ 4CHAN\/audio_out\ 2 + SC\ 4CHAN\/audio_out\ 3 + SC\ 4CHAN\/audio_out\ 4 + + + out_0 + + + out_0 + out_1 + + + out_1 + out_2 + + + out_3 + out_4 + + + out_1 + out_2 + out_3 + out_4 + + + + + in_0 + + + in_0 + + + in_1 + in_2 + in_3 + in_4 + + + SUPERCOLLIDER\/audio_in\ 1 + SUPERCOLLIDER\/audio_in\ 2 + + + playback_1 + playback_2 + playback_3 + playback_4 + + + + + + + + + + + + + diff --git a/recording_jackpatchbay.xml b/recording_jackpatchbay.xml new file mode 100644 index 0000000..9ded19b --- /dev/null +++ b/recording_jackpatchbay.xml @@ -0,0 +1,112 @@ + + + + + capture_1 + capture_2 + capture_3 + capture_4 + + + SC\ 4CHAN\/audio_out\ 1 + SC\ 4CHAN\/audio_out\ 2 + SC\ 4CHAN\/audio_out\ 3 + SC\ 4CHAN\/audio_out\ 4 + + + out_0 + + + out_0 + out_1 + + + out_1 + out_2 + + + out_3 + out_4 + + + out_1 + out_2 + out_3 + out_4 + + + Master\/audio_out\ 1 + Master\/audio_out\ 2 + + + SUPERCOLLIDER\/audio_out\ 1 + SUPERCOLLIDER\/audio_out\ 2 + SC\ GTR\/audio_out\ 1 + SC\ GTR\/audio_out\ 2 + + + SC\ GTR\/audio_out\ 1 + SC\ GTR\/audio_out\ 2 + + + + + in_0 + + + in_0 + + + in_1 + in_2 + in_3 + in_4 + + + \ GuitarX\/audio_in\ 1 + \ GuitarX\/audio_in\ 2 + + + SUPERCOLLIDER\/audio_in\ 1 + SUPERCOLLIDER\/audio_in\ 2 + + + SC\ GTR\/audio_in\ 1 + SC\ GTR\/audio_in\ 2 + + + SUPERCOLLIDER\/audio_in\ 1 + SUPERCOLLIDER\/audio_in\ 2 + + + SC\ 4CHAN\/audio_in\ 1 + SC\ 4CHAN\/audio_in\ 2 + SC\ 4CHAN\/audio_in\ 3 + SC\ 4CHAN\/audio_in\ 4 + + + Master\/audio_in\ 1 + Master\/audio_in\ 2 + + + playback_1 + playback_2 + playback_3 + playback_4 + + + + + + + + + + + + + + + + + diff --git a/start_jackd.sh b/start_jackd.sh index ad37481..36f789f 100755 --- a/start_jackd.sh +++ b/start_jackd.sh @@ -1,5 +1,7 @@ # /usr/bin/jackd -u -dalsa -dhw:USB -r44100 -p512 -n3 -S + killall -9 jackd -/usr/bin/jackd -u -dalsa -r44100 -p256 -n3 -D -Chw:U192k -Phw:U192k +/usr/bin/jackd -aa -u -dalsa -r44100 -p512 -n3 -D -Chw:U192k -Phw:U192k +