61 lines
1.6 KiB
Text
61 lines
1.6 KiB
Text
declare name "studiox-mixer";
|
|
declare version "1.0";
|
|
declare author "Franz Heinzmann";
|
|
declare license "BSD";
|
|
declare options "[osc:on]";
|
|
|
|
//-----------------------------------------------
|
|
// Audio Mixer: I inputs x O outputs x B Buses
|
|
//-----------------------------------------------
|
|
|
|
import("stdfaust.lib");
|
|
|
|
stereo(func) = _,_ : func(_),func(_) : _,_;
|
|
|
|
gainM = *(vslider("gain[style:knob]", 0, -70, +40, 0.1) : ba.db2linear : si.smoo);
|
|
volumeM = *(vslider("volume", 0, -70, +4, 0.1) : ba.db2linear : si.smoo);
|
|
activeM = *(checkbox("on") : si.smoo);
|
|
muteM = *(1 - checkbox("mute") : si.smoo);
|
|
volume = stereo(volumeM);
|
|
gain = stereo(gainM);
|
|
active = stereo(activeM);
|
|
mute = stereo(muteM);
|
|
|
|
envelop = abs : max ~ -(1.0/ma.SR) : max(ba.db2linear(-70)) : ba.linear2db;
|
|
vumeterM(x) = envelop(x) : vbargraph("level[2][unit:dB][style:dB]", -60, +5);
|
|
vumeterS(a,b) = a,b <: _,_,_,_ :
|
|
(a, b, attach(0,vumeterM((a+b)/2)), 0) :>
|
|
_,_;
|
|
vumeter = _,_ : vumeterS(_,_);
|
|
|
|
faderchannel = _,_ : active : volume : vumeter : _,_;
|
|
simplechannel = _,_ : active : _,_;
|
|
gainchannel = _,_ : mute : gain : vumeter : _,_;
|
|
|
|
bus(I, bus) = hgroup("%bus",
|
|
hgroup("ch", par(i, I,
|
|
_,_ : vgroup("%i", faderchannel)
|
|
)) :>
|
|
_,_
|
|
);
|
|
|
|
mixer(I,O,B) =
|
|
par(i, I, _,_) :
|
|
vgroup("mixer",
|
|
hgroup("[1]in", par(i, I, vgroup("%i", gainchannel ))) :
|
|
tgroup("[2]bus",
|
|
par(i, I, _,_) <:
|
|
par(i, B, bus(I, i))
|
|
) <:
|
|
hgroup("[3]out",
|
|
par(o, O,
|
|
vgroup("%o",
|
|
hgroup("bus", par(i, B, vgroup("%i", simplechannel))) :>
|
|
gainchannel
|
|
)
|
|
)
|
|
)
|
|
) :
|
|
par(o, O, _,_);
|
|
|
|
process = mixer(8,8,4);
|