Professional Documents
Culture Documents
WazMatrixMixer V1
WazMatrixMixer V1
1
// by scacinto
Server.local.options.numInputBusChannels = 2;
Server.local.options.numOutputBusChannels = 20;
s.boot;
//******************************************************************
// the groups
//******************************************************************
~feedback = Group.new;
~input = Group.new(~feedback, \addAfter);
~mixer = Group.new(~input, \addAfter);
~processing = Group.new(~mixer, \addAfter);
~master = Group.new(~processing, \addAfter);
//******************************************************************
// the synthdefs
//******************************************************************
// ** inFeedback
SynthDef("feedback1", {
var in = InFeedback.ar(17);
in = LeakDC.ar(in);
Out.ar(3, in);
}).add;
SynthDef("feedback2", {
var in = InFeedback.ar(18);
in = LeakDC.ar(in);
Out.ar(4, in);
}).add;
SynthDef("feedback3", {
var in = InFeedback.ar(19);
in = LeakDC.ar(in);
Out.ar(5, in);
}).add;
// **
SynthDef("in1Src", {arg source=0, amp=0;
var a = [SoundIn.ar(0), SinOsc.ar(LFNoise1.kr(1, 25, 440))];
Out.ar(11, Select.ar(source,a) * amp);
}).add;
// ** MASTER OUT
SynthDef("masterMixer", {
var outa, outb, outc, sound;
// outputA synth
outa = In.ar(17, 1);
// outputB synth
outb = In.ar(18, 1);
//outputC synth
outc = In.ar(19, 1);
sound = Limiter.ar([outa, outb, outc], 0.5);
sound = LeakDC.ar(sound);
Out.ar(0, sound);
}).add;
// ** CHANNEL MIXERS
}).add;
}).add;
}).add;
//** PROCESSORS
SynthDef("processA", {
var in, sound;
in = In.ar(14,1);
sound = DelayC.ar(in, 3, MouseY.kr(0.1,3), MouseX.kr(1,10));
Out.ar(17, sound.tan);
}).add;
SynthDef("processB", {
var in, sound;
in = In.ar(15,1);
sound = DelayC.ar(in, 3, MouseY.kr(0.1,3), MouseX.kr(1,10));
Out.ar(18, sound.tan);
}).add;
SynthDef("processC", {
var in, sound;
in = In.ar(16,1);
sound = DelayC.ar(in, 3, MouseY.kr(0.1,3), MouseX.kr(1,10));
Out.ar(19, sound.tan);
}).add;
//******************************************************************
// Create the Synths and add to groups
//******************************************************************
//******************************************************************
// GUI
//******************************************************************
//******************************************************************
// buttons
//******************************************************************
{ v. value == 2 } { ~in1Src.set(\source, 0) }
};
{ v. value == 2 } { ~in2Src.set(\source, 0) }
};
{ v. value == 2 } { ~in3Src.set(\source, 0) }
};
//******************************************************************
//** CONTROLSPECS
//******************************************************************
// ROW1 Knobs
// ROW2
// ROW3
//******************************************************************
//** KNOBS
//******************************************************************
//** row 1
// input1 vol
};
// inA-C
Knob.new(window,Rect(110, 130, 40, 35))
.color_([Color.yellow(0.7,0.5), Color.green(0.8,0.8), Color.black.alpha_(0.3),
Color.black.alpha_(0.7)])
.action_{|v| v = ~in1InAKnbCtl.map(v.value);
~input1Mixer.set(\inA, v);
};
//** row 2
};
//** row 3
};
Knob.new(window,Rect(110, 370, 40, 35))
.color_([Color.yellow(0.7,0.5), Color.green(0.8,0.8), Color.black.alpha_(0.3),
Color.black.alpha_(0.7)])
.action_{|v| v = ~in3InAKnbCtl.map(v.value);
~input3Mixer.set(\inA, v);
};
window.onClose_({
currentEnvironment.clear;
s.freeAll;
});
window.front;