gtr+ working with algomom

master
Rob Canning 2023-02-20 09:54:36 +01:00
parent 1e7cc12bdd
commit b8785b9782
6 changed files with 927 additions and 578 deletions

245
gtr.scd
View File

@ -1,45 +1,44 @@
/*RUN*/
// RUNME 0 =========================================
// =========================================
(
Server.default.waitForBoot { // see below .bundle timings for starting synths etc.
// SETUP ---------------=--------------------------
b = Buffer.alloc(s, s.sampleRate * 10, 1); // Allocate a 5 second mono buffer
b = Buffer.alloc(s, s.sampleRate * 10, 1); // Allocate a 5 second mono buffer
// Open port 57121 for ESP32 UDP OSC
thisProcess.openUDPPort(57121);
// Open port 57121 for ESP32 UDP OSC
thisProcess.openUDPPort(57121);
// allocate busses
~reverbBus = Bus.audio(s, 1);
~ringModBus = Bus.audio(s, 1);
~micBus = Bus.audio(s,1);
~ptrBus = Bus.audio(s,1);
// allocate busses
~reverbBus = Bus.audio(s, 1);
~ringModBus = Bus.audio(s, 1);
~micBus = Bus.audio(s,1);
~ptrBus = Bus.audio(s,1);
//~sourceGrp = Group.new;
//~fxGrp = Group.after(~sourceGrp);
// create group order
~micGrp = Group.new;
~ptrGrp = Group.after(~micGrp);
~recGrp = Group.after(~ptrGrp);
~granGrp = Group.after(~recGrp);
~fxGrp = Group.after(~micGrp);
// create group order
~micGrp = Group.new;
~ptrGrp = Group.after(~micGrp);
~recGrp = Group.after(~ptrGrp);
~granGrp = Group.after(~recGrp);
~fxGrp = Group.after(~micGrp);
//load the gui
"/home/rob/gtr/GUI.scd".load;
s.plotTree; s.meter;
// RUNME 2 ==========================================
// DEFINE SYNTHS ---------------------------------
//load the gui
"/home/rob/gtr/GUI.scd".load;
s.plotTree;
s.meter;
// RUNME 2 ==========================================
s.makeBundle(1.0, {
// -------------------------------------------------
// DEFINE SYNTHS ---------------------------------
// -------------------------------------------------
// direct signal + reverb -------------------------
///// outs set to 2 /// for recording to ardour .... fork todo
SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=2, sensorInstrPan=0, instrPitch=0.7, instrAmp=1;
// direct signal + reverb -------------------------
///// outs set to 2 /// for recording to ardour .... fork todo
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);
@ -57,18 +56,18 @@ SynthDef("dryIn", { arg in=0, instrPanModeIndex=0, out=2, sensorInstrPan=0, ins
//wet = PitchShift.ar(signal, pitchRatio: instrPitch, pitchDispersion: 0.3, timeDispersion: 0.1);
Out.ar(out, signal);
//Out.ar(0, Mix.ar( [signal, wet] ));
}).add;
}).add;
SynthDef("freeVerb", {
SynthDef("freeVerb", {
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:mix, room:room, damp:damp,);
signal = wet * 0.9;
Out.ar(2, signal!2);
}).add;
}).add;
SynthDef("ringModulator", {
SynthDef("ringModulator", {
arg in=0, modulator=300, mulrate=0.2;
var signal, rm , carrier, multiplier;
signal = In.ar(in);
@ -76,16 +75,16 @@ SynthDef("ringModulator", {
rm = signal * SinOsc.ar(modulator, mul:multiplier);
//signal = (rm + signal) * 0.5;
Out.ar(2, rm!2);
}).add;
}).add;
SynthDef.new(\mic, {
SynthDef.new(\mic, {
arg in=0, out=0, amp=1;
var sig;
sig = SoundIn.ar(in) * amp;
Out.ar(out, sig);
}).add;
}).add;
SynthDef.new(\ptr, {
SynthDef.new(\ptr, {
arg out=0, buf=0, ptrMode=0, rate=1;
var sig;
sig = Select.ar(ptrMode, [
@ -95,12 +94,12 @@ SynthDef.new(\ptr, {
]);
Out.ar(out, sig);
}).add;
}).add;
// mono buffer recorder ----------------------------
// with loop and overdub modes /////////////////////
// mono buffer recorder ----------------------------
// with loop and overdub modes /////////////////////
SynthDef("recBuf",{
SynthDef("recBuf",{
arg micIn=0, ptrIn=0, bufnum=0, t_trig=0, l=0, overdub=0;
var sig, ptr, chain, onsets;
@ -118,7 +117,7 @@ SynthDef("recBuf",{
offset: ptr);
}).add;
SynthDef.new(\gran, {
SynthDef.new(\gran, {
arg amp=0.5, out=0, buf=0,
atk=1, rel=1, gate=1,
sync=1, dens=40,
@ -161,27 +160,27 @@ SynthDef.new(\gran, {
sig = sig * env * amp;
Out.ar(out, sig);
}).add;
}).add;
}); //end make bundle
// RUNME 3 ==========================================
// RUNME 3 ==========================================
s.makeBundle(2.0, {
s.makeBundle(2.0, {
// START SYNTHS -------------------------------------
// START SYNTHS -------------------------------------
~mic = Synth(\mic, [\in, 0, \out, ~micBus], ~micGrp);
~pointer = Synth(\ptr, [\buf, b, \out, ~ptrBus], ~ptrGrp);
// todo make togglable between fx and dry feeding sampler
r = Synth(\recBuf, [\ptrIn, ~ptrBus, \micIn, ~micBus, \buf, b, \t_trig, 0], ~recGrp); // recorder
~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~reverbBus], ~micGrp); // dry audio signaL
~reverbFX = Synth(\freeVerb, [\in, ~reverbBus], ~fxGrp);
~ringMod = Synth(\ringModulator, [\in, ~ringModBus], ~fxGrp);
~mic = Synth(\mic, [\in, 0, \out, ~micBus], ~micGrp);
~pointer = Synth(\ptr, [\buf, b, \out, ~ptrBus], ~ptrGrp);
// todo make togglable between fx and dry feeding sampler
r = Synth(\recBuf, [\ptrIn, ~ptrBus, \micIn, ~micBus, \buf, b, \t_trig, 0], ~recGrp); // recorder
~gtrIn = Synth(\dryIn, [\instrAmp, 1, \out, ~reverbBus], ~micGrp); // dry audio signaL
~reverbFX = Synth(\freeVerb, [\in, ~reverbBus], ~fxGrp);
~ringMod = Synth(\ringModulator, [\in, ~ringModBus], ~fxGrp);
~g = 1.collect({
~g = 1.collect({
arg n;
Synth(\gran,[
\amp, 0.25,
@ -206,7 +205,7 @@ r = Synth(\recBuf, [\ptrIn, ~ptrBus, \micIn, ~micBus, \buf, b, \t_trig, 0], ~re
\ptrRandSamples, 2000, // how much to randomly jump around
\minPtrDelay, 1000, // dont get any closer to the ptr than this
], ~granGrp);
});
});
}); // end makeBundle
@ -214,28 +213,28 @@ r = Synth(\recBuf, [\ptrIn, ~ptrBus, \micIn, ~micBus, \buf, b, \t_trig, 0], ~re
// RUNME 4 ==========================================
// - - OSC Receivers // ENABLE SENSOR AND SWITCH VALUES
( // ----------------------------------------------------
// - - OSC Receivers // ENABLE SENSOR AND SWITCH VALUES
( // ----------------------------------------------------
r.set(\l, 1);
~overdubMode= 0;
~pitchMode = 0;
~posMode = 6;
~densMode= 4;
~impulseMode = 0;
~gdurMode=0;
~gpanMode=0;
~channelmode=0;
~instrPanMode=0;
r.set(\l, 1);
~overdubMode= 0;
~pitchMode = 0;
~posMode = 6;
~densMode= 4;
~impulseMode = 0;
~gdurMode=0;
~gpanMode=0;
~channelmode=0;
~instrPanMode=0;
~btn0val = -1; ~btn1val = -1; ~btn2val = -1; ~btn3val = -1;
~btn4val = -1; ~btn5val = -1; ~btn6val = -1; ~btn7val = -1;
~btn8val = -1; // shift buttons
~btn0val = -1; ~btn1val = -1; ~btn2val = -1; ~btn3val = -1;
~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;
~btn9val = -1; ~btn10val = -1; ~btn11val = -1; ~btn12val = -1;
~btn13val = -1; ~btn14val = -1; ~btn15val = -1; ~btn16val = -1;
(( // accel gyro quaternion mapping ///////////////////
(( // accel gyro quaternion mapping ///////////////////
// msg[1] msg[2] msg[3] X Y Z ==> ROLL, PITCH, YAW
@ -244,7 +243,7 @@ r.set(\l, 1);
if ( ~pitchMode == 7,
{
//"it's 7".postln;
// msg.postln;
// msg.postln;
~g.do({arg n; n.set( \rateRand, 1)}; );
~g.do({arg n; n.set( \rate, msg[2].linlin(-0.5, 0.5, 0.125,2);
//\rateRand, msg[3].linlin(0, -0.5, 1, 10);
@ -267,20 +266,20 @@ r.set(\l, 1);
}; , '/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);
// ----------------------------------------------------
// 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);
// ----------------------------------------------------
// button press mapping ///////////////////////////////
// ----------------------------------------------------
// ----------------------------------------------------
// button press mapping ///////////////////////////////
// ----------------------------------------------------
n = NetAddr("127.0.0.1", NetAddr.langPort);
n = NetAddr("127.0.0.1", NetAddr.langPort);
p = OSCdef(\keys, { arg msg, time, addr, recvPort;
p = OSCdef(\keys, { arg msg, time, addr, recvPort;
// /// PRESETS !!!!!!!!!!!!!!!!!!!!!!!
//
@ -418,19 +417,20 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
//[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, )}); };
{~densMode == 0 }{{~densModeGui.value_(0) }.defer; ~g.do({arg n; n.set(\dens, 0, )}); }
{~densMode == 1 }{{~densModeGui.value_(1) }.defer; ~g.do({arg n; n.set(\dens, 1, )}); }
{~densMode == 2 }{{~densModeGui.value_(2) }.defer; ~g.do({arg n; n.set(\dens, 2, )}); }
{~densMode == 3 }{{~densModeGui.value_(3) }.defer; ~g.do({arg n; n.set(\dens, 3, )});}
{~densMode == 4 }{{~densModeGui.value_(4) }.defer; ~g.do({arg n; n.set(\dens, 5, )});}
{~densMode == 5 }{{~densModeGui.value_(5) }.defer; ~g.do({arg n; n.set(\dens, 8, )});}
{~densMode == 6 }{{~densModeGui.value_(6) }.defer; ~g.do({arg n; n.set(\dens, 13, )});}
{~densMode == 7 }{{~densModeGui.value_(7) }.defer; ~g.do({arg n; n.set(\dens, 21, )});}
{~densMode == 8 }{{~densModeGui.value_(8) }.defer; ~g.do({arg n; n.set(\dens, 34, )}); }
{~densMode == 9 }{{~densModeGui.value_(9) }.defer; ~g.do({arg n; n.set(\dens, 55, )}); }
{~densMode == 10 }{{~densModeGui.value_(10) }.defer; ~g.do({arg n; n.set(\dens, 89, )}); }
{~densMode == 11 }{{~densModeGui.value_(11) }.defer; ~g.do({arg n; n.set(\dens, 144, )}); }
{~densMode == 12 }{{~densModeGui.value_(12) }.defer; ~g.do({arg n; n.set(\dens, 233, )}); }
{~densMode == 13 }{{~densModeGui.value_(13) }.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)}); }
@ -509,10 +509,14 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
// 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 ) ;
( ~btn6val = (~btn6val + 1) % 14 ) ;
switch(~btn6val,
0, { ~densMode = 0; "DENSITY MODE 0".postln; },
1, { ~densMode = 1; "DENSITY MODE 1".postln; },
2, { ~densMode = 2; "DENSITY MODE 2".postln; },
@ -526,13 +530,32 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
10, { ~densMode = 10; "DENSITY MODE 10".postln; },
11, { ~densMode = 11; "DENSITY MODE 11".postln; },
12, { ~densMode = 12; "DENSITY MODE 12".postln; },
13, { ~densMode = 13; "DENSITY MODE 13".postln; },
)
});
if (msg[16]==1,
{
( ~btn7val = (~btn7val + 1) % 2 ) ;
switch( ~btn7val,
0, { ~densMode = 0; "DENSITY TOGGLE 0".postln; },
1, { ~btn6val = (~btn6val - 1); "DENSITY TOGGLE 1".postln;
},
)
});
// BUTTON X ----- G PANNING MODE
// TODO FIX MAPPINGS - GUI AND REALITY DO NOT MATCH
/*
if (msg[16]==1,
{
( ~btn7val = (~btn7val + 1) % 9 ) ;
@ -549,12 +572,18 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
)
});
*/
}, /// SHIFT 0 LOGIC ENDS HERE --------------------------------------------
{ // SHIFT IN STATE 1 ======================= ..........................
// GTR INPUT =======================
/*
if (msg[11]==1,
{
( ~btn10val = (~btn10val + 1) % 9 ) ;
@ -572,11 +601,15 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
)
});
*/
// 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 ) ;
@ -593,6 +626,7 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
});
// BUTTON X ----- GRANULAR PITCH MODE
if (msg[14]==1,
{
( ~btn13val = ((~btn13val + 1) % 8 ) ) ;
@ -611,6 +645,7 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
//~durBtn = 1;
// BUTTON X ----- GRAIN DURATION MODE
if (msg[15]==1,
{
( ~btn14val = (~btn14val + 1) % 8 ) ;
@ -627,6 +662,7 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
});
// BUTTON X ----- GRANULAR IMPULSE MODE
if (msg[16]==1,
{
( ~btn15val = (~btn15val + 1) % 2 ) ;
@ -638,11 +674,14 @@ p = OSCdef(\keys, { arg msg, time, addr, recvPort;
}); // SHIFT ONE LOGIC ENDS HERE ================
} , '/keys');
// } , '/localhostInLevels');
);
);
} , '/keys');
// } , '/localhostInLevels');
);
);
}); // end makeBundle for OSC code
}; // end wait for boot
// todo countdown on density voices
)

View File

@ -5,10 +5,16 @@ OSCFunc.trace(false); // Turn posting off
// LIVE CODE / PERFORMABLE PARAMETERS /////////////////
// ----------------------------------------------------
// GUITAR
~gtrIn.set(\in, 0); r.set(\in, 0); ~mic.set(\in, 0);
// GONG
~gtrIn.set(\in, 1); r.set(\in, 1); ~mic.set(\in, 1);
// MOTHER TOP
~gtrIn.set(\in, 2); r.set(\in, 2); ~mic.set(\in, 2);
// MOTHER BOTTOM
~gtrIn.set(\in, 3); r.set(\in, 3); ~mic.set(\in, 3);
// set recorder loop and overdub modes ////////////

View File

@ -1,6 +1,6 @@
/*RUN*/
"/home/rob/gtr/motherPatterns.scd".load;
"/home/rob/algomom/sc/motherPatterns.scd".load;
MIDIClient.init;

View File

@ -1,143 +1,187 @@
<!DOCTYPE patchbay>
<patchbay name="recording_jackpatchbay" version="0.9.1">
<patchbay name="recording_jackpatchbay" version="0.9.9">
<output-sockets>
<socket name="system 1" client="system" type="jack-audio" exclusive="on">
<socket name="slcommon" type="jack-audio" client="sooperlooper" exclusive="off">
<plug>common_out_1</plug>
<plug>common_out_2</plug>
</socket>
<socket name="system 2" type="jack-audio" client="system" exclusive="off">
<plug>capture_2</plug>
</socket>
<socket name="ardour GONG" type="jack-audio" client="ardour" exclusive="off">
<plug>GONG\/audio_out\ 2</plug>
<plug>GONG\/audio_out\ 1</plug>
</socket>
<socket name="Hydrogen 1" type="jack-audio" client="Hydrogen" exclusive="off">
<plug>out_L</plug>
<plug>out_R</plug>
</socket>
<socket name="system 1" type="jack-audio" client="system" exclusive="on">
<plug>capture_1</plug>
<plug>capture_2</plug>
<plug>capture_3</plug>
<plug>capture_4</plug>
</socket>
<socket name="system 3 4" client="system" type="jack-audio" exclusive="off">
<socket name="system 3 4" type="jack-audio" client="system" exclusive="off">
<plug>capture_3</plug>
<plug>capture_4</plug>
</socket>
<socket name="system 2 3 4" client="system" type="jack-audio" exclusive="off">
<socket name="system 2 3 4" type="jack-audio" client="system" exclusive="off">
<plug>capture_2</plug>
<plug>capture_3</plug>
<plug>capture_4</plug>
</socket>
<socket name="ardour sc4ch" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour sc4ch" type="jack-audio" client="ardour" exclusive="off">
<plug>SC\ 4CHAN\/audio_out\ 1</plug>
<plug>SC\ 4CHAN\/audio_out\ 2</plug>
<plug>SC\ 4CHAN\/audio_out\ 3</plug>
<plug>SC\ 4CHAN\/audio_out\ 4</plug>
</socket>
<socket name="gx_head_amp 1" client="gx_head_amp" type="jack-audio" exclusive="off">
<socket name="gx_head_amp 1" type="jack-audio" client="gx_head_amp" exclusive="off">
<plug>out_0</plug>
</socket>
<socket name="gx_head_fx" client="gx_head_fx" type="jack-audio" exclusive="off">
<socket name="gx_head_fx" type="jack-audio" client="gx_head_fx" exclusive="off">
<plug>out_0</plug>
<plug>out_1</plug>
</socket>
<socket name="SC2CH" client="SuperCollider" type="jack-audio" exclusive="off">
<socket name="SC2CH" type="jack-audio" client="SuperCollider" exclusive="off">
<plug>out_1</plug>
<plug>out_2</plug>
</socket>
<socket name="SC 3-4" client="SuperCollider" type="jack-audio" exclusive="off">
<socket name="SC 3-4" type="jack-audio" client="SuperCollider" exclusive="off">
<plug>out_3</plug>
<plug>out_4</plug>
</socket>
<socket name="SuperCollider 4ch" client="SuperCollider" type="jack-audio" exclusive="off">
<socket name="SuperCollider 4ch" type="jack-audio" client="SuperCollider" exclusive="off">
<plug>out_1</plug>
<plug>out_2</plug>
<plug>out_3</plug>
<plug>out_4</plug>
</socket>
<socket name="ardour master out" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour HYDROGEN" type="jack-audio" client="ardour" exclusive="off">
<plug>HYDROGEN\ DRUMS\/audio_out\ 1</plug>
<plug>HYDROGEN\ DRUMS\/audio_out\ 2</plug>
</socket>
<socket name="ardour master out" type="jack-audio" client="ardour" exclusive="off">
<plug>Master\/audio_out\ 1</plug>
<plug>Master\/audio_out\ 2</plug>
</socket>
<socket name="ardour sc stereo" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour sc stereo" type="jack-audio" client="ardour" exclusive="off">
<plug>SUPERCOLLIDER\/audio_out\ 1</plug>
<plug>SUPERCOLLIDER\/audio_out\ 2</plug>
<plug>SC\ GTR\/audio_out\ 1</plug>
<plug>SC\ GTR\/audio_out\ 2</plug>
</socket>
<socket name="ardour sc gtr" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour sc gtr" type="jack-audio" client="ardour" exclusive="off">
<plug>SC\ GTR\/audio_out\ 1</plug>
<plug>SC\ GTR\/audio_out\ 2</plug>
</socket>
<socket name="ardour MOTHER32 TOP" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour MOTHER32 TOP" type="jack-audio" client="ardour" exclusive="off">
<plug>MOTHER32\ TOP\/audio_out\ 1</plug>
<plug>MOTHER32\ TOP\/audio_out\ 2</plug>
</socket>
<socket name="MOTHER32 BOTTOM" client="ardour" type="jack-audio" exclusive="off">
<socket name="MOTHER32 BOTTOM" type="jack-audio" client="ardour" exclusive="off">
<plug>MOTHER32\ BOTTOM\/audio_out\ 1</plug>
<plug>MOTHER32\ BOTTOM\/audio_out\ 2</plug>
</socket>
<socket name="ardour metronome" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour metronome" type="jack-audio" client="ardour" exclusive="off">
<plug>Click\/audio_out\ 1</plug>
<plug>Click\/audio_out\ 2</plug>
</socket>
<socket name="SuperCollider MIDI 0" client="SuperCollider" type="alsa-midi" exclusive="off">
<socket name="SuperCollider MIDI 0" type="alsa-midi" client="SuperCollider" exclusive="off">
<plug>out0</plug>
<plug>out1</plug>
<plug>out2</plug>
<plug>out3</plug>
</socket>
<socket name="ardour fx bus 1" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour fx bus 1" type="jack-audio" client="ardour" exclusive="off">
<plug>delay\/audio_out\ 1</plug>
<plug>delay\/audio_out\ 2</plug>
</socket>
<socket name="sl-ardour" type="jack-audio" client="ardour" exclusive="off">
<plug>sooperlooper\/audio_out\ 1</plug>
<plug>sooperlooper\/audio_out\ 2</plug>
</socket>
<socket name="nanoKONTROL 1" type="alsa-midi" client="nanoKONTROL2" exclusive="off">
<plug>nanoKONTROL2\ nanoKONTROL2\ _\ CTR</plug>
</socket>
</output-sockets>
<input-sockets>
<socket name="gx_head_amp" client="gx_head_amp" type="jack-audio" exclusive="off">
<socket name="ardour sl" type="jack-audio" client="ardour" exclusive="off">
<plug>sooperlooper\/audio_in\ 1</plug>
<plug>sooperlooper\/audio_in\ 2</plug>
</socket>
<socket name="ardour GONG" type="jack-audio" client="ardour" exclusive="off">
<plug>GONG\/audio_in\ 1</plug>
</socket>
<socket name="HYDROGEN" type="jack-audio" client="ardour" exclusive="off">
<plug>HYDROGEN\ DRUMS\/audio_in\ 1</plug>
<plug>HYDROGEN\ DRUMS\/audio_in\ 2</plug>
</socket>
<socket name="gx_head_amp" type="jack-audio" client="gx_head_amp" exclusive="off">
<plug>in_0</plug>
</socket>
<socket name="SuperCollider 2 3 4" client="SuperCollider" type="jack-audio" exclusive="off">
<socket name="SuperCollider 2 3 4" type="jack-audio" client="SuperCollider" exclusive="off">
<plug>in_2</plug>
<plug>in_3</plug>
<plug>in_4</plug>
</socket>
<socket name="gx_head_fx 1" client="gx_head_fx" type="jack-audio" exclusive="off">
<socket name="gx_head_fx 1" type="jack-audio" client="gx_head_fx" exclusive="off">
<plug>in_0</plug>
</socket>
<socket name="SC 4CH" client="SuperCollider" type="jack-audio" exclusive="off">
<socket name="SC 4CH" type="jack-audio" client="SuperCollider" exclusive="off">
<plug>in_1</plug>
<plug>in_2</plug>
<plug>in_3</plug>
<plug>in_4</plug>
</socket>
<socket name="ardour gtrx input" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour gtrx input" type="jack-audio" client="ardour" exclusive="off">
<plug>\ GuitarX\/audio_in\ 1</plug>
<plug>\ GuitarX\/audio_in\ 2</plug>
</socket>
<socket name="ardour SC2CH IN" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour SC2CH IN" type="jack-audio" client="ardour" exclusive="off">
<plug>SUPERCOLLIDER\/audio_in\ 1</plug>
<plug>SUPERCOLLIDER\/audio_in\ 2</plug>
</socket>
<socket name="ardour SC GTR" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour SC GTR" type="jack-audio" client="ardour" exclusive="off">
<plug>SC\ GTR\/audio_in\ 1</plug>
<plug>SC\ GTR\/audio_in\ 2</plug>
</socket>
<socket name="ardour mother32s" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour mother32s" type="jack-audio" client="ardour" exclusive="off">
<plug>MOTHER32\ TOP\/audio_in\ 1</plug>
<plug>MOTHER32\ BOTTOM\/audio_in\ 1</plug>
</socket>
<socket name="sc2chan" client="ardour" type="jack-audio" exclusive="off">
<socket name="sc2chan" type="jack-audio" client="ardour" exclusive="off">
<plug>SUPERCOLLIDER\/audio_in\ 1</plug>
<plug>SUPERCOLLIDER\/audio_in\ 2</plug>
</socket>
<socket name="ardour sc4ch" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour sc4ch" type="jack-audio" client="ardour" exclusive="off">
<plug>SC\ 4CHAN\/audio_in\ 1</plug>
<plug>SC\ 4CHAN\/audio_in\ 2</plug>
<plug>SC\ 4CHAN\/audio_in\ 3</plug>
<plug>SC\ 4CHAN\/audio_in\ 4</plug>
</socket>
<socket name="ardour master in" client="ardour" type="jack-audio" exclusive="off">
<socket name="ardour master in" type="jack-audio" client="ardour" exclusive="off">
<plug>Master\/audio_in\ 1</plug>
<plug>Master\/audio_in\ 2</plug>
</socket>
<socket name="system 1" client="system" type="jack-audio" exclusive="off">
<socket name="sl-midi" type="alsa-midi" client="sooperlooper" exclusive="off">
<plug>sooperlooper</plug>
</socket>
<socket name="sl-common" type="jack-audio" client="sooperlooper" exclusive="off">
<plug>common_in_1</plug>
<plug>common_in_2</plug>
</socket>
<socket name="system 1" type="jack-audio" client="system" exclusive="off">
<plug>playback_1</plug>
<plug>playback_2</plug>
<plug>playback_3</plug>
<plug>playback_4</plug>
</socket>
<socket name="UMC404HD\ 192k 1" client="UMC404HD\ 192k" type="alsa-midi" exclusive="off">
<socket name="UMC404HD\ 192k 1" type="alsa-midi" client="UMC404HD\ 192k" exclusive="off">
<plug>UMC404HD\ 192k\ UMC404HD\ 192k\ MID</plug>
</socket>
<socket name="MidiSport\ 4x 1" client="MidiSport\ 4x4" type="alsa-midi" exclusive="off">
<socket name="MidiSport\ 4x 1" type="alsa-midi" client="MidiSport\ 4x4" exclusive="off">
<plug>MidiSport\ 4x4\ MIDI\ 1</plug>
<plug>MidiSport\ 4x4\ MIDI\ 2</plug>
<plug>MidiSport\ 4x4\ MIDI\ 3</plug>
@ -146,23 +190,32 @@
</input-sockets>
<slots/>
<cables>
<cable type="jack-audio" input="gx_head_amp" output="system 1"/>
<cable type="jack-audio" input="ardour mother32s" output="system 3 4"/>
<cable type="jack-audio" input="SuperCollider 2 3 4" output="system 2 3 4"/>
<cable type="jack-audio" input="gx_head_fx 1" output="gx_head_amp 1"/>
<cable type="jack-audio" input="SC 4CH" output="gx_head_fx"/>
<cable type="jack-audio" input="ardour gtrx input" output="gx_head_fx"/>
<cable type="jack-audio" input="ardour SC2CH IN" output="SC2CH"/>
<cable type="jack-audio" input="ardour SC GTR" output="SC 3-4"/>
<cable type="jack-audio" input="ardour sc4ch" output="SuperCollider 4ch"/>
<cable type="jack-audio" input="system 1" output="ardour master out"/>
<cable type="jack-audio" input="ardour master in" output="ardour sc stereo"/>
<cable type="jack-audio" input="ardour master in" output="ardour sc gtr"/>
<cable type="jack-audio" input="ardour master in" output="ardour MOTHER32 TOP"/>
<cable type="jack-audio" input="ardour master in" output="MOTHER32 BOTTOM"/>
<cable type="jack-audio" input="system 1" output="ardour metronome"/>
<cable type="alsa-midi" input="MidiSport\ 4x 1" output="SuperCollider MIDI 0"/>
<cable type="jack-audio" input="ardour master in" output="ardour fx bus 1"/>
<cable type="jack-audio" output="system 2" input="ardour GONG"/>
<cable type="jack-audio" output="system 2" input="sl-common"/>
<cable type="jack-audio" output="ardour GONG" input="ardour master in"/>
<cable type="jack-audio" output="Hydrogen 1" input="HYDROGEN"/>
<cable type="jack-audio" output="system 1" input="gx_head_amp"/>
<cable type="jack-audio" output="system 3 4" input="ardour mother32s"/>
<cable type="jack-audio" output="system 2 3 4" input="SuperCollider 2 3 4"/>
<cable type="jack-audio" output="gx_head_amp 1" input="gx_head_fx 1"/>
<cable type="jack-audio" output="gx_head_fx" input="SC 4CH"/>
<cable type="jack-audio" output="gx_head_fx" input="ardour gtrx input"/>
<cable type="jack-audio" output="gx_head_fx" input="sl-common"/>
<cable type="jack-audio" output="SC2CH" input="ardour SC2CH IN"/>
<cable type="jack-audio" output="SC 3-4" input="ardour SC GTR"/>
<cable type="jack-audio" output="SuperCollider 4ch" input="ardour sc4ch"/>
<cable type="jack-audio" output="ardour HYDROGEN" input="ardour master in"/>
<cable type="jack-audio" output="ardour master out" input="system 1"/>
<cable type="jack-audio" output="ardour sc stereo" input="ardour master in"/>
<cable type="jack-audio" output="ardour sc gtr" input="ardour master in"/>
<cable type="jack-audio" output="ardour MOTHER32 TOP" input="ardour master in"/>
<cable type="jack-audio" output="MOTHER32 BOTTOM" input="ardour master in"/>
<cable type="jack-audio" output="ardour metronome" input="system 1"/>
<cable type="alsa-midi" output="SuperCollider MIDI 0" input="MidiSport\ 4x 1"/>
<cable type="jack-audio" output="ardour fx bus 1" input="ardour master in"/>
<cable type="jack-audio" output="slcommon" input="ardour sl"/>
<cable type="jack-audio" output="sl-ardour" input="ardour master in"/>
<cable type="alsa-midi" output="nanoKONTROL 1" input="sl-midi"/>
</cables>
</patchbay>

View File

@ -4,11 +4,8 @@
~r0 = Pn(1/8, 16);
TempoClock.default.tempo = 60/60;
TempoClock.default.tempo = 30/60;
~rx0 = Pwrand([1/8, 1/4, 1/2, 4],[80,50,20,20].normalizeSum, 1);
~rx1 = Pwrand([1/8, 1/4, 1/2, 1],[80,50,20,20].normalizeSum, 1);
~rx2 = Pwrand([1/8, 1/4, 1/2],[80,50,20].normalizeSum, 1);

View File

@ -0,0 +1,254 @@
<?xml version="1.0"?>
<SLSession version="1.7.8">
<Globals tempo="130.5989487" eighth_per_cycle="16" common_dry="0" common_wet="1" input_gain="1" sync_source="1" auto_disable_latency="1" jack_timebase_master="0" output_midi_clock="0" use_midi_start="0" use_midi_stop="0" send_midi_start_on_trigger="0" smart_eighths="1"/>
<Loopers>
<Looper index="0" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="0.8957680464" pitch_shift="0" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_00.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.519685" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="1"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="1"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="1" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="2.450594664" pitch_shift="-5" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_01.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.527559" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="4"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="1"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="2" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="0.9326922894" pitch_shift="12" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_02.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.582677" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="1"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="0"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="3" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="1" pitch_shift="0" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_03.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="1.000000" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="0"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="4" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="1" pitch_shift="0" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_04.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.500000" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="0"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="5" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="1" pitch_shift="0" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_05.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.500000" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="0.98936176300048828125"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="0"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="6" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="1" pitch_shift="0" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_06.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.500000" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="0"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
<Looper index="7" channels="1" loop_secs="40" discrete_io="yes" discrete_prefader="yes" use_common_ins="yes" use_common_outs="yes" relative_sync="no" auto_latency="yes" tempo_stretch="no" stretch_ratio="1" pitch_shift="-10" loop_audio="/home/rob/gtr/sooperlooper/8ch_looper.slsess_loop_07.wav">
<Panner linked="no" link_direction="0" bypassed="no">
<StreamPanner x="0.500000" type="Equal Power Stereo" muted="no"/>
<Output x="0.000000" y="0.000000"/>
<Output x="1.000000" y="0.000000"/>
</Panner>
<Controls>
<Control name="rec_thresh" value="0"/>
<Control name="dry" value="0"/>
<Control name="wet" value="1"/>
<Control name="feedback" value="1"/>
<Control name="rate" value="1"/>
<Control name="scratch_pos" value="0"/>
<Control name="delay_trigger" value="0"/>
<Control name="use_feedback_play" value="0"/>
<Control name="quantize" value="0"/>
<Control name="round" value="0"/>
<Control name="redo_is_tap" value="0"/>
<Control name="sync" value="1"/>
<Control name="use_rate" value="0"/>
<Control name="fade_samples" value="66"/>
<Control name="playback_sync" value="0"/>
<Control name="use_safety_feedback" value="1"/>
<Control name="input_latency" value="256"/>
<Control name="output_latency" value="0"/>
<Control name="trigger_latency" value="256"/>
<Control name="mute_quantized" value="0"/>
<Control name="overdub_quantized" value="0"/>
<Control name="round_integer_tempo" value="0"/>
</Controls>
</Looper>
</Loopers>
</SLSession>