/usr/share/doc/faust/examples/envelop.dsp is in faust 0.9.46-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | declare name "envelop";
declare version "1.0";
declare author "Grame";
declare license "BSD";
declare copyright "(c)GRAME 2006";
import("music.lib");
//-------------------------------------------------
// ADSR Envelop Generator
// The 'state' of the envelop generator is
// defined by a phase signal p2 allowing to
// distinguish the attack and the decay-sustain
// phases, and the envelop signal y itself.
//-------------------------------------------------
envelop(a,d,s,r,t) = adsr ~ (_,_) : (!,_) // The 2 'state' signal are feedback
with {
adsr (p2,y) = (t>0) & (p2|(y>=1)), // p2 = decay-sustain phase
y + p1*a - (p2&(y>s))*d*y - p3*r*y // y = envelop signal
with {
p1 = (p2==0) & (t>0) & (y<1); // p1 = attack phase
p3 = (t<=0) & (y>0); // p3 = release phase
};
};
attack = 1.0/(SR*nentry("[1:]attack [unit:ms][style:knob]", 20, 1, 1000, 1)/1000);
decay = nentry("[2:]decay[style:knob]", 2, 1, 100, 0.1)/100000;
sustain = nentry("[3:]sustain [unit:pc][style:knob]", 10, 1, 100, 0.1)/100;
release = nentry("[4:]release[style:knob]", 10, 1, 100, 0.1)/100000;
process = button("play"): hgroup("", envelop(attack, decay, sustain, release) : *(noise));
|