import("stdfaust.lib"); frequency = hslider("freq",440,51,2000,0.01);gain = hslider("gain",1,0,1,0.01);feedback = hslider("feedback",0.995,0,1,0.01);trig = button("gate");beta = hslider("pick_position", 0.13, 0.02, 0.5, 0.01);stringsFadeTime = hslider("fadeTime",2,0,50,0.1)*0.001; fadeDelay(n,d,tau) = _ <: de.fdelay1(n,delLength1)*(gsmooth),de.fdelay1(n,delLength2)*(1-gsmooth) :> _with{ swit(t) = +(t)~_ : %(2); g = (d != d') : swit; //' gsmooth = g : si.smooth(ma.tau2pole(tau)); hold(t,x) = (_*(t)+(x'*(t != t'))~_)*t + x*(1-t); delLength1 = hold(1-g,d) : min(15000) : max(1); delLength2 = hold(g,d) : min(15000) : max(1);}; myString(freq,feedback) = +~(de.fdelay4(1024,delLength) <: (_+_')/2 : *(feedback))//myString(freq,feedback) = +~(fadeDelay(1024,delLength,stringsFadeTime) <: (_+_')/2 : *(feedback))with{ delLength = ma.SR/freq - 1;}; noiseburst(g,P) = no.noise : *(g : trigger(P))*gain : pickposfilterwith { diffgtz(x) = (x-x') > 0; decay(n,x) = x - (x>0)/n; release(n) = + ~ decay(n); trigger(n) = diffgtz : release(n) : > (0.0); ppdel = beta*P; // pick position delay pickposfilter = fi.ffcombfilter(4096,ppdel,-1); // defined in filter.lib}; process = noiseburst(trig,(ma.SR/frequency)) : fi.lowpass(3,frequency) : myString(frequency,feedback);
import("stdfaust.lib");
frequency = hslider("freq",440,51,2000,0.01);
gain = hslider("gain",1,0,1,0.01);
feedback = hslider("feedback",0.995,0,1,0.01);
trig = button("gate");
beta = hslider("pick_position", 0.13, 0.02, 0.5, 0.01);
stringsFadeTime = hslider("fadeTime",2,0,50,0.1)*0.001;
fadeDelay(n,d,tau) = _ <: de.fdelay1(n,delLength1)*(gsmooth),de.fdelay1(n,delLength2)*(1-gsmooth) :> _
with{
swit(t) = +(t)~_ : %(2);
g = (d != d') : swit; //'
gsmooth = g : si.smooth(ma.tau2pole(tau));
hold(t,x) = (_*(t)+(x'*(t != t'))~_)*t + x*(1-t);
delLength1 = hold(1-g,d) : min(15000) : max(1);
delLength2 = hold(g,d) : min(15000) : max(1);
};
myString(freq,feedback) = +~(de.fdelay4(1024,delLength) <: (_+_')/2 : *(feedback))
//myString(freq,feedback) = +~(fadeDelay(1024,delLength,stringsFadeTime) <: (_+_')/2 : *(feedback))
with{
delLength = ma.SR/freq - 1;
};
noiseburst(g,P) = no.noise : *(g : trigger(P))*gain : pickposfilter
with {
diffgtz(x) = (x-x') > 0;
decay(n,x) = x - (x>0)/n;
release(n) = + ~ decay(n);
trigger(n) = diffgtz : release(n) : > (0.0);
ppdel = beta*P; // pick position delay
pickposfilter = fi.ffcombfilter(4096,ppdel,-1); // defined in filter.lib
};
process = noiseburst(trig,(ma.SR/frequency)) : fi.lowpass(3,frequency) : myString(frequency,feedback);