1
0
Files
scoobidules/extensions/Track/classes/track.sc
2025-02-26 07:36:13 +01:00

64 lines
1.1 KiB
Python

// A track receiving from a bus. Synth and FX in their own groups
Track : Fadable {
/*
TODO: don't instanciate if name already exist ?
*/
var out, <group, <groupFX, <groupSynth, <track, busTrack, busFX, level;
*new {
|out|
^super.new.init(out);
}
*initClass {
StartUp.add {
SynthDef(\fader, {
|in, fxIn, out|
var sig, fx, dry, wet;
wet = \wet.kr(1);
// TODO: what if i want 1 or 12 channels
sig = In.ar(in, 2);
fx = In.ar(fxIn, 2);
// FX loop?
dry = (1 - wet).clip(0, 1);
sig = [sig * dry, fx * wet].sum;
sig = Pan2.ar(sig, \pan.kr(0));
sig = sig * \amp.kr(1);
sig = Limiter.ar(sig);
Out.ar(out, sig);
}).add;
}
}
init {
|out|
level = 1;
busTrack = Bus.audio(Server.default, 2);
busFX = Bus.audio(Server.default, 2);
group = Group.new(Server.default);
groupSynth = Group.head(group);
groupFX = Group.after(groupSynth);
track = Synth(
\fader,
[
in: busTrack.index,
fxIn: busFX.index,
out: out
],
target: group,
addAction: \addToTail
);
}
in {
^busTrack.index;
}
inFX {
^busFX.index;
}
// printOn {
// |stream|
// }
}