-
Notifications
You must be signed in to change notification settings - Fork 13
/
biquadm.mmb~.pd
305 lines (305 loc) · 7.54 KB
/
biquadm.mmb~.pd
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
#N canvas 361 22 1079 650 10;
#X obj 84 332 czero~;
#X obj 84 392 czero~;
#X obj 84 527 cpole~;
#X obj 84 587 cpole~;
#X obj 84 35 inlet~ audio;
#N canvas 0 22 450 300 extract.gain 0;
#X obj 92 74 inlet;
#X obj 237 190 /;
#X obj 97 190 /;
#X msg 92 98 \$4 \$5 \$3;
#X obj 110 135 unpack f f f;
#X obj 97 234 outlet;
#X obj 237 234 outlet;
#X connect 0 0 3 0;
#X connect 1 0 6 0;
#X connect 2 0 5 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 1 0;
#X connect 4 2 1 1;
#X connect 4 2 2 1;
#X restore 236 119 pd extract.gain;
#N canvas 0 22 668 429 get.zero.locations 0;
#N canvas 519 157 715 527 zero2 0;
#X text 310 225 if sqrt(b^2-4ac) is less than 0 \, make it the imaginary
part of the numerator. Else \, add it to the real part (imaginary stays
zero).;
#X text 226 313 -b - ...;
#X obj 243 86 inlet;
#X obj 78 86 inlet;
#X msg 171 254 \$1 0;
#X msg 214 255 0 \$1;
#X obj 78 366 complex_div.mmb 2;
#X obj 78 420 outlet;
#X obj 187 207 spigot;
#X obj 257 207 spigot;
#X obj 220 176 >= 0;
#X obj 290 176 < 0;
#X obj 217 138 expr sqrt(abs($f1));
#X obj 243 111 t f f;
#X obj 78 313 complex_sub.mmb;
#X connect 2 0 13 0;
#X connect 3 0 14 0;
#X connect 4 0 14 1;
#X connect 5 0 14 1;
#X connect 6 0 7 0;
#X connect 8 0 4 0;
#X connect 9 0 5 0;
#X connect 10 0 8 1;
#X connect 11 0 9 1;
#X connect 12 0 8 0;
#X connect 12 0 9 0;
#X connect 13 0 12 0;
#X connect 13 1 11 0;
#X connect 13 1 10 0;
#X connect 14 0 6 0;
#X restore 197 243 pd zero2;
#X text 416 207 ---------------------;
#X text 461 218 2a;
#X text 370 193 roots = -b +/- sqrt(b^2 - 4ac);
#X text 305 244 Note: becase b0 is extracted from coefficents \, a
in the quadratic will always be 1;
#X obj 125 76 inlet;
#X obj 324 76 inlet;
#X obj 201 160 expr $f1*$f1 - 4*$f2;
#X obj 125 105 t f f;
#X obj 125 159 * -1;
#N canvas 680 22 715 527 zero1 0;
#X text 310 235 if sqrt(b^2-4ac) is less than 0 \, make it the imaginary
part of the numerator. Else \, add it to the real part (imaginary stays
zero).;
#X obj 78 86 inlet;
#X obj 78 366 complex_div.mmb 2;
#X obj 78 420 outlet;
#X text 226 323 -b + ...;
#X obj 243 86 inlet;
#X obj 187 207 spigot;
#X obj 257 207 spigot;
#X obj 220 176 >= 0;
#X obj 290 176 < 0;
#X obj 217 138 expr sqrt(abs($f1));
#X obj 243 111 t f f;
#X msg 171 254 \$1 0;
#X msg 214 255 0 \$1;
#X obj 78 323 complex_add.mmb;
#X connect 1 0 14 0;
#X connect 2 0 3 0;
#X connect 5 0 11 0;
#X connect 6 0 12 0;
#X connect 7 0 13 0;
#X connect 8 0 6 1;
#X connect 9 0 7 1;
#X connect 10 0 6 0;
#X connect 10 0 7 0;
#X connect 11 0 10 0;
#X connect 11 1 9 0;
#X connect 11 1 8 0;
#X connect 12 0 14 1;
#X connect 13 0 14 1;
#X connect 14 0 2 0;
#X restore 125 243 pd zero1;
#X obj 197 336 outlet;
#X obj 125 336 outlet;
#X connect 0 0 11 0;
#X connect 5 0 8 0;
#X connect 6 0 7 1;
#X connect 7 0 0 1;
#X connect 7 0 10 1;
#X connect 8 0 9 0;
#X connect 8 1 7 0;
#X connect 9 0 0 0;
#X connect 9 0 10 0;
#X connect 10 0 12 0;
#X restore 236 141 pd get.zero.locations;
#X obj 84 614 outlet~;
#X obj 84 252 *~;
#X text 760 166 y[n] = b0*x[n] + b1*x[n-1] + b2*x[n-2];
#X text 803 183 - a1*y[n-1] - a2*y[n-2];
#X text 703 138 Difference Equation:;
#X text 712 244 z-Transform:;
#X text 761 271 H(z) = b0 + b1*z^-1 + b2*z^-2;
#X text 803 280 ----------------------;
#X text 807 291 1 + a1*z^-1 + a2*z^-2;
#X text 827 560 .mmb;
#X obj 210 221 pack 0 100;
#X obj 280 221 pack 0 100;
#X obj 219 174 unpack f f;
#X obj 356 221 pack 0 100;
#X obj 426 221 pack 0 100;
#X obj 365 174 unpack f f;
#N canvas 0 22 668 429 get.pole.locations 0;
#X text 416 207 ---------------------;
#X text 461 218 2a;
#X text 370 193 roots = -b +/- sqrt(b^2 - 4ac);
#X obj 125 76 inlet;
#X obj 324 76 inlet;
#X obj 125 105 t f f;
#X obj 197 336 outlet;
#X obj 125 336 outlet;
#X obj 201 160 expr $f1*$f1 + 4*$f2;
#X text 305 244 Note: becase a0 is assumed to be 1 \, a in the quadratic
will always be 1;
#N canvas 529 22 715 527 pole1 0;
#X text 310 235 if sqrt(b^2-4ac) is less than 0 \, make it the imaginary
part of the numerator. Else \, add it to the real part (imaginary stays
zero).;
#X obj 78 86 inlet;
#X obj 78 366 complex_div.mmb 2;
#X obj 78 420 outlet;
#X text 226 323 -b + ...;
#X obj 243 86 inlet;
#X msg 171 254 \$1 0;
#X msg 214 255 0 \$1;
#X obj 187 207 spigot;
#X obj 257 207 spigot;
#X obj 220 176 >= 0;
#X obj 290 176 < 0;
#X obj 217 138 expr sqrt(abs($f1));
#X obj 243 111 t f f;
#X obj 78 323 complex_add.mmb;
#X connect 1 0 14 0;
#X connect 2 0 3 0;
#X connect 5 0 13 0;
#X connect 6 0 14 1;
#X connect 7 0 14 1;
#X connect 8 0 6 0;
#X connect 9 0 7 0;
#X connect 10 0 8 1;
#X connect 11 0 9 1;
#X connect 12 0 8 0;
#X connect 12 0 9 0;
#X connect 13 0 12 0;
#X connect 13 1 11 0;
#X connect 13 1 10 0;
#X connect 14 0 2 0;
#X restore 125 243 pd pole1;
#N canvas 680 22 715 527 pole2 0;
#X text 310 235 if sqrt(b^2-4ac) is less than 0 \, make it the imaginary
part of the numerator. Else \, add it to the real part (imaginary stays
zero).;
#X text 226 323 -b - ...;
#X obj 78 86 inlet;
#X obj 78 366 complex_div.mmb 2;
#X obj 78 420 outlet;
#X obj 243 86 inlet;
#X msg 171 254 \$1 0;
#X msg 214 255 0 \$1;
#X obj 187 207 spigot;
#X obj 257 207 spigot;
#X obj 220 176 >= 0;
#X obj 290 176 < 0;
#X obj 217 138 expr sqrt(abs($f1));
#X obj 243 111 t f f;
#X obj 78 323 complex_sub.mmb;
#X connect 2 0 14 0;
#X connect 3 0 4 0;
#X connect 5 0 13 0;
#X connect 6 0 14 1;
#X connect 7 0 14 1;
#X connect 8 0 6 0;
#X connect 9 0 7 0;
#X connect 10 0 8 1;
#X connect 11 0 9 1;
#X connect 12 0 8 0;
#X connect 12 0 9 0;
#X connect 13 0 12 0;
#X connect 13 1 11 0;
#X connect 13 1 10 0;
#X connect 14 0 3 0;
#X restore 197 243 pd pole2;
#X connect 3 0 5 0;
#X connect 4 0 8 1;
#X connect 5 0 11 0;
#X connect 5 0 10 0;
#X connect 5 1 8 0;
#X connect 8 0 10 1;
#X connect 8 0 11 1;
#X connect 10 0 7 0;
#X connect 11 0 6 0;
#X restore 526 252 pd get.pole.locations;
#X msg 545 205 \$1 \$2;
#X obj 545 225 unpack f f;
#X obj 266 388 pack 0 100;
#X obj 336 388 pack 0 100;
#X obj 275 331 unpack f f;
#X obj 409 388 pack 0 100;
#X obj 479 388 pack 0 100;
#X obj 418 331 unpack f f;
#X obj 264 35 inlet;
#X text 307 35 a1 a2 b0 b1 b2;
#X obj 264 60 route interp;
#X obj 189 84 s \$0-interp;
#X obj 289 174 r \$0-interp;
#X obj 345 331 r \$0-interp;
#X msg 99 150 \$3;
#X obj 99 207 pack 0 100;
#X obj 99 232 line~;
#X obj 210 246 vline~;
#X obj 280 246 vline~;
#X obj 356 246 vline~;
#X obj 426 246 vline~;
#X obj 266 413 vline~;
#X obj 336 413 vline~;
#X obj 409 413 vline~;
#X obj 479 413 vline~;
#X connect 0 0 1 0;
#X connect 0 1 1 1;
#X connect 1 0 2 0;
#X connect 1 1 2 1;
#X connect 2 0 3 0;
#X connect 2 1 3 1;
#X connect 3 0 7 0;
#X connect 4 0 8 0;
#X connect 5 0 6 0;
#X connect 5 1 6 1;
#X connect 6 0 19 0;
#X connect 6 1 22 0;
#X connect 8 0 0 0;
#X connect 17 0 41 0;
#X connect 18 0 42 0;
#X connect 19 0 17 0;
#X connect 19 1 18 0;
#X connect 20 0 43 0;
#X connect 21 0 44 0;
#X connect 22 0 20 0;
#X connect 22 1 21 0;
#X connect 23 0 28 0;
#X connect 23 1 31 0;
#X connect 24 0 25 0;
#X connect 25 0 23 0;
#X connect 25 1 23 1;
#X connect 26 0 45 0;
#X connect 27 0 46 0;
#X connect 28 0 26 0;
#X connect 28 1 27 0;
#X connect 29 0 47 0;
#X connect 30 0 48 0;
#X connect 31 0 29 0;
#X connect 31 1 30 0;
#X connect 32 0 34 0;
#X connect 34 0 35 0;
#X connect 34 1 5 0;
#X connect 34 1 24 0;
#X connect 34 1 38 0;
#X connect 36 0 17 1;
#X connect 36 0 18 1;
#X connect 36 0 20 1;
#X connect 36 0 21 1;
#X connect 36 0 39 1;
#X connect 37 0 26 1;
#X connect 37 0 27 1;
#X connect 37 0 29 1;
#X connect 37 0 30 1;
#X connect 38 0 39 0;
#X connect 39 0 40 0;
#X connect 40 0 8 1;
#X connect 41 0 0 2;
#X connect 42 0 0 3;
#X connect 43 0 1 2;
#X connect 44 0 1 3;
#X connect 45 0 2 2;
#X connect 46 0 2 3;
#X connect 47 0 3 2;
#X connect 48 0 3 3;