Knob, Wide [±12dB]

Download

     Disclaimer...

28   desc:Knob: Wide [±12dB], v1.0.1
29  
30   slider1: 50 <0, 100, 0.1> Position [mm]
31  
32   @init
33   gfx_clear = 256*256*256-1;
34   m = 1;
35  
36   @slider
37   c = 2 * ((slider1 / 100.0) - 0.5); // -1 < c < 1
38   d = sqrt(abs(c)) * 12;
39   c < 0 ? d *= -1;
40   m = pow( 10, d / 20.0 );
41  
42   @sample
43   spl0 *= m;
44   spl1 *= m;
45  

     Graphics...

47   @gfx 256 256
48   gfx_setfont(1, "Arial", 10);
49   gfx_a = 1;
50  
51   gfx_r = gfx_g = gfx_b = 0.1;
52   gfx_line(0, 0, gfx_w, 0, 0.5); // outline our GUI box
53   gfx_line(0, 0, 0, gfx_h, 0.5);
54   gfx_line(gfx_w-1, 0, gfx_w-1, gfx_h, 0.5);
55   gfx_line(0, gfx_h-2, gfx_w, gfx_h-2, 0.5);
56  
57   x_step = gfx_w / 10;
58   y_step = gfx_h / 10;
59  
60   i = 1;
61   loop(9, // y-axiis
62   x = i*x_step;
63   gfx_line(x, y_step, x, y_step*7, 0.5);
64   i += 1;
65   );
66  
67   gfx_x = x_step - 2;
68   gfx_y = gfx_h - 3*y_step + 9;
69   gfx_drawchar($'0');
70   gfx_drawchar($'m');gfx_drawchar($'m');
71  
72   gfx_x = 3*x_step - 7;
73   gfx_y = gfx_h - 3*y_step + 9;
74   gfx_drawchar($'2');
75   gfx_drawchar($'5');
76   gfx_drawchar($'m');gfx_drawchar($'m');
77  
78   gfx_x = 5*x_step - 7;
79   gfx_y = gfx_h - 3*y_step + 9;
80   gfx_drawchar($'5');
81   gfx_drawchar($'0');
82   gfx_drawchar($'m');gfx_drawchar($'m');
83  
84   gfx_x = 7*x_step - 7;
85   gfx_y = gfx_h - 3*y_step + 9;
86   gfx_drawchar($'7');
87   gfx_drawchar($'5');
88   gfx_drawchar($'m');gfx_drawchar($'m');
89  
90   gfx_x = 9*x_step - 12;
91   gfx_y = gfx_h - 3*y_step + 9;
92   gfx_drawchar($'1');
93   gfx_drawchar($'0');
94   gfx_drawchar($'0');
95   gfx_drawchar($'m');gfx_drawchar($'m');
96  
97   i = 1;
98   loop(7, // x-axiis
99   y = i*y_step;
100   gfx_line(x_step-2, y, x_step*9, y, 0.5);
101   i += 1;
102   );
103  
104   gfx_x = x_step - 38;
105   gfx_y = y_step - 6;
106   gfx_drawchar($'+');
107   gfx_drawchar($'1');
108   gfx_drawchar($'2');
109   gfx_drawchar($'d');
110   gfx_drawchar($'B');
111  
112   gfx_x = x_step - 36;
113   gfx_y = 2*y_step - 7;
114   gfx_drawchar($'+');
115   gfx_drawchar($' ');
116   gfx_drawchar($'8');
117   gfx_drawchar($'d');
118   gfx_drawchar($'B');
119  
120   gfx_x = x_step - 36;
121   gfx_y = 3*y_step - 7;
122   gfx_drawchar($'+');
123   gfx_drawchar($' ');
124   gfx_drawchar($'4');
125   gfx_drawchar($'d');
126   gfx_drawchar($'B');
127  
128   gfx_x = x_step - 32;
129   gfx_y = 4*y_step - 7;
130   gfx_drawchar($' ');
131   gfx_drawchar($' ');
132   gfx_drawchar($'0');
133   gfx_drawchar($'d');
134   gfx_drawchar($'B');
135  
136   gfx_x = x_step - 36;
137   gfx_y = 5*y_step - 7;
138   gfx_drawchar($'-');
139   gfx_drawchar($' ');
140   gfx_drawchar($'4');
141   gfx_drawchar($'d');
142   gfx_drawchar($'B');
143  
144   gfx_x = x_step - 36;
145   gfx_y = 6*y_step - 7;
146   gfx_drawchar($'-');
147   gfx_drawchar($' ');
148   gfx_drawchar($'8');
149   gfx_drawchar($'d');
150   gfx_drawchar($'B');
151  
152   gfx_x = x_step - 38;
153   gfx_y = 7*y_step - 7;
154   gfx_drawchar($'-');
155   gfx_drawchar($'1');
156   gfx_drawchar($'2');
157   gfx_drawchar($'d');
158   gfx_drawchar($'B');
159  
160   gfx_r = gfx_g = 0.1;
161   gfx_b = 0.9;
162   dB = 20.01 * log10(m) + 12;
163   y = y_step*7 - y_step*dB/4;// + y_step;
164   gfx_rect(x_step+2, y, x_step*8-3, 2, 0.5); // horizontal line
165   gfx_rect(x_step+slider1/100*x_step*8, y_step+2, 1, y_step*6-2, 0.5);// vertical line
166   gfx_rect(x_step+slider1/100*x_step*8-3, y-2, 6, 6, 0.5); // hilite box
167   gfx_x = gfx_w*.9+8;
168   gfx_y = y-6;
169   sprintf(str, "%.1fdB", dB-12);
170   gfx_drawstr(str);
171   gfx_x = x_step+slider1/100*x_step*8-9;
172   gfx_y = y_step - 17;
173   sprintf(str, "%.1fmm", slider1);
174   gfx_drawstr(str);
175  
176   gfx_g = 0.2;
177   gfx_b = gfx_r = 0.9;
178   RES = 100; // min = 8
179   x_step1 = x_step * 8/RES;
180  
181   i = 1;
182   loop(RES, //8, // main curve
183   x = i*x_step1;
184  
185   c=(i-1)/RES;
186   d = 2 * ((c) - 0.5);
187   dB = sqrt(abs(d)) * 12;
188   d < 0 ? dB *= -1;
189   dB += 12;
190   y = y_step*7 - y_step*dB/4;
191  
192   c=(i)/RES;
193   d = 2 * ((c) - 0.5);
194   dB1 = sqrt(abs(d)) * 12;
195   d < 0 ? dB1 *= -1;
196   dB1 += 12;
197   y1 = y_step*7 - y_step*dB1/4;
198  
199   gfx_line(x_step+x-x_step1, y, x_step+x, y1, 0.5);
200   i += 1;
201   );
202  
203   gfx_setfont(1, "Arial", 12); // main title
204   gfx_r = gfx_g = gfx_b = 0.0;
205   gfx_x = x_step;
206   gfx_y = gfx_h - y_step - 7;
207   gfx_drawstr("Wide Knob: Gain (dB) - vs - Fader Travel (mm)");
208  
209   // mouse
210   mouse_cap == 1 ? (
211   xx = mouse_x;
212   xx > gfx_w * 0.1 ? (
213   xx < gfx_w * 0.9 ? (
214   yy = mouse_y;
215   yy > gfx_h * 0.1 ? (
216   yy < gfx_h * 0.7 ? (
217   slider1 = 100 * (xx - gfx_w*.1) / (gfx_w*.9 - gfx_w*.1);
218   slider1 < 0.3 ? slider1 = floor(slider1);
219   slider1 > 99.7 ? slider1 = ceil(slider1);
220   slider1 = floor(slider1*10);
221   slider1 /= 10;
222   sliderchange(slider1);
223   slider_automate(slider1);
224   c = 2 * ((slider1 / 100.0) - 0.5); // -1 < c < 1
225   d = sqrt(abs(c)) * 12;
226   c < 0 ? d *= -1;
227   m = pow( 10, d / 20.0 );
228   )
229   );
230   );
231   );
232   );

Download