1<CsoundSynthesizer>
2<CsOptions>
3</CsOptions>
4<CsInstruments>
5
6sr = 44100
7ksmps = 128
8nchnls = 2
90dbfs = 1
10
11; This file implements as UDOs the basic parametric equalizers from
12; Zoelzer's DAFX book (Chapter 2).
13; They are a set of calculations for biquad filter coefficients to
14; produce controllable second order filters.
15
16opcode lpf2pole, a, ak
17ain,kfc xin
18ktrig changed kfc
19if ktrig == 1 then
20	kvalue = tan($M_PI * kfc / sr)
21	kdenom = 1 + ($M_SQRT2 * kvalue) + (kvalue^2)
22	knumb0 = (kvalue^2)
23	kb0 = knumb0/kdenom
24	knumb1 = 2 * (kvalue^2)
25	kb1 = knumb1/kdenom
26	knumb2 = (kvalue^2)
27	kb2 = knumb2/kdenom
28	knuma1 = 2 *((kvalue^2) - 1)
29	ka1 = knuma1/kdenom
30	knuma2 = 1 - ($M_SQRT2 * kvalue) + (kvalue^2)
31	ka2 = knuma2/kdenom
32	Sdisp sprintfk "b0=%.3f      b1=%.3f      b2=%.3f\n\na1=%.3f      a2=%.3f", kb0, kb1, kb2, ka1, ka2
33	outvalue "coef", Sdisp
34endif
35afilt biquad ain, kb0, kb1, kb2, 1, ka1, ka2
36xout afilt
37endop
38
39opcode hpf2pole, a, ak
40ain,kfc xin
41ktrig changed kfc
42if ktrig == 1 then
43	kvalue = tan($M_PI * kfc / sr)
44	kdenom = 1 + ($M_SQRT2 * kvalue) + (kvalue^2)
45	knum0 = 1
46	kb0 = knum0/kdenom
47	knumb1 = -2
48	kb1 = knumb1/kdenom
49	knumb2 = 1
50	kb2 = knumb2/kdenom
51	knuma1 = 2 *((kvalue^2) - 1)
52	ka1 = knuma1/kdenom
53	knuma2 = 1 - ($M_SQRT2 * kvalue) + (kvalue^2)
54	ka2 = knuma2/kdenom
55	Sdisp sprintfk "b0=%.3f      b1=%.3f      b2=%.3f\n\na1=%.3f      a2=%.3f", kb0, kb1, kb2, ka1, ka2
56	outvalue "coef", Sdisp
57endif
58afilt biquad ain, kb0, kb1, kb2, 1, ka1, ka2
59xout afilt
60endop
61
62opcode loshelf, a, akk
63ain,kfc, kgain xin
64
65ktrig changed kfc, kgain
66if ktrig == 1 then
67	kvalue = tan($M_PI * kfc / sr)
68	if kgain >= 0 then
69		kV0 = 10^(kgain/20)
70		kdenom = 1 + ($M_SQRT2 * kvalue) + (kvalue^2)
71		knumb0 = 1 + (sqrt(2*kV0) * kvalue) + (kV0 * kvalue^2)
72		kb0 = knumb0/kdenom
73		knumb1 = 2 * ((kV0 * kvalue^2) - 1)
74		kb1 = knumb1/kdenom
75		knumb2 = 1 - (sqrt(2*kV0) * kvalue) + (kV0 * kvalue^2)
76		kb2 = knumb2/kdenom
77		knuma1 = 2 *((kvalue^2) - 1)
78		ka1 = knuma1/kdenom
79		knuma2 = 1 - ($M_SQRT2 * kvalue) + (kvalue^2)
80		ka2 = knuma2/kdenom
81	else
82		kV0 = 10^(-kgain/20)
83		kdenom = 1 + (sqrt(2*kV0) * kvalue) + (kV0 * kvalue^2)
84		knumb0 = 1 + ($M_SQRT2 * kvalue) + (kvalue^2)
85		kb0 = knumb0/kdenom
86		knumb1 = 2 * ((kvalue^2) - 1 )
87		kb1 = knumb1/kdenom
88		knumb2 = 1 - (sqrt(2*kV0) * kvalue) + (kvalue^2)
89		kb2 = knumb2/kdenom
90		knuma1 = 2 *((kV0 * kvalue^2) - 1)
91		ka1 = knuma1/kdenom
92		knuma2 = 1 - (sqrt(2*kV0) * kvalue) + (kV0 * kvalue^2)
93		ka2 = knuma2/kdenom
94
95	endif
96	Sdisp sprintfk "b0=%.3f      b1=%.3f      b2=%.3f\n\na1=%.3f      a2=%.3f", kb0, kb1, kb2, ka1, ka2
97	outvalue "coef", Sdisp
98endif
99afilt biquad ain, kb0, kb1, kb2, 1, ka1, ka2
100xout afilt
101endop
102
103opcode hishelf, a, akk
104ain,kfc, kgain xin
105ktrig changed kfc, kgain
106
107if ktrig == 1 then
108	kvalue = tan($M_PI * kfc / sr)
109	kV0 = 10^(kgain/20)
110	if kgain >= 0 then
111		kV0 = 10^(kgain/20)
112		kdenom = 1 + ($M_SQRT2 * kvalue) + (kvalue^2)
113		knumb0 = kV0 + (sqrt(2*kV0) * kvalue) + (kvalue^2)
114		kb0 = knumb0/kdenom
115		knumb1 = 2 * ((kvalue^2) - kV0)
116		kb1 = knumb1/kdenom
117		knumb2 = kV0 - (sqrt(2*kV0) * kvalue) + (kvalue^2)
118		kb2 = knumb2/kdenom
119		knuma1 = 2 *((kvalue^2) - 1)
120		ka1 = knuma1/kdenom
121		knuma2 = 1 - ($M_SQRT2 * kvalue) + (kvalue^2)
122		ka2 = knuma2/kdenom
123	else
124		kV0 = 10^(-kgain/20)
125		kdenom = kV0 + (sqrt(2*kV0) * kvalue) + (kvalue^2)
126		knumb0 = 1 + ($M_SQRT2 * kvalue) + (kvalue^2)
127		kb0 = knumb0/kdenom
128		knumb1 = 2 * ((kvalue^2) - 1 )
129		kb1 = knumb1/kdenom
130		knumb2 = 1 - ($M_SQRT2 * kvalue) + (kvalue^2)
131		kb2 = knumb2/kdenom
132		kdenom = 1 + (sqrt(2/kV0) * kvalue) + ((kvalue^2)/ kV0)
133		knuma1 = 2 *(((kvalue^2)/ kV0) - 1)
134		ka1 = knuma1/kdenom
135		knuma2 = 1 - (sqrt(2/kV0) * kvalue) + ((kvalue^2)/ kV0)
136		ka2 = knuma2/kdenom
137
138	endif
139	Sdisp sprintfk "b0=%.3f      b1=%.3f      b2=%.3f\n\na1=%.3f      a2=%.3f", kb0, kb1, kb2, ka1, ka2
140	outvalue "coef", Sdisp
141endif
142afilt biquad ain, kb0, kb1, kb2, 1, ka1, ka2
143xout afilt
144endop
145
146opcode eq2pole, a, akkk
147ain,kfc, kgain, kQ xin
148
149ktrig changed kfc, kgain, kQ
150if ktrig == 1 then
151	kvalue = tan($M_PI * kfc / sr)
152	kV0 = 10^(kgain/20)
153	if kgain >= 0 then
154		kV0 = 10^(kgain/20)
155		kdenom = 1 + (kvalue / kQ) + (kvalue^2)
156		knumb0 = 1 + (kV0 * kvalue / kQ) + (kvalue^2)
157		kb0 = knumb0/kdenom
158		knumb1 = 2 * ((kvalue^2) - 1)
159		kb1 = knumb1/kdenom
160		knumb2 = 1 - (kV0 * kvalue / kQ) + (kvalue^2)
161		kb2 = knumb2/kdenom
162		knuma1 = 2 *((kvalue^2) - 1)
163		ka1 = knuma1/kdenom
164		knuma2 = 1 - (kvalue / kQ) + (kvalue^2)
165		ka2 = knuma2/kdenom
166	else
167		kV0 = 10^(-kgain/20)
168		kdenom = 1 + (kV0 * kvalue / kQ) + (kvalue^2)
169		knumb0 = 1 + (kvalue / kQ) + (kvalue^2)
170		kb0 = knumb0/kdenom
171		knumb1 = 2 * ((kvalue^2) - 1)
172		kb1 = knumb1/kdenom
173		knumb2 = 1 - (kvalue / kQ) + (kvalue^2)
174		kb2 = knumb2/kdenom
175		knuma1 = 2 *((kvalue^2) - 1)
176		ka1 = knuma1/kdenom
177		knuma2 = 1 - (kV0 * kvalue / kQ) + (kvalue^2)
178		ka2 = knuma2/kdenom
179
180	endif
181	Sdisp sprintfk "b0=%.3f      b1=%.3f      b2=%.3f\n\na1=%.3f      a2=%.3f", kb0, kb1, kb2, ka1, ka2
182	outvalue "coef", Sdisp
183endif
184afilt biquad ain, kb0, kb1, kb2, 1, ka1, ka2
185xout afilt
186endop
187
188opcode allpass1, a, ak
189ain,kfc xin
190ktrig changed kfc
191if ktrig == 1 then
192	kvalue = tan($M_PI * kfc / sr)
193	kc = (kvalue  - 1) / (kvalue + 1)
194	kd = - cos(2* $M_PI* kfc / sr)
195	kb0 = kc
196	kb1 = 1
197	ka0 = 1
198	ka1 = kc
199	Sdisp sprintfk "b0=%.3f      b1=%.3f\n\na1=%.3f", kb0, kb1, ka1
200	outvalue "coef", Sdisp
201endif
202afilt biquad ain, kb0, kb1, 0, ka0, ka1, 0
203xout afilt
204endop
205
206opcode allpass2, a, akk
207ain,kfc, kfb xin
208ktrig changed kfc, kfb
209if ktrig == 1 then
210	kvalue = tan($M_PI * kfb / sr)
211	kc = (kvalue  - 1) / (kvalue + 1)
212	kd = - cos(2* $M_PI* kfc / sr)
213	kb0 = - kc
214	kb1 = kd * ( 1 - kc )
215	kb2 = 1
216	ka0 = 1
217	ka1 = kd * ( 1 - kc )
218	ka2 = - kc
219	Sdisp sprintfk "b0=%.3f      b1=%.3f      b2=%.3f\n\na1=%.3f      a2=%.3f", kb0, kb1, kb2, ka1, ka2
220	outvalue "coef", Sdisp
221endif
222afilt biquad ain, kb0, kb1, kb2, ka0, ka1, ka2
223xout afilt
224endop
225
226
227instr 1
228anoise noise 1, 0
229ktype invalue "type"
230kfreq invalue "freq"
231kgain invalue "gain"
232kQ invalue "Q"
233
234if ktype == 0 then
235	afilt lpf2pole anoise, kfreq
236elseif ktype == 1 then
237	afilt hpf2pole anoise, kfreq
238elseif ktype == 2 then
239	afilt loshelf anoise, kfreq, kgain
240elseif ktype == 3 then
241	afilt hishelf anoise, kfreq, kgain
242elseif ktype == 4 then
243	afilt eq2pole anoise, kfreq, kgain, kQ
244elseif ktype == 5 then
245	afilt allpass1 anoise, kfreq
246elseif ktype == 6 then
247	afilt allpass2 anoise, kfreq, kQ
248else
249	afilt = anoise
250endif
251
252dispfft afilt, 0.5, 4096
253aout = afilt*0.02
254aout clip aout, 0, 0.3 ; For ear and speaker protection from unstable filters
255outs aout, aout
256endin
257
258
259</CsInstruments>
260<CsScore>
261i 1 0 3600
262e
263</CsScore>
264</CsoundSynthesizer>
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281<bsbPanel>
282 <label>Widgets</label>
283 <objectName/>
284 <x>808</x>
285 <y>138</y>
286 <width>755</width>
287 <height>510</height>
288 <visible>true</visible>
289 <uuid/>
290 <bgcolor mode="background">
291  <r>204</r>
292  <g>204</g>
293  <b>204</b>
294 </bgcolor>
295 <bsbObject version="2" type="BSBHSlider">
296  <objectName>freq</objectName>
297  <x>9</x>
298  <y>205</y>
299  <width>709</width>
300  <height>35</height>
301  <uuid>{0bd0d91d-2f3a-441f-a01b-6d78738906f2}</uuid>
302  <visible>true</visible>
303  <midichan>0</midichan>
304  <midicc>-3</midicc>
305  <minimum>1.00000000</minimum>
306  <maximum>22050.00000000</maximum>
307  <value>7029.31311707</value>
308  <mode>lin</mode>
309  <mouseControl act="jump">continuous</mouseControl>
310  <resolution>-1.00000000</resolution>
311  <randomizable group="0">true</randomizable>
312 </bsbObject>
313 <bsbObject version="2" type="BSBGraph">
314  <objectName/>
315  <x>8</x>
316  <y>263</y>
317  <width>713</width>
318  <height>213</height>
319  <uuid>{8dcfe636-a222-4950-9553-5dd30cd898c0}</uuid>
320  <visible>true</visible>
321  <midichan>0</midichan>
322  <midicc>-3</midicc>
323  <value>0</value>
324  <objectName2/>
325  <zoomx>1.00000000</zoomx>
326  <zoomy>1.00000000</zoomy>
327  <dispx>1.00000000</dispx>
328  <dispy>1.00000000</dispy>
329  <modex>lin</modex>
330  <modey>lin</modey>
331  <all>true</all>
332 </bsbObject>
333 <bsbObject version="2" type="BSBLabel">
334  <objectName/>
335  <x>393</x>
336  <y>234</y>
337  <width>41</width>
338  <height>24</height>
339  <uuid>{1f0cb546-0de6-44c0-b80a-6a098d0fd56d}</uuid>
340  <visible>true</visible>
341  <midichan>0</midichan>
342  <midicc>-3</midicc>
343  <label>Hz</label>
344  <alignment>left</alignment>
345  <font>Helvetica</font>
346  <fontsize>12</fontsize>
347  <precision>3</precision>
348  <color>
349   <r>0</r>
350   <g>0</g>
351   <b>0</b>
352  </color>
353  <bgcolor mode="background">
354   <r>255</r>
355   <g>255</g>
356   <b>255</b>
357  </bgcolor>
358  <bordermode>noborder</bordermode>
359  <borderradius>1</borderradius>
360  <borderwidth>1</borderwidth>
361 </bsbObject>
362 <bsbObject version="2" type="BSBLabel">
363  <objectName>freq</objectName>
364  <x>327</x>
365  <y>234</y>
366  <width>69</width>
367  <height>24</height>
368  <uuid>{01ad6a68-ac02-42bb-8bb2-50451a11a288}</uuid>
369  <visible>true</visible>
370  <midichan>0</midichan>
371  <midicc>-3</midicc>
372  <label>7029.313</label>
373  <alignment>right</alignment>
374  <font>Helvetica</font>
375  <fontsize>12</fontsize>
376  <precision>3</precision>
377  <color>
378   <r>0</r>
379   <g>0</g>
380   <b>0</b>
381  </color>
382  <bgcolor mode="background">
383   <r>255</r>
384   <g>255</g>
385   <b>255</b>
386  </bgcolor>
387  <bordermode>noborder</bordermode>
388  <borderradius>1</borderradius>
389  <borderwidth>1</borderwidth>
390 </bsbObject>
391 <bsbObject version="2" type="BSBLabel">
392  <objectName/>
393  <x>411</x>
394  <y>67</y>
395  <width>190</width>
396  <height>26</height>
397  <uuid>{a7205100-c056-490d-afc0-c38e7300043b}</uuid>
398  <visible>true</visible>
399  <midichan>0</midichan>
400  <midicc>-3</midicc>
401  <label>Biquad Coefficients</label>
402  <alignment>left</alignment>
403  <font>Helvetica</font>
404  <fontsize>12</fontsize>
405  <precision>3</precision>
406  <color>
407   <r>0</r>
408   <g>0</g>
409   <b>0</b>
410  </color>
411  <bgcolor mode="nobackground">
412   <r>255</r>
413   <g>255</g>
414   <b>255</b>
415  </bgcolor>
416  <bordermode>noborder</bordermode>
417  <borderradius>1</borderradius>
418  <borderwidth>1</borderwidth>
419 </bsbObject>
420 <bsbObject version="2" type="BSBDropdown">
421  <objectName>type</objectName>
422  <x>213</x>
423  <y>121</y>
424  <width>176</width>
425  <height>25</height>
426  <uuid>{0479174b-721c-44ca-9e46-0bc62bc7ebe2}</uuid>
427  <visible>true</visible>
428  <midichan>0</midichan>
429  <midicc>-3</midicc>
430  <bsbDropdownItemList>
431   <bsbDropdownItem>
432    <name>2nd order low-pass</name>
433    <value>0</value>
434    <stringvalue/>
435   </bsbDropdownItem>
436   <bsbDropdownItem>
437    <name>2nd order hi-pass</name>
438    <value>1</value>
439    <stringvalue/>
440   </bsbDropdownItem>
441   <bsbDropdownItem>
442    <name>2nd order low shelving</name>
443    <value>2</value>
444    <stringvalue/>
445   </bsbDropdownItem>
446   <bsbDropdownItem>
447    <name>2nd order high shelving</name>
448    <value>3</value>
449    <stringvalue/>
450   </bsbDropdownItem>
451   <bsbDropdownItem>
452    <name>Parametric eq</name>
453    <value>4</value>
454    <stringvalue/>
455   </bsbDropdownItem>
456   <bsbDropdownItem>
457    <name>First order All Pass</name>
458    <value>5</value>
459    <stringvalue/>
460   </bsbDropdownItem>
461   <bsbDropdownItem>
462    <name>Second Order All Pass</name>
463    <value>6</value>
464    <stringvalue/>
465   </bsbDropdownItem>
466   <bsbDropdownItem>
467    <name>Bypass</name>
468    <value>7</value>
469    <stringvalue/>
470   </bsbDropdownItem>
471  </bsbDropdownItemList>
472  <selectedIndex>0</selectedIndex>
473  <randomizable group="0">false</randomizable>
474 </bsbObject>
475 <bsbObject version="2" type="BSBKnob">
476  <objectName>gain</objectName>
477  <x>12</x>
478  <y>87</y>
479  <width>80</width>
480  <height>80</height>
481  <uuid>{3d171c0d-cb02-4d2c-8388-0961068b8e4e}</uuid>
482  <visible>true</visible>
483  <midichan>0</midichan>
484  <midicc>-3</midicc>
485  <minimum>-20.00000000</minimum>
486  <maximum>20.00000000</maximum>
487  <value>9.20000000</value>
488  <mode>lin</mode>
489  <mouseControl act="jump">continuous</mouseControl>
490  <resolution>0.01000000</resolution>
491  <randomizable group="0">false</randomizable>
492 </bsbObject>
493 <bsbObject version="2" type="BSBLabel">
494  <objectName/>
495  <x>14</x>
496  <y>59</y>
497  <width>80</width>
498  <height>25</height>
499  <uuid>{8c0420dc-4fcb-499f-9317-517e837c038a}</uuid>
500  <visible>true</visible>
501  <midichan>0</midichan>
502  <midicc>-3</midicc>
503  <label>Gain</label>
504  <alignment>left</alignment>
505  <font>Helvetica</font>
506  <fontsize>12</fontsize>
507  <precision>3</precision>
508  <color>
509   <r>0</r>
510   <g>0</g>
511   <b>0</b>
512  </color>
513  <bgcolor mode="nobackground">
514   <r>255</r>
515   <g>255</g>
516   <b>255</b>
517  </bgcolor>
518  <bordermode>noborder</bordermode>
519  <borderradius>1</borderradius>
520  <borderwidth>1</borderwidth>
521 </bsbObject>
522 <bsbObject version="2" type="BSBLabel">
523  <objectName>gain</objectName>
524  <x>18</x>
525  <y>171</y>
526  <width>69</width>
527  <height>24</height>
528  <uuid>{66349cae-8fcb-4efe-b691-46c3a667d1f8}</uuid>
529  <visible>true</visible>
530  <midichan>0</midichan>
531  <midicc>-3</midicc>
532  <label>9.200</label>
533  <alignment>left</alignment>
534  <font>Helvetica</font>
535  <fontsize>12</fontsize>
536  <precision>3</precision>
537  <color>
538   <r>0</r>
539   <g>0</g>
540   <b>0</b>
541  </color>
542  <bgcolor mode="background">
543   <r>255</r>
544   <g>255</g>
545   <b>255</b>
546  </bgcolor>
547  <bordermode>noborder</bordermode>
548  <borderradius>1</borderradius>
549  <borderwidth>1</borderwidth>
550 </bsbObject>
551 <bsbObject version="2" type="BSBLabel">
552  <objectName/>
553  <x>341</x>
554  <y>180</y>
555  <width>80</width>
556  <height>25</height>
557  <uuid>{a2bdce04-8f5e-40fb-a743-e09d6a8eec89}</uuid>
558  <visible>true</visible>
559  <midichan>0</midichan>
560  <midicc>-3</midicc>
561  <label>Frequency</label>
562  <alignment>left</alignment>
563  <font>Helvetica</font>
564  <fontsize>12</fontsize>
565  <precision>3</precision>
566  <color>
567   <r>0</r>
568   <g>0</g>
569   <b>0</b>
570  </color>
571  <bgcolor mode="nobackground">
572   <r>255</r>
573   <g>255</g>
574   <b>255</b>
575  </bgcolor>
576  <bordermode>noborder</bordermode>
577  <borderradius>1</borderradius>
578  <borderwidth>1</borderwidth>
579 </bsbObject>
580 <bsbObject version="2" type="BSBKnob">
581  <objectName>Q</objectName>
582  <x>102</x>
583  <y>88</y>
584  <width>80</width>
585  <height>80</height>
586  <uuid>{ddba3cab-bc78-416b-b421-8fb9d8b845b1}</uuid>
587  <visible>true</visible>
588  <midichan>0</midichan>
589  <midicc>-3</midicc>
590  <minimum>0.10000000</minimum>
591  <maximum>10.00000000</maximum>
592  <value>5.74300000</value>
593  <mode>lin</mode>
594  <mouseControl act="jump">continuous</mouseControl>
595  <resolution>0.01000000</resolution>
596  <randomizable group="0">false</randomizable>
597 </bsbObject>
598 <bsbObject version="2" type="BSBLabel">
599  <objectName/>
600  <x>104</x>
601  <y>60</y>
602  <width>80</width>
603  <height>25</height>
604  <uuid>{81820bef-c5cc-45b0-8ded-49e9160158e1}</uuid>
605  <visible>true</visible>
606  <midichan>0</midichan>
607  <midicc>-3</midicc>
608  <label>Q</label>
609  <alignment>left</alignment>
610  <font>Helvetica</font>
611  <fontsize>12</fontsize>
612  <precision>3</precision>
613  <color>
614   <r>0</r>
615   <g>0</g>
616   <b>0</b>
617  </color>
618  <bgcolor mode="nobackground">
619   <r>255</r>
620   <g>255</g>
621   <b>255</b>
622  </bgcolor>
623  <bordermode>noborder</bordermode>
624  <borderradius>1</borderradius>
625  <borderwidth>1</borderwidth>
626 </bsbObject>
627 <bsbObject version="2" type="BSBLabel">
628  <objectName>Q</objectName>
629  <x>108</x>
630  <y>172</y>
631  <width>69</width>
632  <height>24</height>
633  <uuid>{094450ee-6000-47b1-a738-91ee9a291e4c}</uuid>
634  <visible>true</visible>
635  <midichan>0</midichan>
636  <midicc>-3</midicc>
637  <label>5.743</label>
638  <alignment>left</alignment>
639  <font>Helvetica</font>
640  <fontsize>12</fontsize>
641  <precision>3</precision>
642  <color>
643   <r>0</r>
644   <g>0</g>
645   <b>0</b>
646  </color>
647  <bgcolor mode="background">
648   <r>255</r>
649   <g>255</g>
650   <b>255</b>
651  </bgcolor>
652  <bordermode>noborder</bordermode>
653  <borderradius>1</borderradius>
654  <borderwidth>1</borderwidth>
655 </bsbObject>
656 <bsbObject version="2" type="BSBLabel">
657  <objectName/>
658  <x>213</x>
659  <y>94</y>
660  <width>130</width>
661  <height>25</height>
662  <uuid>{f7d12575-56ae-49e5-b37f-8661a728d2bb}</uuid>
663  <visible>true</visible>
664  <midichan>0</midichan>
665  <midicc>-3</midicc>
666  <label>Filter type</label>
667  <alignment>left</alignment>
668  <font>Helvetica</font>
669  <fontsize>12</fontsize>
670  <precision>3</precision>
671  <color>
672   <r>0</r>
673   <g>0</g>
674   <b>0</b>
675  </color>
676  <bgcolor mode="nobackground">
677   <r>255</r>
678   <g>255</g>
679   <b>255</b>
680  </bgcolor>
681  <bordermode>noborder</bordermode>
682  <borderradius>1</borderradius>
683  <borderwidth>1</borderwidth>
684 </bsbObject>
685 <bsbObject version="2" type="BSBLabel">
686  <objectName/>
687  <x>13</x>
688  <y>5</y>
689  <width>709</width>
690  <height>49</height>
691  <uuid>{5cd431c8-1032-4c45-8ddf-beaaaa72f1dd}</uuid>
692  <visible>true</visible>
693  <midichan>0</midichan>
694  <midicc>-3</midicc>
695  <label>Biquad Filter Lab</label>
696  <alignment>left</alignment>
697  <font>Lucida Grande</font>
698  <fontsize>28</fontsize>
699  <precision>3</precision>
700  <color>
701   <r>0</r>
702   <g>0</g>
703   <b>0</b>
704  </color>
705  <bgcolor mode="background">
706   <r>179</r>
707   <g>179</g>
708   <b>179</b>
709  </bgcolor>
710  <bordermode>noborder</bordermode>
711  <borderradius>1</borderradius>
712  <borderwidth>1</borderwidth>
713 </bsbObject>
714 <bsbObject version="2" type="BSBDisplay">
715  <objectName>coef</objectName>
716  <x>410</x>
717  <y>91</y>
718  <width>310</width>
719  <height>80</height>
720  <uuid>{64a3dc1c-c9d4-484c-a939-5c207787c41f}</uuid>
721  <visible>true</visible>
722  <midichan>0</midichan>
723  <midicc>-3</midicc>
724  <label>b0=0.144      b1=0.289      b2=0.144
725
726a1=-0.676      a2=0.253</label>
727  <alignment>left</alignment>
728  <font>Arial</font>
729  <fontsize>14</fontsize>
730  <precision>3</precision>
731  <color>
732   <r>0</r>
733   <g>0</g>
734   <b>0</b>
735  </color>
736  <bgcolor mode="nobackground">
737   <r>255</r>
738   <g>255</g>
739   <b>255</b>
740  </bgcolor>
741  <bordermode>border</bordermode>
742  <borderradius>1</borderradius>
743  <borderwidth>1</borderwidth>
744 </bsbObject>
745</bsbPanel>
746<bsbPresets>
747</bsbPresets>
748<MacOptions>
749Version: 3
750Render: Real
751Ask: Yes
752Functions: ioObject
753Listing: Window
754WindowBounds: 808 138 755 510
755CurrentView: io
756IOViewEdit: On
757Options: -b128 -A -s -m167 -R
758</MacOptions>
759<MacGUI>
760ioView background {52428, 52428, 52428}
761ioSlider {9, 205} {709, 35} 1.000000 22050.000000 7029.313117 freq
762ioGraph {8, 263} {713, 213} table 0.000000 1.000000
763ioText {393, 234} {41, 24} label 0.000000 0.00100 "" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder Hz
764ioText {327, 234} {69, 24} label 7029.313117 0.00100 "freq" right "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder 7029.313
765ioText {411, 67} {130, 25} label 0.000000 0.00100 "" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder Biquad Coefficients
766ioMenu {213, 121} {176, 25} 0 303 "2nd order low-pass,2nd order hi-pass,2nd order low shelving,2nd order high shelving,Parametric eq,First order All Pass,Second Order All Pass,Bypass" type
767ioKnob {12, 87} {80, 80} 20.000000 -20.000000 0.010000 9.200000 gain
768ioText {14, 59} {80, 25} label 0.000000 0.00100 "" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder Gain
769ioText {18, 171} {69, 24} label 9.200000 0.00100 "gain" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder 9.200
770ioText {341, 180} {80, 25} label 0.000000 0.00100 "" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder Frequency
771ioKnob {102, 88} {80, 80} 10.000000 0.100000 0.010000 5.743000 Q
772ioText {104, 60} {80, 25} label 0.000000 0.00100 "" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder Q
773ioText {108, 172} {69, 24} label 5.743000 0.00100 "Q" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder 5.743
774ioText {213, 94} {130, 25} label 0.000000 0.00100 "" left "Helvetica" 12 {0, 0, 0} {65280, 65280, 65280} nobackground noborder Filter type
775ioText {13, 5} {709, 49} label 0.000000 0.00100 "" left "Lucida Grande" 28 {0, 0, 0} {45824, 45824, 45824} nobackground noborder Biquad Filter Lab
776ioText {410, 91} {310, 80} display 0.000000 0.00100 "coef" left "Arial" 14 {0, 0, 0} {65280, 65280, 65280} nobackground noborder b0=0.144      b1=0.289      b2=0.144¬¬a1=-0.676      a2=0.253
777</MacGUI>
778<EventPanel name="" tempo="60.00000000" loop="8.00000000" x="557" y="270" width="608" height="322" visible="true" loopStart="0" loopEnd="0">    </EventPanel>
779