Envelope Detector 2

Download

     Disclaimer...

27   desc:Envelope Detector 2, v1.0.0
28  
29  
30   slider1:0<0,1,1{OFF,ON}>HP
31   slider2:100<200,10000,1>Frequency
32   slider14:100<3,1000,1>Attack (us)
33   slider15:100<3,1500,1>Release (ms)
34  
35  
36   @init
37   x = 0;
38   x1 = 0;
39   x2 = 0;
40   y = 0;
41   y1 = 0;
42   y2 = 0;
43   d = sqrt(2);
44  
45   ga = gr = 1;
46   e = 0;
47  
48  
49   @slider
50   ga = exp(-1/(srate*slider14/1000000));
51   gr = exp(-1/(srate*slider15/1000));
52  
53   slider1 == 1 ? (
54   slider2 > 199 ? (
55   w = 2.0 * $pi * slider2 / srate;
56   beta = 0.5 * (( 1.0 - d / 2.0 * sin(w) ) / ( 1.0 + d / 2.0 * sin(w) ));
57   gamma = ( 0.5 + beta ) * cos(w);
58   alpha = ( 0.5 + beta - gamma ) / 4.0;
59   );
60   );
61  
62   @sample
63   a = spl0;
64   b = spl1;
65  
66   a < 0 ? i = -a : i = a;
67   b < 0 ? j = -b : j = b;
68   j > i ? i = j : i = i; // find max
69   e < i ? (
70   e *= ga;
71   e += (1-ga)*i;
72   )
73   🙁
74   e *= gr;
75   e += (1-gr)*i;
76   );
77  
78   slider1 == 1 ? (
79   x = e*2 - 1;
80   y = 2.0 * ( alpha * ( x + 2.0 * x1 + x2 ) + gamma * y1 - beta * y2 );
81   x2 = x1;
82   x1 = x;
83   y2 = y1;
84   y1 = y;
85   e = (y + 1) / 2;
86   );
87  
88   gDB = abs(20 * log10(e));
89  
90   e < 0.00000000001 ? e = 0 : e = e;
91  
92   spl0 = e;
93   spl1 = e;
94  

     Graphics...

96   @gfx 100 70
97   gfx_x=gfx_y=5;
98   gfx_r=0.7;
99   gfx_g=1;
100   gfx_b=0.1;
101   gfx_a=1;
102   gfx_drawchar($'E');
103   gfx_drawchar($'N');
104   gfx_drawchar($'V');
105   gfx_drawchar($' ');
106   gfx_drawchar($'2');
107   gfx_drawchar($':');
108   gfx_drawchar($' ');
109   gfx_drawchar($'-');
110   gfx_drawnumber(gDB,1);
111  
112   gfx_x=gfx_y=25;
113   gfx_rect(5, 25, gDB*10, 25);

Download