adapting gui to new granular method

master
Rob Canning 2022-11-20 01:07:41 +01:00
parent 31a5d4a27a
commit 9543dbd72e
3 changed files with 319 additions and 60 deletions

View File

@ -134,6 +134,7 @@ VLayout(
~durModeGui = QPopUpMenu.new(~grainGui, Rect(10,150,300,40))
.items_(["0.1","0.2","0.1 - 1", "0.1 - 1", "0.5 - 1", "0.1 - 3"])
.font_(Font.default.size_(35))
.value_(~gdurmode)
.stringColor_(Color.black).background_(Color.yellow);
StaticText(~grainGui, Rect(50,50,300,40)).string_("DENSITY / VOICES").background_(Color.clear).stringColor_(Color.black).font_(Font.default.size_(30));
@ -151,6 +152,9 @@ VLayout(
.font_(Font.default.size_(35)).background_(Color.yellow)
.value_(0);
~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));
~outAmpModeGui = QSlider(~grainGui, Rect(55, 60, 240, 40)).value_(0.5)
.action_({
~g1.set(\amp, ~outAmpModeGui.value);

371
gtr.scd
View File

@ -1,6 +1,8 @@
// RUNME 0 =========================================
// todo countdown on density voices
( s.reboot{
s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
s.options.sampleRate = 44100; // also tried with 44000 value
@ -14,7 +16,7 @@
// RUNME 1 =========================================
( // SETUP -----------------------------------------
( // SETUP ---------------=--------------------------
// Allocate a 4 second mono buffer
b = Buffer.alloc(s, s.sampleRate * 4.0, 1);
~b1 = Buffer.alloc(s, s.sampleRate * 4.0, 1);
@ -45,7 +47,13 @@ s.plotTree;
// RUNME 2 ==========================================
// -------------------------------------------------
(( // DEFINE SYNTHS --------------------------------- <--
(( // DEFINE SYNTHS ---------------------------------
s.meter;
// -------------------------------------------------
( // direct signal + reverb -------------------------
@ -79,9 +87,9 @@ SynthDef("freeVerb", {
arg in=0;
var signal, dry, wet;
dry = In.ar(in);
wet = FreeVerb.ar(dry, mix:0.5, room:1, damp:0);
wet = FreeVerb.ar(dry, mix:0.5, room:0.99, damp:0.5,);
signal = wet * 0.9;
Out.ar(0, signal);
Out.ar(0, signal!2);
}).add;
);
@ -97,27 +105,12 @@ SynthDef("ringModulator", {
);
( // mono buffer recorder ----------------------------
// with loop and overdub modes /////////////////////
// make record togglable between looping, direct or onset detection trigger
SynthDef("recBuf",{
arg in=0, out=0, bufnum=0, t_trig=0, l=0, overdub=0;
var sig, chain, onsets;
sig = SoundIn.ar(in);
// Onsets
chain = FFT(LocalBuf(512), sig);
onsets = Onsets.kr(chain, MouseX.kr(0,1), \rcomplex);
RecordBuf.ar(sig, bufnum, loop:l,
preLevel: overdub,
doneAction: 0, trigger:t_trig,);
}).add;
);
// ---------~positionmode = 1; -------------------------------------------
( // Granulator --------------------------------------
( // Granulator --------------------------------------r.get(\in).postln;
// ----------------------------------------------------
// a custom envelope
@ -126,6 +119,193 @@ SynthDef("recBuf",{
//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,
positionmodeindex=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,
positionmode0, positionmode1, positionmode2, positionmode3, 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
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);
positionmode2 = LFNoise1.kr.range(0.05, (BufSamples.ir(b)-1) - 1000 );
positionmode3 = LFNoise1.kr.range(0.1, 3.8 );
position = Select.kr(positionmodeindex,
[positionmode0, positionmode1, positionmode2, positionmode3, 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);
);
(
SynthDef.new(\mic, {
arg in=0, out=0, amp=1;
var sig;
sig = SoundIn.ar(in) * amp;
Out.ar(out, sig);
}).add;
SynthDef.new(\ptr, {
arg out=0, buf=0;
var sig;
sig = Phasor.ar(0, BufRateScale.kr(buf), 0, BufFrames.kr(buf));
Out.ar(out, sig);
}).add;
SynthDef.new(\rec, {
arg ptrIn=0, micIn=0, buf=0;
var ptr, sig;
ptr = In.ar(ptrIn, 1);
sig = In.ar(micIn, 1);
BufWr.ar(sig, buf, ptr);
}).add;
( // 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;
var sig, ptr, chain, onsets;
sig = In.ar(in, 1);
ptr = In.ar(ptrIn, 1);
// Onsets
//chain = FFT(LocalBuf(512), sig);
//onsets = Onsets.kr(chain, MouseX.kr(0,1), \rcomplex);
RecordBuf.ar(sig, bufnum, loop:l,
preLevel: overdub,
doneAction: 0, trigger:t_trig, offset: ptr,);
}).add;
);
SynthDef.new(\gran, {
arg amp=0.5, out=0, buf=0,
atk=1, rel=1, gate=1,
sync=1, dens=40,
baseDur=0.05, durRand=1,
rate=1, rateRand=1,
pan=0, panRand=0,
grainEnv=(-1), ptrBus=0, ptrSampleDelay=20000,
ptrRandSamples=5000, minPtrDelay=1000;
var sig, env, densCtrl, durCtrl, rateCtrl, panCtrl, ptr, ptrRand, totalDelay, maxGrainDur;
env= EnvGen.kr(Env.asr(atk,1,rel),gate, doneAction:2);
densCtrl = Select.ar(sync, [Dust.ar(dens), Impulse.ar(dens)]);
durCtrl = baseDur * LFNoise1.ar(100).exprange(1/durRand, durRand);
rateCtrl = rate * LFNoise1.ar(100).exprange(1/rateRand, rateRand);
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
ptr = In.ar(ptrBus, 1);
ptr = ptr - totalDelay; // how far ptr lags behind discontinuity point
ptr = ptr / BufFrames.kr(buf); //normalise to 0 - 1 range
maxGrainDur = (totalDelay / rateCtrl) / SampleRate.ir;
durCtrl = min(durCtrl, maxGrainDur);
sig = GrainBuf.ar(
2,
densCtrl,
durCtrl,
buf,
rateCtrl,
ptr,
2,
panCtrl,
grainEnv
);
sig = sig * env * amp;
Out.ar(out, sig);
}).add;
)
)
( // New Granulator --------------------------------------
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,
@ -162,20 +342,7 @@ SynthDef(\buf_grain, { | out=0, gate = 1, amp = 0.5,
gpan = Select.kr(gpanmodeindex,
[gpanmode0, gpanmode1, gpanmode2, sensorgpan]);
// grain pitch mode -untransposed, random, or sensor controlled
Scale.minor.degrees.midiratio;
/* 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;
// 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));
@ -211,27 +378,32 @@ SynthDef(\buf_grain, { | out=0, gate = 1, amp = 0.5,
Out.ar(0, signal);
}).add;
);
)
(( // RUNME 3 ==========================================
// START SYNTHS ---------------------------------
// ----------------------------------------------------
r = Synth(\recBuf, [\in, 0, \out, 0, \bufnum, b, \t_trig, 0]); // recorder
~g1 = Synth(\buf_grain, [\sndbuf, b, \amp, 0.5, \envbuf, -1, \gate, 1, doneAction: 2, ], ~fxGroup); // granulate
~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~ringModBus], ~sourceGroup); // dry audio signaL
~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~reverbBus], ~sourceGroup); // dry audio signaL
~reverbFX = Synth(\freeVerb, [\in, ~reverbBus], ~fxGroup);
~ringMod = Synth(\ringModulator, [\in, ~ringModBus], ~fxGroup);
));
r.get(\in).value;
~ringMod.set(\in, 9);
~gtrIn.set(\out, 0);
~gtrIn.set(\out, ~ringModBus);
~gtrIn.set(\out, ~reverbBus);
~gtrIn.set(\out, [~reverbBus, ~ringModBus]);
//~ringMod.set(\in, 9);
//~gtrIn.set(\out, 0);
//~gtrIn.set(\out, ~ringModBus);
//~gtrIn.set(\out, ~reverbBus);
//~gtrIn.set(\out, [~reverbBus, ~ringModBus]);
~ringMod.set(\modulator, 0);
~ringMod.set(\mulrate, 0);
@ -377,6 +549,72 @@ OSCFunc.trace(false); // Turn posting off
)
});
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 == 4 }{{~durModeGui.value_(4) }.defer}
{~gdurmode == 5 }{{~durModeGui.value_(5) }.defer}
{~gdurmode == 6 }{{~durModeGui.value_(6) }.defer}
{~gdurmode == 7 }{{~durModeGui.value_(7) }.defer};
case
{~pitchmode == 0 }{{~pitchModeGui.value_(0) }.defer}
{~pitchmode == 1 }{{~pitchModeGui.value_(1) }.defer}
{~pitchmode == 2 }{{~pitchModeGui.value_(2) }.defer}
{~pitchmode == 3 }{{~pitchModeGui.value_(3) }.defer}
{~pitchmode == 4 }{{~pitchModeGui.value_(4) }.defer}
{~pitchmode == 5 }{{~pitchModeGui.value_(5) }.defer}
{~pitchmode == 6 }{{~pitchModeGui.value_(6) }.defer}
{~pitchmode == 7 }{{~pitchModeGui.value_(7) }.defer};
case
{~durationmode == 0 }{{~durationModeGui.value_(0) }.defer}
{~durationmode == 1 }{{~durationModeGui.value_(1) }.defer}
{~durationmode == 2 }{{~durationModeGui.value_(2) }.defer}
{~durationmode == 3 }{{~durationModeGui.value_(3) }.defer}
{~durationmode == 4 }{{~durationModeGui.value_(4) }.defer}
{~durationmode == 5 }{{~durationModeGui.value_(5) }.defer}
{~durationmode == 6 }{{~durationModeGui.value_(6) }.defer}
{~durationmode == 7 }{{~durationModeGui.value_(7) }.defer};
case
{~positionmode == 0 }{{~positionModeGui.value_(0) }.defer}
{~positionmode == 1 }{{~positionModeGui.value_(1) }.defer}
{~positionmode == 2 }{{~positionModeGui.value_(2) }.defer}
{~positionmode == 3 }{{~positionModeGui.value_(3) }.defer}
{~positionmode == 4 }{{~positionModeGui.value_(4) }.defer}
{~positionmode == 5 }{{~positionModeGui.value_(5) }.defer}
{~positionmode == 6 }{{~positionModeGui.value_(6) }.defer}
{~positionmode == 7 }{{~positionModeGui.value_(7) }.defer};
case
{~gpanmode == 0 }{{~panModeGui.value_(0) }.defer}
{~gpanmode == 1 }{{~panModeGui.value_(1) }.defer}
{~gpanmode == 2 }{{~panModeGui.value_(2) }.defer}
{~gpanmode == 3 }{{~panModeGui.value_(3) }.defer}
{~gpanmode == 4 }{{~panModeGui.value_(4) }.defer}
{~gpanmode == 5 }{{~panModeGui.value_(5) }.defer}
{~gpanmode == 6 }{{~panModeGui.value_(6) }.defer}
{~gpanmode == 7 }{{~panModeGui.value_(7) }.defer};
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
{~impulsemode == 0 }{{~impulseModeGui.value_(0) }.defer}
{~impulsemode == 1 }{{~impulseModeGui.value_(1) }.defer}
{~impulsemode == 2 }{{~impulseModeGui.value_(2) }.defer}
// BUTTON X ----> toggle fx
@ -392,7 +630,6 @@ OSCFunc.trace(false); // Turn posting off
);
});
~gtrIn.set(\out, ~ringModBus);
@ -425,13 +662,20 @@ OSCFunc.trace(false); // Turn posting off
});
// BUTTON X ----- G PANNING MODE
// TODO FIX MAPPINGS - GUI AND REALITY DO NOT MATCH
if (msg[16]==1,
{
( ~btn7val = (~btn7val + 1) % 3 ) ;
( ~btn7val = (~btn7val + 1) % 9 ) ;
switch( ~btn7val,
0, { ~gpanmode = 0 ; "PAN STEREO".postln; },
1, { ~gpanmode = 1 ; "PAN QUAD ROTATIONS".postln; },
2, { ~gpanmode = 2 ; "PAN RANDOM QUAD".postln; },
0, { ~gpanmode = 0 ; "SIGNAL OFF".postln; { ~gPanModeGui.value_(0)}.defer },
1, { ~gpanmode = 1 ; "DRY FRONT {STERE0}".postln; { ~gPanModeGui.value_(1)}.defer },
2, { ~gpanmode = 2 ; "DRY BACK {STERE0}".postln; { ~gPanModeGui.value_(2)}.defer },
3, { ~gpanmode = 3 ; "L/R PAN {STEREO}".postln; { ~gPanModeGui.value_(3)}.defer },
4, { ~gpanmode = 4 ; "DRY RaND {STEREO}".postln; { ~gPanModeGui.value_(4)}.defer },
5, { ~gpanmode = 5 ; "DRY ROTATE {QUAD}".postln; { ~gPanModeGui.value_(5)}.defer },
6, { ~gpanmode = 6 ; "DRY RaND {QUAD}".postln; { ~gPanModeGui.value_(6)}.defer },
7, { ~gpanmode = 7 ; "DRY SENSOR {QUAD}".postln; { ~gPanModeGui.value_(7)}.defer },
8, { ~gpanmode = 8 ; "PAN RANDOM QUAD".postln; { ~gPanModeGui.value_(8)}.defer },
)
});
@ -486,11 +730,11 @@ OSCFunc.trace(false); // Turn posting off
switch(~btn13val,
0, { ~pitchmode = 0; "pitch array 0".postln; { ~pitchModeGui.value_(0) }.defer },
1, { ~pitchmode = 1; "pitch array 1".postln; { ~pitchModeGui.value_(1) }.defer },
2, { ~pitchmode = 2; "pitch array 0".postln; { ~pitchModeGui.value_(2) }.defer },
3, { ~pitchmode = 3; "pitch array 0".postln; { ~pitchModeGui.value_(3) }.defer },
4, { ~pitchmode = 4; "pitch array 2".postln; { ~pitchModeGui.value_(4) }.defer },
5, { ~pitchmode = 5; "pitch array 3".postln; { ~pitchModeGui.value_(5) }.defer },
6, { ~pitchmode = 6; "pitch array 4".postln; { ~pitchModeGui.value_(6) }.defer },
2, { ~pitchmode = 2; "pitch array 2".postln; { ~pitchModeGui.value_(2) }.defer },
3, { ~pitchmode = 3; "pitch array 3".postln; { ~pitchModeGui.value_(3) }.defer },
4, { ~pitchmode = 4; "pitch array 4".postln; { ~pitchModeGui.value_(4) }.defer },
5, { ~pitchmode = 5; "pitch array 5".postln; { ~pitchModeGui.value_(5) }.defer },
6, { ~pitchmode = 6; "pitch array 6".postln; { ~pitchModeGui.value_(6) }.defer },
7, { ~pitchmode = 7; ~g1.set(\rlow, -0.8 ); ~g1.set(\rhigh, 1.5);
"PITCH MODE RANDOM 4".postln; { ~pitchModeGui.value_(7) }.defer },
8, { ~pitchmode = 7; ~g1.set(\rlow, -3 ); ~g1.set(\rhigh, 3);
@ -532,9 +776,17 @@ OSCFunc.trace(false); // Turn posting off
}); // SHIFT ONE LOGIC ENDS HERE ================
} , '/keys');
// } , '/keys');
} , '/localhostInLevels');
));
~gdurmode = 2;
// ----------------------------------------------------
// LIVE CODE / PERFORMABLE PARAMETERS /////////////////
// ----------------------------------------------------
@ -572,11 +824,11 @@ r.set(\overdub, 0.9); // overdub mode 0 - 0.99 - MAPPED TO SWITCH 4
~channelmode = 1;
~ringMod.set(\in, 9);
~gtrIn.set(\out, 0);
~gtrIn.set(\out, ~ringModBus);
~gtrIn.set(\out, ~reverbBus);
~gtrIn.set(\out, [~reverbBus, ~ringModBus]);
//~ringMod.set(\in, 0);
//~gtrIn.set(\out, 0);
//~gtrIn.set(\out, ~ringModBus);
//~gtrIn.set(\out, ~reverbBus);
//~gtrIn.set(\out, [~reverbBus, ~ringModBus]);
~ringMod.set(\modulator, 77, \mulrate, 0.1);
~ringMod.set(\modulator, 0, \mulrate, 0);
@ -597,7 +849,8 @@ a = Scale.major;
/////////////////////////////////////////////////
// -----------------------------------------------
~btn4val = 2;
~gdurmode = 4;
// list all open ports
// -----------------------------------------------

View File

@ -1,3 +1,5 @@
# /usr/bin/jackd -u -dalsa -dhw:USB -r44100 -p512 -n3 -S
/usr/bin/jackd -u -dalsa -r44100 -p256 -n3 -D -Chw:U192k -Phw:U192k
killall -9 jackd
/usr/bin/jackd -u -dalsa -r44100 -p256 -n3 -D -Chw:U192k -Phw:U192k