00 \u00a0 \/**********************************************************************
01 \u00a0 Copyright (c) 2014-2016 Mark C. Erickson
02 \u00a0
03 \u00a0 Permission is hereby granted, free of charge, to any person obtaining
04 \u00a0 a copy of this software and associated documentation files (the
05 \u00a0 \"Software\"), to deal in the Software without restriction, including
06 \u00a0 without limitation the rights to use, copy, modify, merge, publish,
07 \u00a0 distribute, sublicense, and\/or sell copies of the Software, and to
08 \u00a0 permit persons to whom the Software is furnished to do so, subject to
09 \u00a0 the following conditions:
10 \u00a0
11 \u00a0 The above copyright notice and this permission notice shall be included
12 \u00a0 in all copies or substantial portions of the Software.
13 \u00a0
14 \u00a0 THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 \u00a0 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT-
16 \u00a0 ABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO
17 \u00a0 EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 \u00a0 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 \u00a0 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
20 \u00a0 THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 \u00a0
22 \u00a0 CHANGE LOG:
23 \u00a0 v1.1.0 - added GUI
24 \u00a0 v1.0.0 - initial release
25 \u00a0
26 \u00a0 **********************************************************************\/
27 \u00a0
<\/p>
Disclaimer...<\/a> 48 \u00a0 @gfx 256 256
28 \u00a0 desc:Fader: Parallel Squared [+12dB], v1.1.0
29 \u00a0
30 \u00a0 slider1: 74.4 <0, 100, 0.1> Position [mm]
31 \u00a0
32 \u00a0 @init
33 \u00a0 gfx_clear = 256*256*256-1;
34 \u00a0 factor = 4700.0 \/ 12000.0;
35 \u00a0 m = 1;
36 \u00a0
37 \u00a0 @slider
38 \u00a0 c = slider1 \/ 100.0;
39 \u00a0 d = 1.0 \/ (((1-c)\/c) + ((1-c)\/factor) + 1.0);
40 \u00a0 m = 3.981071705534972 * d * d;
41 \u00a0
42 \u00a0 @sample
43 \u00a0 spl0 *= m;
44 \u00a0 spl1 *= m;
45 \u00a0
46 \u00a0
Graphics...<\/a><\/p>
49 \u00a0 gfx_setfont(1, \"Arial\", 10);
50 \u00a0 gfx_a = 1;
51 \u00a0
52 \u00a0 gfx_r = gfx_g = gfx_b = 0.1;
53 \u00a0 gfx_line(0, 0, gfx_w, 0, 0.5); \/\/ outline our GUI box
54 \u00a0 gfx_line(0, 0, 0, gfx_h, 0.5);
55 \u00a0 gfx_line(gfx_w-1, 0, gfx_w-1, gfx_h, 0.5);
56 \u00a0 gfx_line(0, gfx_h-2, gfx_w, gfx_h-2, 0.5);
57 \u00a0
58 \u00a0 x_step = gfx_w \/ 10;
59 \u00a0 y_step = gfx_h \/ 10;
60 \u00a0
61 \u00a0 i = 1;
62 \u00a0 loop(9, \/\/ y-axiis
63 \u00a0 x = i*x_step;
64 \u00a0 gfx_line(x, y_step, x, y_step*8, 0.5);
65 \u00a0 i += 1;
66 \u00a0 );
67 \u00a0
68 \u00a0 gfx_x = x_step - 2;
69 \u00a0 gfx_y = gfx_h - 2*y_step + 9;
70 \u00a0 gfx_drawchar($'0');
71 \u00a0 gfx_drawchar($'m');
72 \u00a0 gfx_drawchar($'m');
73 \u00a0
74 \u00a0 gfx_x = 3*x_step - 7;
75 \u00a0 gfx_y = gfx_h - 2*y_step + 9;
76 \u00a0 gfx_drawchar($'2');
77 \u00a0 gfx_drawchar($'5');
78 \u00a0 gfx_drawchar($'m');
79 \u00a0 gfx_drawchar($'m');
80 \u00a0
81 \u00a0 gfx_x = 5*x_step - 7;
82 \u00a0 gfx_y = gfx_h - 2*y_step + 9;
83 \u00a0 gfx_drawchar($'5');
84 \u00a0 gfx_drawchar($'0');
85 \u00a0 gfx_drawchar($'m');
86 \u00a0 gfx_drawchar($'m');
87 \u00a0
88 \u00a0 gfx_x = 7*x_step - 7;
89 \u00a0 gfx_y = gfx_h - 2*y_step + 9;
90 \u00a0 gfx_drawchar($'7');
91 \u00a0 gfx_drawchar($'5');
92 \u00a0 gfx_drawchar($'m');
93 \u00a0 gfx_drawchar($'m');
94 \u00a0
95 \u00a0 gfx_x = 9*x_step - 12;
96 \u00a0 gfx_y = gfx_h - 2*y_step + 9;
97 \u00a0 gfx_drawchar($'1');
98 \u00a0 gfx_drawchar($'0');
99 \u00a0 gfx_drawchar($'0');
100 \u00a0 gfx_drawchar($'m');
101 \u00a0 gfx_drawchar($'m');
102 \u00a0
103 \u00a0 i = 1;
104 \u00a0 loop(8, \/\/ x-axiis
105 \u00a0 y = i*y_step;
106 \u00a0 gfx_line(x_step-2, y, x_step*9, y, 0.5);
107 \u00a0 i += 1;
108 \u00a0 );
109 \u00a0
110 \u00a0 gfx_x = x_step - 36;
111 \u00a0 gfx_y = y_step - 6;
112 \u00a0 gfx_drawchar($'+');
113 \u00a0 gfx_drawchar($'1');
114 \u00a0 gfx_drawchar($'2');
115 \u00a0 gfx_drawchar($'d');
116 \u00a0 gfx_drawchar($'B');
117 \u00a0
118 \u00a0 gfx_x = x_step - 32;
119 \u00a0 gfx_y = 2*y_step - 7;
120 \u00a0 gfx_drawchar($' ');
121 \u00a0 gfx_drawchar($'0');
122 \u00a0 gfx_drawchar($' ');
123 \u00a0 gfx_drawchar($'d');
124 \u00a0 gfx_drawchar($'B');
125 \u00a0
126 \u00a0 gfx_x = x_step - 36;
127 \u00a0 gfx_y = 3*y_step - 7;
128 \u00a0 gfx_drawchar($'-');
129 \u00a0 gfx_drawchar($'1');
130 \u00a0 gfx_drawchar($'2');
131 \u00a0 gfx_drawchar($'d');
132 \u00a0 gfx_drawchar($'B');
133 \u00a0
134 \u00a0 gfx_x = x_step - 36;
135 \u00a0 gfx_y = 4*y_step - 7;
136 \u00a0 gfx_drawchar($'-');
137 \u00a0 gfx_drawchar($'2');
138 \u00a0 gfx_drawchar($'4');
139 \u00a0 gfx_drawchar($'d');
140 \u00a0 gfx_drawchar($'B');
141 \u00a0
142 \u00a0 gfx_x = x_step - 36;
143 \u00a0 gfx_y = 5*y_step - 7;
144 \u00a0 gfx_drawchar($'-');
145 \u00a0 gfx_drawchar($'3');
146 \u00a0 gfx_drawchar($'6');
147 \u00a0 gfx_drawchar($'d');
148 \u00a0 gfx_drawchar($'B');
149 \u00a0
150 \u00a0 gfx_x = x_step - 36;
151 \u00a0 gfx_y = 6*y_step - 7;
152 \u00a0 gfx_drawchar($'-');
153 \u00a0 gfx_drawchar($'4');
154 \u00a0 gfx_drawchar($'8');
155 \u00a0 gfx_drawchar($'d');
156 \u00a0 gfx_drawchar($'B');
157 \u00a0
158 \u00a0 gfx_x = x_step - 36;
159 \u00a0 gfx_y = 7*y_step - 7;
160 \u00a0 gfx_drawchar($'-');
161 \u00a0 gfx_drawchar($'6');
162 \u00a0 gfx_drawchar($'0');
163 \u00a0 gfx_drawchar($'d');
164 \u00a0 gfx_drawchar($'B');
165 \u00a0
166 \u00a0 gfx_x = x_step - 36;
167 \u00a0 gfx_y = 8*y_step - 8;
168 \u00a0 gfx_drawchar($'-');
169 \u00a0 gfx_drawchar($'7');
170 \u00a0 gfx_drawchar($'2');
171 \u00a0 gfx_drawchar($'d');
172 \u00a0 gfx_drawchar($'B');
173 \u00a0
174 \u00a0 gfx_r = gfx_g = 0.2;
175 \u00a0 gfx_b = 0.9;
176 \u00a0 m1 = m\/3.981071705534972;
177 \u00a0 dB = 20 * log10(m1);
178 \u00a0 dB *= -1;
179 \u00a0 dB > 83 ? dB = 84;
180 \u00a0 m == 0? dB = 84;
181 \u00a0 y = y_step*dB\/12 + y_step;
182 \u00a0 gfx_rect(x_step+2, y, x_step*8-3, 2, 0.5); \/\/ horizontal line
183 \u00a0 gfx_rect(x_step+slider1\/100*x_step*8, y_step+2, 1, y_step*7-3, 0.5); \/\/ vertical line
184 \u00a0 gfx_rect(x_step+slider1\/100*x_step*8-3, y-2, 6, 6, 0.5); \/\/ hilite box
185 \u00a0 gfx_x = gfx_w*.9+8;
186 \u00a0 gfx_y = y-6;
187 \u00a0 sprintf(str, \"%.1fdB\", -dB+12);
188 \u00a0 gfx_drawstr(str);
189 \u00a0 gfx_x = x_step+slider1\/100*x_step*8-3;
190 \u00a0 gfx_y = y_step - 17;
191 \u00a0 sprintf(str, \"%.1fmm\", slider1);
192 \u00a0 gfx_drawstr(str);
193 \u00a0
194 \u00a0 gfx_g = 0.1;
195 \u00a0 gfx_b = gfx_r = 0.9;
196 \u00a0 RES = 100; \/\/ min = 8
197 \u00a0 x_step1 = x_step * 8\/RES;
198 \u00a0
199 \u00a0 i = 1;
200 \u00a0 loop(RES, \/\/8, \/\/ main curve
201 \u00a0 x = i*x_step1;
202 \u00a0 c=(i-1)\/RES;
203 \u00a0 d = 1.0 \/ (((1-c)\/c) + ((1-c)\/factor) + 1.0);
204 \u00a0 m1 = d * d;
205 \u00a0 dB = -20 * log10(m1); dB > 83 ? dB = 84;
206 \u00a0 i == 1? dB = 84;
207 \u00a0 y = y_step*dB\/12 + y_step;
208 \u00a0
209 \u00a0 c=(i)\/RES;
210 \u00a0 d = 1.0 \/ (((1-c)\/c) + ((1-c)\/factor) + 1.0);
211 \u00a0 m2 = d * d;
212 \u00a0 dB1 = -20 * log10(m2);
213 \u00a0 dB1 > 83 ? dB1 = 84;
214 \u00a0 i == 1 ? dB = 84;
215 \u00a0 y1 = y_step*dB1\/12 + y_step;
216 \u00a0
217 \u00a0 gfx_line(x_step+x-x_step1, y, x_step+x, y1, 0.5);
218 \u00a0 i += 1;
219 \u00a0 );
220 \u00a0
221 \u00a0 gfx_setfont(1, \"Arial\", 12); \/\/ main title
222 \u00a0 gfx_r = gfx_g = gfx_b = 0.0;
223 \u00a0 gfx_x = x_step;
224 \u00a0 gfx_y = gfx_h - y_step + 3;
225 \u00a0 gfx_drawstr(\"Parallel Squared Fader: Gain (dB) - vs - Fader Travel (mm)\");
226 \u00a0
227 \u00a0 \/\/ mouse
228 \u00a0 mouse_cap == 1 ? (
229 \u00a0 xx = mouse_x;
230 \u00a0 xx > gfx_w * 0.1 ? (
231 \u00a0 xx < gfx_w * 0.9 ? (
232 \u00a0 yy = mouse_y;
233 \u00a0 yy > gfx_h * 0.1 ? (
234 \u00a0 yy < gfx_h * 0.8 ? (
235 \u00a0 slider1 = 100 * (xx - gfx_w*.1) \/ (gfx_w*.9 - gfx_w*.1);
236 \u00a0 slider1 < 0.3 ? slider1 = floor(slider1);
237 \u00a0 slider1 > 99.7 ? slider1 = ceil(slider1);
238 \u00a0 slider1 = floor(slider1*10);
239 \u00a0 slider1 \/= 10;
240 \u00a0 sliderchange(slider1);
241 \u00a0 slider_automate(slider1);
242 \u00a0 c = slider1\/100;
243 \u00a0 d = 1.0 \/ (((1-c)\/c) + ((1-c)\/factor) + 1.0);
244 \u00a0 m = 3.981071705534972 * d * d;
245 \u00a0 )
246 \u00a0 );
247 \u00a0 );
248 \u00a0 );
249 \u00a0 );
250 \u00a0
251 \u00a0 \n
<\/p>Download<\/a>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/109"}],"collection":[{"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=109"}],"version-history":[{"count":4,"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/109\/revisions"}],"predecessor-version":[{"id":600,"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/109\/revisions\/600"}],"wp:attachment":[{"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=109"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.auriculaonline.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}