Am 16.07.2017 um 17:49 schrieb Hermann Meyer:
Am 16.07.2017 um 16:17 schrieb Yassin Philip:
Hello everyone
The idea is to rapidly rise, and (a bit slower) fall, the pitch of a
sound, so this pitch has to evolve over time..? Googling for it is a
bit tricky, and I can't find any recipe anywhere :(
Also, is is possible to assign the parameter value of a Faust
function's to the output of another? To, for instance, lower or rise
an eQ band frequency with the output of a compressor?
If it is, I'd really like to learn how :)
yPhil
Hi
It's easier then you think. So, for example what I'm using in GxQuack
(envelope controlled wah pedal with some extra features) is:
Wah = (x : lowpass(1,6000.0) : highpass(1,10.0) :
reduce(max,256) : amp_follower_ud(attack,release) : min(1.0) :
max(0.0) );
instead a slider like this
Wah = vslider("Wah[name:Wah]", 0.5, 0, 1, 0.01) : Inverted(0) :
smooth(s);
Note, that this is with faust-0.9.73, so you need to convert that to
the new faust library structure.
attack is the "rise" time, release is the "fall" time.
https://github.com/brummer10/GxQuack.lv2
regards
hermann
For reference, here is the full GxQuack dsp file ( only work with
faust > 0.9.90) :
// generated by build_wah.py
// DO NOT MODIFY!
declare id "quack";
declare name "quack";
declare category "Envelope Filter";
import("filter.lib");
import("effect.lib");
import("reduce.lib");
p2 = pre : iir((b0/a0,b1/a0),(a1/a0)) with {
LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
Inverted(b, x) = if(b, 1 - x, x);
s = 0.993;
fs = float(SR);
pre = _;
b0 = 0.0260145681581686;
b1 = 0.0260145681581686;
a0 = 2.02913631633715e-5*fs + 0.0260145681581686;
a1 = -2.02913631633715e-5*fs + 0.0260145681581686;
};
p2a = pre : iir((b0/a0,b1/a0),(a1/a0)) with {
LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
Inverted(b, x) = if(b, 1 - x, x);
s = 0.993;
fs = float(SR);
pre = _;
b0 = 1.85778624631907e-5*fs;
b1 = -1.85778624631907e-5*fs;
a0 = 1.85778624631907e-5*fs + 0.108262601766846;
a1 = -1.85778624631907e-5*fs + 0.108262601766846;
};
pr = vslider("Tone[enum:Off|Low|High]", 0, 0, 2,1) ;
tone = _<:select3(pr,_,p2,p2a) ;
dri = cubicnl(0.25,0.01);
d = vslider("Drive[enum:Off|On]", 0, 0, 1,1) ;
drive = _<:select2(d,_,dri) ;
s = 0.993;
Inverted(b, x) = if(b, 1 - x, x);
attack = 0.01; //vslider("Attack[name:Attack]", 0.01, 0.01, 1,
0.01) : smooth(s);
release = 0.1; //vslider("Release[name:Release]", 0.1, 0.01, 1,
0.01) : smooth(s);
Gain = hslider("Gain[name:Gain]", 0, -12, 6, 0.01) :
component("music.lib").db2linear : smooth(s);
peak = hslider("Peak[name:Peak]", 5, -6, 20, 0.1) :
component("music.lib").db2linear : smooth(s);
r = vslider("Range[enum:Low|High]", 0, 0, 1,1) ;
range = vslider("Depth[name:Depth]", 1.0, 0, 1, 0.01) : smooth(s);
p_orig(x) = x : pre :
iir((b0/a0,b1/a0,b2/a0,b3/a0,b4/a0),(a1/a0,a2/a0,a3/a0,a4/a0)) with {
LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
Inverted(b, x) = if(b, 1 - x, x);
fs = float(SR);
pre = dcblockerat(228.092318096);
Wah = (x : lowpass(1,6000.0) : highpass(1,10.0) : *(peak) :
reduce(max,256) : amp_follower_ud(attack,release) : min(1.0) :
max(0.0) : Inverted(r) : *(range));
// Wah = vslider("Wah[name:Wah]", 0.5, 0, 1, 0.01) :
Inverted(0) : smooth(s);
b0 = Wah*(Wah*pow(fs,2)*(fs*(1.25354929406751e-21*fs +
3.48240441754786e-17) + 5.13677938472839e-14) +
fs*(fs*(fs*(-1.25190991419205e-21*fs - 3.48523283496869e-17) -
5.2316993141028e-14) - 1.41321715027133e-12)) +
fs*(fs*(fs*(-7.5608386057978e-21*fs - 2.50316072052274e-16) -
3.73895528562635e-13) - 2.00079255029258e-12);
b1 = Wah*(Wah*pow(fs,3)*(-5.01419717627005e-21*fs -
6.96480883509573e-17) + fs*(pow(fs,2)*(5.0076396567682e-21*fs +
6.97046566993739e-17) - 2.82643430054267e-12)) +
fs*(pow(fs,2)*(3.02433544231912e-20*fs + 5.00632144104549e-16) -
4.00158510058516e-12);
b2 = Wah*(Wah*pow(fs,2)*(7.52129576440508e-21*pow(fs,2) -
1.02735587694568e-13) + pow(fs,2)*(-7.5114594851523e-21*pow(fs,2) +
1.04633986282056e-13)) + pow(fs,2)*(-4.53650316347868e-20*pow(fs,2) +
7.47791057125271e-13);
b3 = Wah*(Wah*pow(fs,3)*(-5.01419717627005e-21*fs +
6.96480883509573e-17) + fs*(pow(fs,2)*(5.0076396567682e-21*fs -
6.97046566993739e-17) + 2.82643430054267e-12)) +
fs*(pow(fs,2)*(3.02433544231912e-20*fs - 5.00632144104549e-16) +
4.00158510058516e-12);
b4 = Wah*(Wah*pow(fs,2)*(fs*(1.25354929406751e-21*fs -
3.48240441754786e-17) + 5.13677938472839e-14) +
fs*(fs*(fs*(-1.25190991419205e-21*fs + 3.48523283496869e-17) -
5.2316993141028e-14) + 1.41321715027133e-12)) +
fs*(fs*(fs*(-7.5608386057978e-21*fs + 2.50316072052274e-16) -
3.73895528562635e-13) + 2.00079255029258e-12);
a0 = Wah*(Wah*pow(fs,2)*(fs*(-4.43653850014272e-20*fs -
6.36752117412588e-18) - 6.90511452690395e-14) +
fs*(fs*(fs*(2.9643704767506e-19*fs + 2.20654546981828e-17) +
5.22620199762732e-14) + 1.96168026332498e-12)) +
fs*(fs*(fs*(5.00642970042579e-20*fs + 3.44255097306176e-17) +
6.23836917291325e-13) + 1.48605150860605e-11) + 5.57295529353689e-11;
a1 = Wah*(Wah*pow(fs,3)*(1.77461540005709e-19*fs +
1.27350423482518e-17) + fs*(pow(fs,2)*(-1.18574819070024e-18*fs -
4.41309093963656e-17) + 3.92336052664997e-12)) +
fs*(pow(fs,2)*(-2.00257188017031e-19*fs - 6.88510194612353e-17) +
2.9721030172121e-11) + 2.22918211741475e-10;
a2 = Wah*(Wah*pow(fs,2)*(-2.66192310008563e-19*pow(fs,2) +
1.38102290538079e-13) + pow(fs,2)*(1.77862228605036e-18*pow(fs,2) -
1.04524039952546e-13)) + pow(fs,2)*(3.00385782025547e-19*pow(fs,2) -
1.24767383458265e-12) + 3.34377317612213e-10;
a3 = Wah*(Wah*pow(fs,3)*(1.77461540005709e-19*fs -
1.27350423482518e-17) + fs*(pow(fs,2)*(-1.18574819070024e-18*fs +
4.41309093963656e-17) - 3.92336052664997e-12)) +
fs*(pow(fs,2)*(-2.00257188017031e-19*fs + 6.88510194612353e-17) -
2.9721030172121e-11) + 2.22918211741475e-10;
a4 = Wah*(Wah*pow(fs,2)*(fs*(-4.43653850014272e-20*fs +
6.36752117412588e-18) - 6.90511452690395e-14) +
fs*(fs*(fs*(2.9643704767506e-19*fs - 2.20654546981828e-17) +
5.22620199762732e-14) - 1.96168026332498e-12)) +
fs*(fs*(fs*(5.00642970042579e-20*fs - 3.44255097306176e-17) +
6.23836917291325e-13) - 1.48605150860605e-11) + 5.57295529353689e-11;
};
p_bass(x) = x : pre :
iir((b0/a0,b1/a0,b2/a0,b3/a0,b4/a0),(a1/a0,a2/a0,a3/a0,a4/a0)) with {
LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
Inverted(b, x) = if(b, 1 - x, x);
s = 0.993;
fs = float(SR);
pre = dcblockerat(228.53988396);
Wah = (x : lowpass(1,6000.0) : highpass(1,10.0) : *(peak) :
reduce(max,256) : amp_follower_ud(attack,release) : min(1.0) :
max(0.0) : Inverted(r) : *(range));
//Wah = vslider("Wah[name:Wah]", 0.5, 0, 1, 0.01) :
Inverted(0) : smooth(s);
b0 = Wah*(Wah*pow(fs,2)*(fs*(1.25853611928206e-21*fs +
5.53488632351979e-18) + 7.58413873162652e-15) +
fs*(fs*(fs*(-1.25689021768392e-21*fs - 5.56328301682433e-18) -
7.7275071769974e-15) - 2.08652817705965e-13)) +
fs*(fs*(fs*(-7.59091686512077e-21*fs - 3.78902125065437e-17) -
5.52177453027185e-14) - 2.95404710580664e-13);
b1 = Wah*(Wah*pow(fs,3)*(-5.03414447712823e-21*fs -
1.10697726470396e-17) + fs*(pow(fs,2)*(5.0275608707357e-21*fs +
1.11265660336487e-17) - 4.17305635411929e-13)) +
fs*(pow(fs,2)*(3.03636674604831e-20*fs + 7.57804250130874e-17) -
5.90809421161329e-13);
b2 = Wah*(Wah*pow(fs,2)*(7.55121671569235e-21*pow(fs,2) -
1.5168277463253e-14) + pow(fs,2)*(-7.54134130610355e-21*pow(fs,2) +
1.54550143539948e-14)) + pow(fs,2)*(-4.55455011907246e-20*pow(fs,2) +
1.10435490605437e-13);
b3 = Wah*(Wah*pow(fs,3)*(-5.03414447712823e-21*fs +
1.10697726470396e-17) + fs*(pow(fs,2)*(5.0275608707357e-21*fs -
1.11265660336487e-17) + 4.17305635411929e-13)) +
fs*(pow(fs,2)*(3.03636674604831e-20*fs - 7.57804250130874e-17) +
5.90809421161329e-13);
b4 = Wah*(Wah*pow(fs,2)*(fs*(1.25853611928206e-21*fs -
5.53488632351979e-18) + 7.58413873162652e-15) +
fs*(fs*(fs*(-1.25689021768392e-21*fs + 5.56328301682433e-18) -
7.7275071769974e-15) + 2.08652817705965e-13)) +
fs*(fs*(fs*(-7.59091686512077e-21*fs + 3.78902125065437e-17) -
5.52177453027185e-14) + 2.95404710580664e-13);
a0 = Wah*(Wah*pow(fs,2)*(fs*(-4.45418777953964e-20*fs -
3.69499160249299e-18) - 1.01949767761838e-14) +
fs*(fs*(fs*(2.97616322976291e-19*fs + 2.01184007540029e-17) +
7.79442896477869e-15) + 2.89630022050677e-13)) +
fs*(fs*(fs*(5.02634610074678e-20*fs + 1.02230662165229e-17) +
9.2275013955392e-14) + 2.19628701391733e-12) + 8.22812562643968e-12;
a1 = Wah*(Wah*pow(fs,3)*(1.78167511181586e-19*fs +
7.38998320498597e-18) + fs*(pow(fs,2)*(-1.19046529190516e-18*fs -
4.02368015080057e-17) + 5.79260044101354e-13)) +
fs*(pow(fs,2)*(-2.01053844029871e-19*fs - 2.04461324330459e-17) +
4.39257402783466e-12) + 3.29125025057587e-11;
a2 = Wah*(Wah*pow(fs,2)*(-2.67251266772379e-19*pow(fs,2) +
2.03899535523677e-14) + pow(fs,2)*(1.78569793785775e-18*pow(fs,2) -
1.55888579295574e-14)) + pow(fs,2)*(3.01580766044807e-19*pow(fs,2) -
1.84550027910784e-13) + 4.93687537586381e-11;
a3 = Wah*(Wah*pow(fs,3)*(1.78167511181586e-19*fs -
7.38998320498597e-18) + fs*(pow(fs,2)*(-1.19046529190516e-18*fs +
4.02368015080057e-17) - 5.79260044101354e-13)) +
fs*(pow(fs,2)*(-2.01053844029871e-19*fs + 2.04461324330459e-17) -
4.39257402783466e-12) + 3.29125025057587e-11;
a4 = Wah*(Wah*pow(fs,2)*(fs*(-4.45418777953964e-20*fs +
3.69499160249299e-18) - 1.01949767761838e-14) +
fs*(fs*(fs*(2.97616322976291e-19*fs - 2.01184007540029e-17) +
7.79442896477869e-15) - 2.89630022050677e-13)) +
fs*(fs*(fs*(5.02634610074678e-20*fs - 1.02230662165229e-17) +
9.2275013955392e-14) - 2.19628701391733e-12) + 8.22812562643968e-12;
};
p_vol(x) = x : pre :
iir((b0/a0,b1/a0,b2/a0,b3/a0,b4/a0),(a1/a0,a2/a0,a3/a0,a4/a0)) with {
LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
Inverted(b, x) = if(b, 1 - x, x);
s = 0.993;
fs = float(SR);
pre = dcblockerat(228.351628894);
Wah = (x : lowpass(1,6000.0) : highpass(1,10.0) : *(peak) :
reduce(max,256) : amp_follower_ud(attack,release) : min(1.0) :
max(0.0) : Inverted(r) : *(range));
// Wah = vslider("Wah[name:Wah]", 0.5, 0, 1, 0.01) :
Inverted(0) : smooth(s);
b0 = Wah*(Wah*pow(fs,2)*(fs*(1.25815054436106e-21*fs +
7.79948641775953e-18) + 1.09694347514731e-14) +
fs*(fs*(fs*(-1.25650514701418e-21*fs - 7.82787441123208e-18) -
1.11751090038047e-14) - 3.0178818591385e-13)) +
fs*(fs*(fs*(-7.58859125274344e-21*fs - 5.43147073307993e-17) -
7.98575025005554e-14) - 4.27263109584156e-13);
b1 = Wah*(Wah*pow(fs,3)*(-5.03260217744424e-21*fs -
1.55989728355191e-17) + fs*(pow(fs,2)*(5.02602058805673e-21*fs +
1.56557488224642e-17) - 6.03576371827701e-13)) +
fs*(pow(fs,2)*(3.03543650109738e-20*fs + 1.08629414661599e-16) -
8.54526219168312e-13);
b2 = Wah*(Wah*pow(fs,2)*(7.54890326616636e-21*pow(fs,2) -
2.19388695029462e-14) + pow(fs,2)*(-7.53903088208509e-21*pow(fs,2) +
2.23502180076095e-14)) + pow(fs,2)*(-4.55315475164607e-20*pow(fs,2) +
1.59715005001111e-13);
b3 = Wah*(Wah*pow(fs,3)*(-5.03260217744424e-21*fs +
1.55989728355191e-17) + fs*(pow(fs,2)*(5.02602058805673e-21*fs -
1.56557488224642e-17) + 6.03576371827701e-13)) +
fs*(pow(fs,2)*(3.03543650109738e-20*fs - 1.08629414661599e-16) +
8.54526219168312e-13);
b4 = Wah*(Wah*pow(fs,2)*(fs*(1.25815054436106e-21*fs -
7.79948641775953e-18) + 1.09694347514731e-14) +
fs*(fs*(fs*(-1.25650514701418e-21*fs + 7.82787441123208e-18) -
1.11751090038047e-14) + 3.0178818591385e-13)) +
fs*(fs*(fs*(-7.58859125274344e-21*fs + 5.43147073307993e-17) -
7.98575025005554e-14) + 4.27263109584156e-13);
a0 = Wah*(Wah*pow(fs,2)*(fs*(-4.45282315991132e-20*fs -
3.901628158932e-18) - 1.47456601855703e-14) +
fs*(fs*(fs*(2.97525142923867e-19*fs + 2.02689444660496e-17) +
1.12326060302109e-14) + 4.1891080072643e-13)) +
fs*(fs*(fs*(5.02480619021936e-20*fs + 1.20943680866159e-17) +
1.33374698092444e-13) + 3.17546887465293e-12) + 1.19008750206372e-11;
a1 = Wah*(Wah*pow(fs,3)*(1.78112926396453e-19*fs +
7.80325631786401e-18) + fs*(pow(fs,2)*(-1.19010057169547e-18*fs -
4.05378889320992e-17) + 8.3782160145286e-13)) +
fs*(pow(fs,2)*(-2.00992247608775e-19*fs - 2.41887361732318e-17) +
6.35093774930585e-12) + 4.76035000825489e-11;
a2 = Wah*(Wah*pow(fs,2)*(-2.67169389594679e-19*pow(fs,2) +
2.94913203711407e-14) + pow(fs,2)*(1.7851508575432e-18*pow(fs,2) -
2.24652120604218e-14)) + pow(fs,2)*(3.01488371413162e-19*pow(fs,2) -
2.66749396184888e-13) + 7.14052501238233e-11;
a3 = Wah*(Wah*pow(fs,3)*(1.78112926396453e-19*fs -
7.80325631786401e-18) + fs*(pow(fs,2)*(-1.19010057169547e-18*fs +
4.05378889320992e-17) - 8.3782160145286e-13)) +
fs*(pow(fs,2)*(-2.00992247608775e-19*fs + 2.41887361732318e-17) -
6.35093774930585e-12) + 4.76035000825489e-11;
a4 = Wah*(Wah*pow(fs,2)*(fs*(-4.45282315991132e-20*fs +
3.901628158932e-18) - 1.47456601855703e-14) +
fs*(fs*(fs*(2.97525142923867e-19*fs - 2.02689444660496e-17) +
1.12326060302109e-14) - 4.1891080072643e-13)) +
fs*(fs*(fs*(5.02480619021936e-20*fs - 1.20943680866159e-17) +
1.33374698092444e-13) - 3.17546887465293e-12) + 1.19008750206372e-11;
};
p_mid(x) = x : pre :
iir((b0/a0,b1/a0,b2/a0,b3/a0,b4/a0),(a1/a0,a2/a0,a3/a0,a4/a0)) with {
LogPot(a, x) = if(a, (exp(a * x) - 1) / (exp(a) - 1), x);
Inverted(b, x) = if(b, 1 - x, x);
s = 0.993;
fs = float(SR);
pre = dcblockerat(228.141301667);
Wah = (x : lowpass(1,6000.0) : highpass(1,10.0) : *(peak) :
reduce(max,256) : amp_follower_ud(attack,release) : min(1.0) :
max(0.0) : Inverted(r) : *(range));
//Wah = vslider("Wah[name:Wah]", 0.5, 0, 1, 0.01) :
Inverted(0) : smooth(s);
b0 = Wah*(Wah*pow(fs,2)*(fs*(1.25673379400189e-21*fs +
1.61204970391041e-17) + 2.34083126836639e-14) +
fs*(fs*(fs*(-1.25509024946765e-21*fs - 1.61488530660524e-17) -
2.38429224035913e-14) - 6.4400330373986e-13)) +
fs*(fs*(fs*(-7.5800460596258e-21*fs - 1.14664610269757e-16) -
1.70393435035239e-13) - 9.11761516790774e-13);
b1 = Wah*(Wah*pow(fs,3)*(-5.02693517600757e-21*fs -
3.22409940782082e-17) + fs*(pow(fs,2)*(5.02036099787061e-21*fs +
3.22977061321047e-17) - 1.28800660747972e-12)) +
fs*(pow(fs,2)*(3.03201842385032e-20*fs + 2.29329220539513e-16) -
1.82352303358155e-12);
b2 = Wah*(Wah*pow(fs,2)*(7.54040276401136e-21*pow(fs,2) -
4.68166253673278e-14) + pow(fs,2)*(-7.53054149680591e-21*pow(fs,2) +
4.76858448071827e-14)) + pow(fs,2)*(-4.54802763577548e-20*pow(fs,2) +
3.40786870070478e-13);
b3 = Wah*(Wah*pow(fs,3)*(-5.02693517600757e-21*fs +
3.22409940782082e-17) + fs*(pow(fs,2)*(5.02036099787061e-21*fs -
3.22977061321047e-17) + 1.28800660747972e-12)) +
fs*(pow(fs,2)*(3.03201842385032e-20*fs - 2.29329220539513e-16) +
1.82352303358155e-12);
b4 = Wah*(Wah*pow(fs,2)*(fs*(1.25673379400189e-21*fs -
1.61204970391041e-17) + 2.34083126836639e-14) +
fs*(fs*(fs*(-1.25509024946765e-21*fs + 1.61488530660524e-17) -
2.38429224035913e-14) + 6.4400330373986e-13)) +
fs*(fs*(fs*(-7.5800460596258e-21*fs + 1.14664610269757e-16) -
1.70393435035239e-13) + 9.11761516790774e-13);
a0 = Wah*(Wah*pow(fs,2)*(fs*(-4.44780902320256e-20*fs -
4.66089024039189e-18) - 3.14666190356821e-14) +
fs*(fs*(fs*(2.9719011238515e-19*fs + 2.08220998907639e-17) +
2.38657892377949e-14) + 8.93938040786422e-13)) +
fs*(fs*(fs*(5.01914796753341e-20*fs + 1.89702499604079e-17) +
2.84390724782166e-13) + 6.77335915336719e-12) + 2.53959670677961e-11;
a1 = Wah*(Wah*pow(fs,3)*(1.77912360928102e-19*fs +
9.32178048078377e-18) + fs*(pow(fs,2)*(-1.1887604495406e-18*fs -
4.16441997815278e-17) + 1.78787608157284e-12)) +
fs*(pow(fs,2)*(-2.00765918701337e-19*fs - 3.79404999208157e-17) +
1.35467183067344e-11) + 1.01583868271184e-10;
a2 = Wah*(Wah*pow(fs,2)*(-2.66868541392154e-19*pow(fs,2) +
6.29332380713641e-14) + pow(fs,2)*(1.7831406743109e-18*pow(fs,2) -
4.77315784755897e-14)) + pow(fs,2)*(3.01148878052005e-19*pow(fs,2) -
5.68781449564332e-13) + 1.52375802406776e-10;
a3 = Wah*(Wah*pow(fs,3)*(1.77912360928102e-19*fs -
9.32178048078377e-18) + fs*(pow(fs,2)*(-1.1887604495406e-18*fs +
4.16441997815278e-17) - 1.78787608157284e-12)) +
fs*(pow(fs,2)*(-2.00765918701337e-19*fs + 3.79404999208157e-17) -
1.35467183067344e-11) + 1.01583868271184e-10;
a4 = Wah*(Wah*pow(fs,2)*(fs*(-4.44780902320256e-20*fs +
4.66089024039189e-18) - 3.14666190356821e-14) +
fs*(fs*(fs*(2.9719011238515e-19*fs - 2.08220998907639e-17) +
2.38657892377949e-14) - 8.93938040786422e-13)) +
fs*(fs*(fs*(5.01914796753341e-20*fs - 1.89702499604079e-17) +
2.84390724782166e-13) - 6.77335915336719e-12) + 2.53959670677961e-11;
};
p = vslider("Mode[enum:Low|High|Orig]", 0, 0, 2,1) ;
t = _<:select3(p,p_bass,p_mid,p_orig) ;
process = t : tone : drive : *(Gain);