-
Notifications
You must be signed in to change notification settings - Fork 4
/
vosim.pd
661 lines (661 loc) · 18.7 KB
/
vosim.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
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
#N struct 1719.button float posx float posy float color;
#N struct 1719.cursor float cx float cy float cy2;
#N struct 1647-automation float yshift array variy 1647-automation-element;
#N struct 1647-automation-element float y;
#N struct 1646.autolabel float x float y symbol lbl float color float track;
#N struct 1724.rectangle float id float x float y float w float h float txtclr float boxclr float bgclr symbol label;
#N canvas 839 253 441 525 10;
#N canvas 624 75 434 290 NETPD 1;
#N canvas 315 75 473 287 abslist 0;
#X text 7 13 Put a message box containing the name of the abstraction (without the .pd suffix) for each dependency.;
#X text 6 55 For instance:;
#X text 23 84 [mysynth-voice(;
#X text 13 130 NOTE: abstractions of instruments also use netpd meta tags and may also specify their own dependencies. unpatch resolves dependency trees recursively.;
#X msg 151 73 unstep;
#X msg 151 95 i2mx;
#X restore 12 178 pd abslist;
#X text 111 179 <- add dependencies of your netpd instrument;
#X text 18 32 A 'version' meta tag is mandatory. unpatch uses this information to make sure that all clients load the same version of the instrument.;
#X text 19 78 Whenever you make changes to your instrument \, make sure to bump the version.;
#X text 18 118 There is no predefined meaning of the three version fields. Use them at your own will.;
#X text 16 211 The [pd abslist] tag container is optional and is used to specify dependencies (abstractions in netpd/abs) of your instrument.;
#X text 107 7 <- update the version of this netpd instrument;
#X msg 12 8 version 0 0 4;
#X restore 10 54 pd NETPD 2 0;
#X text 158 200 <- this manages patch state synchorization;
#X obj 10 199 netpd_head \$1 vosim;
#N canvas 1046 23 212 270 \$1-vosim 1;
#X obj 12 243 hsl 75 15 0 0 0 0 \$0-unstep-gui \$0.bli unstep 3 8 0 10 #dcdcdc #dcdcdc #000000 0 1;
#X text 6 6 VOSIM;
#X obj 11 69 hsl 64 15 0 1 0 0 \$1-glide \$1-glide glide -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 11 37 hsl 64 15 0 1 0 0 \$1-vol \$1-vol vol. -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 9 103 vsl 15 128 0 1 0 0 \$1-T_pulsewidth \$1-T_pulsewidth T 0 -9 0 10 #fcfcfc #000000 #000000 0 0;
#X obj 94 103 vsl 15 128 0 1 0 0 \$1-N_pulses \$1-N_pulses N 0 -9 0 10 #fcfcfc #000000 #000000 0 0;
#X obj 60 103 vsl 15 128 0 127 0 0 \$1-M_delay \$1-M_delay M 0 -9 0 10 #fcfcfc #000000 #000000 0 0;
#X obj 77 103 vsl 15 128 0 1 0 0 \$1-b_attenuation \$1-b_attenuation b 0 -9 0 10 #fcfcfc #000000 #000000 0 0;
#X obj 26 103 vsl 15 64 0 1 0 1 \$1-D_deviation \$1-D_deviation D 0 -9 0 10 #fcfcfc #000000 #000000 300 0;
#X obj 111 103 vsl 15 128 0 1 0 0 \$1-NM_modrate \$1-NM_modrate NM 0 -9 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 43 101 vradio 15 1 0 2 \$1-mod \$1-mod empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
#X text 45 114 s;
#X text 45 101 n;
#X restore 10 82 pd \$1-vosim;
#X text 158 56 <- put your instrument's meta tags here;
#N canvas 94 144 1061 752 vosimdsp 0;
#N canvas 0 23 267 183 smooth 0;
#X obj 106 79 vline~;
#X obj 105 106 outlet~;
#X obj 106 26 inlet;
#X obj 106 58 pack 0 20;
#X obj 179 26 r \$0-glide;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 1;
#X restore 195 446 pd smooth;
#X floatatom 197 388 8 0 0 1 M - - 0;
#X floatatom 265 320 8 0 0 1 T - - 0;
#X floatatom 483 257 5 0 999 1 b - - 0;
#X floatatom 353 231 5 1 999 1 N - - 0;
#X obj 179 221 mtof;
#X floatatom 179 201 5 0 0 0 - - - 0;
#X obj 265 202 mtof;
#X floatatom 265 181 5 0 0 0 - - - 0;
#X obj 179 264 expr 1/$f1;
#X obj 192 610 *~ 0;
#X obj 213 589 dbtorms;
#N canvas 0 23 267 183 smooth 0;
#X obj 106 79 vline~;
#X obj 105 106 outlet~;
#X obj 106 26 inlet;
#X obj 106 58 pack 0 20;
#X obj 190 34 r \$0-glide;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 1;
#X restore 517 301 pd smooth;
#X floatatom 179 243 5 0 0 0 - - - 0;
#X floatatom 267 263 5 0 0 0 - - - 0;
#X msg 179 176 154;
#N canvas 353 23 814 731 vosim 0;
#X obj 138 493 cos~;
#X obj 139 524 *~;
#X obj 137 392 wrap~;
#X obj 137 450 -~ 0.25;
#X obj 140 549 *~;
#X obj 180 509 samphold~;
#X obj 136 415 *~ 0.5;
#X obj 237 425 wrap~;
#X obj 137 342 *~;
#X obj 422 433 *~;
#X obj 423 406 clip~ 0 1;
#X obj 320 65 inlet;
#X obj 139 573 outlet~;
#X obj 484 353 *~;
#X obj 320 112 max 1;
#X obj 137 372 clip~ 0 1;
#X text 503 43 b;
#X text 329 46 N;
#X obj 320 87 int;
#X obj 136 261 phasor~;
#X text 97 128 M + NT;
#X text 470 384 damping;
#X obj 423 459 *~;
#X text 378 485 quadric decay (this is a somewhat arbitrary choice);
#X obj 152 125 +~;
#X obj 237 65 inlet~;
#X obj 153 65 inlet~;
#X obj 153 317 /~;
#X obj 118 229 /~;
#X text 100 341 [f1];
#X text 81 609 The stretched phasor [f1] needs to run at f1 = 1/T all the time. It is derived from a phasor at f0 = 1/(NT+M) so the stretch/multiplication factor x needs to be calculated according to the following:;
#X text 84 675 f1 = x * f0 ==> 1/T = x * 1/(M + NT) ==> x = (M + NT)/T;
#X obj 501 62 inlet~;
#X text 36 230 sec => Hz;
#X text 241 43 T (sec);
#X text 153 40 M (sec);
#X text 31 263 f0 = 1/(M+NT);
#X text 23 316 x = (M + NT)/T;
#X obj 169 101 *~ 1;
#X text 316 154 changes of N should be [samphold~]ed but this would generate a DSP loop in Pd.;
#X obj 425 355 sig~ 1;
#X obj 424 381 -~;
#X text 182 531 This gives artifacts for certain combinations of M and T \, if b != 0 \, duh.;
#N canvas 0 23 432 350 sigview 0;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-scope 882 float 0;
#X coords 0 1 881 -1 200 140 1;
#X restore 98 60 graph;
#X obj 65 285 tabwrite~ \$0-scope;
#X msg 127 246 bang;
#X obj 171 248 metro 100;
#X obj 171 227 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 66 239 inlet~;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X restore 259 495 pd sigview;
#X obj 238 448 *~ 2;
#X obj 238 472 clip~ 0 1;
#X obj 111 200 sig~ 1;
#X floatatom 396 135 5 0 0 0 - - - 0;
#X connect 0 0 1 0;
#X connect 0 0 1 1;
#X connect 1 0 4 0;
#X connect 2 0 6 0;
#X connect 3 0 0 0;
#X connect 4 0 12 0;
#X connect 5 0 4 1;
#X connect 6 0 3 0;
#X connect 6 0 7 0;
#X connect 7 0 44 0;
#X connect 8 0 15 0;
#X connect 9 0 22 0;
#X connect 9 0 22 1;
#X connect 10 0 9 0;
#X connect 10 0 9 1;
#X connect 10 0 5 0;
#X connect 11 0 18 0;
#X connect 13 0 41 1;
#X connect 14 0 15 2;
#X connect 14 0 38 1;
#X connect 14 0 47 0;
#X connect 15 0 2 0;
#X connect 18 0 14 0;
#X connect 19 0 8 0;
#X connect 19 0 13 0;
#X connect 24 0 27 0;
#X connect 24 0 28 1;
#X connect 25 0 27 1;
#X connect 25 0 38 0;
#X connect 26 0 24 0;
#X connect 27 0 8 1;
#X connect 28 0 19 0;
#X connect 32 0 13 1;
#X connect 38 0 24 1;
#X connect 40 0 41 0;
#X connect 41 0 10 0;
#X connect 44 0 45 0;
#X connect 45 0 5 1;
#X connect 45 0 43 0;
#X connect 46 0 28 0;
#X restore 179 545 pd vosim;
#X obj 758 13 r \$0-unstep-gui;
#X msg 758 35 vis 1;
#X obj 758 81 s \$0-vosim;
#X obj 357 29 r \$0-vosim;
#X obj 357 51 route m;
#X obj 424 29 r \$0-vosim;
#X obj 424 51 route n;
#X obj 491 29 r \$0-vosim;
#X obj 491 51 route b;
#X obj 691 186 route note;
#X obj 177 763 *~;
#X obj 235 732 dbtorms~;
#N canvas 298 255 620 253 trg_amp_flr_att_hld_rel 0;
#X obj 26 203 vline~;
#X msg 26 178 \$1 \$2 \, \$3 \$4 \$5;
#X obj 26 150 pack f f f f f;
#X obj 25 230 outlet~;
#X obj 26 13 inlet;
#X obj 26 70 f;
#X obj 103 12 inlet;
#X text 143 13 amp;
#X text 64 13 trg;
#X obj 173 13 inlet;
#X text 213 14 flr;
#X obj 245 13 inlet;
#X text 285 14 att(ms);
#X obj 338 14 inlet;
#X text 378 15 hld(ms);
#X obj 433 13 inlet;
#X text 473 13 rel(ms);
#X obj 223 67 +;
#X obj 243 44 t b f;
#X obj 250 143 +;
#X obj 266 118 t b f;
#X obj 234 189 del;
#X obj 250 166 + 2;
#X obj 234 211 0;
#X obj 199 159 b;
#X obj 199 209 1;
#X obj 201 233 outlet;
#X text 255 232 switch;
#X text 284 165 <- add at least one block because of [vline~];
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 4 0 5 0;
#X connect 4 0 24 0;
#X connect 5 0 2 0;
#X connect 6 0 5 1;
#X connect 9 0 2 2;
#X connect 11 0 2 1;
#X connect 11 0 17 0;
#X connect 13 0 18 0;
#X connect 15 0 2 3;
#X connect 15 0 20 0;
#X connect 17 0 2 4;
#X connect 17 0 19 0;
#X connect 18 0 17 0;
#X connect 18 1 17 1;
#X connect 19 0 22 0;
#X connect 20 0 19 0;
#X connect 20 1 19 1;
#X connect 21 0 23 0;
#X connect 22 0 21 1;
#X connect 23 0 26 0;
#X connect 24 0 21 0;
#X connect 24 0 25 0;
#X connect 25 0 26 0;
#X restore 235 700 pd trg_amp_flr_att_hld_rel;
#X obj 176 826 switch~;
#X obj 511 642 loadbang;
#X obj 511 664 t b b;
#X obj 538 687 delay 1000;
#X msg 538 709 0;
#X msg 511 694 1;
#N canvas 633 654 283 124 a-level 0;
#X obj 9 38 pow 2;
#X obj 9 59 rmstodb;
#X obj 9 81 outlet;
#X obj 9 17 netpd_f \$1 a-level 0.6;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 0 0;
#X restore 260 645 pd a-level;
#N canvas 22 68 342 234 a-attack 0;
#X obj 35 206 outlet;
#X obj 35 158 +;
#X obj 46 137 t b f;
#X obj 35 182 - 40;
#X obj 35 101 rh_scalelog 20 200;
#X obj 173 101 rh_scalelog 20 200;
#X obj 35 22 netpd_f \$1 a-attack 0.01;
#X obj 173 73 route a_att;
#X obj 173 51 r \$0-voc;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 2 1 1 1;
#X connect 3 0 0 0;
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X connect 6 0 4 0;
#X connect 7 0 5 0;
#X connect 8 0 7 0;
#X restore 341 632 pd a-attack;
#N canvas 22 68 342 234 a-hold 0;
#X obj 35 206 outlet;
#X obj 35 158 +;
#X obj 46 137 t b f;
#X obj 35 180 - 200;
#X obj 35 101 rh_scalelog 100 1000;
#X obj 187 101 rh_scalelog 100 1000;
#X obj 35 22 netpd_f \$1 a-hold 0.01;
#X obj 187 73 route a_hold;
#X obj 187 51 r \$0-voc;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 2 1 1 1;
#X connect 3 0 0 0;
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X connect 6 0 4 0;
#X connect 7 0 5 0;
#X connect 8 0 7 0;
#X restore 376 654 pd a-hold;
#N canvas 22 68 342 234 a-release 0;
#X obj 35 206 outlet;
#X obj 35 158 +;
#X obj 46 137 t b f;
#X obj 35 180 - 200;
#X obj 35 101 rh_scalelog 100 3000;
#X obj 191 100 rh_scalelog 100 3000;
#X obj 35 22 netpd_f \$1 a-release 0.51;
#X obj 191 73 route a_rel;
#X obj 191 51 r \$0-voc;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 2 1 1 1;
#X connect 3 0 0 0;
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X connect 6 0 4 0;
#X connect 7 0 5 0;
#X connect 8 0 7 0;
#X restore 412 676 pd a-release;
#X floatatom 260 666 5 0 0 0 - - - 0;
#X text 258 622 Amp Envelope;
#X obj 176 798 i2mx \$1 vosim;
#X obj 691 164 r \$0-vosim;
#X obj 691 229 mtof;
#X floatatom 691 209 5 0 0 0 - - - 0;
#X floatatom 691 254 5 0 0 0 - - - 0;
#X obj 429 91 * 10;
#X obj 3 255 osc~;
#X obj 192 487 +~;
#X obj 139 51 s \$0-glide;
#X obj 139 5 netpd_f \$1 glide 0.1;
#X obj 213 550 netpd_f \$1 vol 0.75;
#X obj 213 569 * 100;
#X obj 358 95 expr 1/$f1;
#X obj 352 255 +;
#X obj 417 198 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X text 40 458 mod sin/noise;
#X obj 503 151 netpd_f \$1 b_attenuation 0.75;
#X obj 61 235 netpd_f \$1 D_deviation 0.75;
#X obj -35 104 netpd_f \$1 NM_modrate 0.75;
#X obj -49 235 noise~;
#X obj -49 257 lop~;
#X floatatom -52 193 5 0 0 0 - - - 0;
#X obj 483 282 +;
#X obj -52 213 * 100;
#X obj 38 5 netpd_f \$1 mod;
#X obj 38 25 select 0 1;
#X obj 53 69 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 77 67 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj -34 308 *~;
#X msg 7 173 0;
#X msg 36 173 1;
#X obj 6 307 *~;
#X msg 43 203 0;
#X msg 72 203 1;
#X obj 58 362 *~;
#X obj 442 114 netpd_f \$1 N_pulses 1;
#X floatatom -2 205 5 0 0 0 - - - 0;
#N canvas 0 23 484 676 tests 0;
#X msg 47 95 960 0 1410 0 655 511 0 75 8 1 550 110;
#X obj 47 115 unpack f f f f f f f f f f f f;
#X obj 47 624 s \$1-T_pulsewidth;
#X obj 79 542 s \$1-M_delay;
#X obj 111 460 s \$1-D_deviation;
#X obj 47 604 ftom;
#X obj 47 584 expr 1/$f1;
#X obj 79 522 ftom;
#X obj 79 502 expr 1/$f1;
#X obj 47 565 * 1e-06;
#X obj 79 483 * 1e-06;
#X obj 111 440 ftom;
#X obj 111 420 expr 1/$f1;
#X obj 111 401 * 1e-06;
#X text 50 12 T DT M DM D A DA b N S NM NP;
#X obj 175 318 s \$1-N_pulses;
#X obj 159 381 s \$1-b_attenuation;
#X obj 159 361 * 127;
#X obj 159 340 * 0.01;
#X obj 207 277 ftom;
#X obj 207 257 expr 1/$f1;
#X obj 207 233 * 1e-06;
#X obj 207 297 s \$1-NM_modrate;
#X obj 207 170 *;
#X obj 207 192 +;
#X obj 207 213 *;
#X msg 47 77 200 0 200 0 100 50 250 75 1 0 120 600;
#X msg 47 40 960 0 140 0 60 450 61 75 1 1 152 302;
#X msg 53 59 960 0 140 0 116 511 0 75 1 1 152 1522;
#X obj 255 155 s \$1-mod;
#X connect 0 0 1 0;
#X connect 1 0 9 0;
#X connect 1 0 23 0;
#X connect 1 2 10 0;
#X connect 1 2 24 1;
#X connect 1 4 13 0;
#X connect 1 7 18 0;
#X connect 1 8 15 0;
#X connect 1 8 23 1;
#X connect 1 9 29 0;
#X connect 1 10 25 1;
#X connect 5 0 2 0;
#X connect 6 0 5 0;
#X connect 7 0 3 0;
#X connect 8 0 7 0;
#X connect 9 0 6 0;
#X connect 10 0 8 0;
#X connect 11 0 4 0;
#X connect 12 0 11 0;
#X connect 13 0 12 0;
#X connect 17 0 16 0;
#X connect 18 0 17 0;
#X connect 19 0 22 0;
#X connect 20 0 19 0;
#X connect 21 0 20 0;
#X connect 23 0 24 0;
#X connect 24 0 25 0;
#X connect 25 0 21 0;
#X connect 26 0 1 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X restore 918 14 pd tests;
#X obj 359 72 * 100;
#X floatatom 352 313 5 0 0 0 - - - 0;
#X obj 116 155 netpd_f \$1 M_delay 75;
#X floatatom 65 262 5 0 0 0 - - - 0;
#X obj 139 30 * 200;
#X obj 503 172 * 10;
#X floatatom 691 305 5 0 0 0 - - - 0;
#X floatatom 670 389 5 0 0 0 - - - 0;
#X obj 758 59 unstep \$1 vosim t m n b;
#X obj 289 29 r \$0-vosim;
#X obj 289 51 route t;
#X obj 309 241 +;
#X obj 275 113 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 322 178 mtof;
#X obj 670 410 int;
#X obj 277 378 min;
#X floatatom 417 271 5 0 0 0 - - - 0;
#X obj 417 319 min;
#X obj 352 274 int;
#X obj 474 406 *;
#X obj 451 462 -;
#X obj -9 158 mtof;
#X obj -9 129 * 127;
#X obj 12 230 / 100;
#X obj 640 474 max 1;
#X msg 640 449 1;
#X obj 678 441 t b f;
#X obj 452 435 t b f;
#X obj 474 382 t b f;
#X obj 291 348 t b f;
#X obj 417 295 t b f;
#X obj 322 203 t b f;
#X obj 132 367 abs~;
#X obj 490 71 * 10;
#X obj 287 158 * 127;
#X obj 251 138 netpd_f \$1 T_pulsewidth 0.5;
#X obj 670 368 / 1;
#X obj 352 293 max 1;
#X obj 65 290 * 0.01;
#X obj 445 140 * 30;
#X obj 305 494 +;
#X obj 261 469 +;
#X obj 715 334 t b f;
#X obj 439 487 +;
#X obj 291 72 * 64;
#X obj 691 280 expr 2/$f1;
#X obj 267 284 expr 0.5/$f1;
#X obj 177 418 +;
#X obj 215 304 t b f;
#N canvas 0 23 267 183 smooth 0;
#X obj 106 79 vline~;
#X obj 105 106 outlet~;
#X obj 106 26 inlet;
#X obj 106 58 pack 0 20;
#X obj 190 34 r \$0-glide;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 1;
#X restore 207 508 pd smooth;
#X obj 420 461 t b;
#X obj 261 445 t b;
#X obj 305 468 t b;
#X obj 519 219 t b f;
#X floatatom 417 351 5 0 0 0 - - - 0;
#X floatatom 493 464 5 0 0 0 - - - 0;
#X connect 0 0 49 1;
#X connect 1 0 127 0;
#X connect 1 0 131 0;
#X connect 1 0 132 0;
#X connect 2 0 95 0;
#X connect 3 0 64 0;
#X connect 4 0 55 0;
#X connect 5 0 13 0;
#X connect 6 0 5 0;
#X connect 7 0 91 0;
#X connect 8 0 7 0;
#X connect 9 0 128 0;
#X connect 10 0 42 0;
#X connect 10 0 42 1;
#X connect 11 0 10 1;
#X connect 12 0 16 3;
#X connect 13 0 9 0;
#X connect 14 0 126 0;
#X connect 15 0 6 0;
#X connect 16 0 10 0;
#X connect 17 0 18 0;
#X connect 18 0 88 0;
#X connect 20 0 21 0;
#X connect 21 0 80 0;
#X connect 22 0 23 0;
#X connect 23 0 47 0;
#X connect 24 0 25 0;
#X connect 25 0 113 0;
#X connect 26 0 45 0;
#X connect 27 0 42 0;
#X connect 27 0 42 1;
#X connect 29 0 28 0;
#X connect 31 0 32 0;
#X connect 32 0 35 0;
#X connect 32 1 33 0;
#X connect 33 0 34 0;
#X connect 34 0 42 2;
#X connect 35 0 42 2;
#X connect 36 0 29 1;
#X connect 36 0 40 0;
#X connect 37 0 29 3;
#X connect 38 0 29 4;
#X connect 39 0 29 5;
#X connect 42 0 30 0;
#X connect 43 0 26 0;
#X connect 44 0 46 0;
#X connect 45 0 44 0;
#X connect 46 0 125 0;
#X connect 47 0 55 1;
#X connect 47 0 56 0;
#X connect 48 0 73 0;
#X connect 49 0 16 0;
#X connect 51 0 84 0;
#X connect 52 0 53 0;
#X connect 53 0 11 0;
#X connect 55 0 98 0;
#X connect 56 0 4 0;
#X connect 58 0 85 0;
#X connect 59 0 83 0;
#X connect 60 0 63 0;
#X connect 60 0 102 0;
#X connect 61 0 62 0;
#X connect 62 0 70 0;
#X connect 63 0 65 0;
#X connect 64 0 12 0;
#X connect 65 0 62 1;
#X connect 66 0 67 0;
#X connect 67 0 69 0;
#X connect 67 1 68 0;
#X connect 68 0 71 0;
#X connect 68 0 72 0;
#X connect 69 0 74 0;
#X connect 69 0 75 0;
#X connect 70 0 76 0;
#X connect 71 0 70 1;
#X connect 72 0 73 1;
#X connect 73 0 76 0;
#X connect 74 0 73 1;
#X connect 75 0 70 1;
#X connect 76 0 112 0;
#X connect 77 0 119 0;
#X connect 78 0 103 0;
#X connect 80 0 54 0;
#X connect 81 0 97 0;
#X connect 82 0 6 0;
#X connect 83 0 118 0;
#X connect 84 0 50 0;
#X connect 85 0 3 0;
#X connect 86 0 100 0;
#X connect 86 0 109 0;
#X connect 86 0 116 0;
#X connect 87 0 94 0;
#X connect 88 0 19 0;
#X connect 89 0 90 0;
#X connect 90 0 124 0;
#X connect 91 0 14 0;
#X connect 92 0 8 0;
#X connect 93 0 111 0;
#X connect 94 0 106 0;
#X connect 95 0 99 0;
#X connect 95 0 121 1;
#X connect 95 0 122 0;
#X connect 96 0 110 0;
#X connect 97 0 108 0;
#X connect 97 0 120 1;
#X connect 97 0 134 0;
#X connect 98 0 117 0;
#X connect 99 0 107 0;
#X connect 99 0 135 0;
#X connect 100 0 123 1;
#X connect 101 0 78 0;
#X connect 102 0 101 0;
#X connect 103 0 48 0;
#X connect 104 0 96 0;
#X connect 105 0 104 0;
#X connect 106 0 105 0;
#X connect 106 1 104 1;
#X connect 107 0 100 0;
#X connect 107 0 130 0;
#X connect 107 1 100 1;
#X connect 108 0 99 0;
#X connect 108 1 99 1;
#X connect 109 0 95 0;
#X connect 109 1 95 1;
#X connect 110 0 97 0;
#X connect 110 1 97 1;
#X connect 111 0 91 0;
#X connect 111 1 91 1;
#X connect 112 0 49 0;
#X connect 113 0 133 0;
#X connect 114 0 8 0;
#X connect 115 0 114 0;
#X connect 116 0 87 0;
#X connect 117 0 81 0;
#X connect 118 0 76 1;
#X connect 119 0 4 0;
#X connect 120 0 16 2;
#X connect 121 0 129 0;
#X connect 122 0 116 0;
#X connect 122 1 116 1;
#X connect 123 0 1 0;
#X connect 124 0 92 0;
#X connect 124 0 93 0;
#X connect 125 0 86 0;
#X connect 126 0 2 0;
#X connect 127 0 0 0;
#X connect 128 0 127 0;
#X connect 128 1 127 1;
#X connect 129 0 16 1;
#X connect 130 0 123 0;
#X connect 131 0 121 0;
#X connect 132 0 120 0;
#X connect 133 0 64 0;
#X connect 133 1 64 1;
#X restore 11 142 pd vosimdsp;
#X text 159 84 <- GUI;
#N canvas 0 391 485 387 about 0;
#X text 14 14 vosim~;
#X text 13 33 Abstraction implementing the VOSIM sound synthesis algorithm after Kaegi \, Templaars. [1];
#X text 15 118 Each pulse additionally can be damped according to a factor b.;
#X text 13 154 Inlets are provided for M \, T \, N and b. All inlets except the one for N are signal inlets to allow smooth parameter changes.;
#X text 14 69 VOSIM signals cosist of a number (N) of sin^2 pulses with period T each \, followed by a silent period of length M. [vosim~] expects M and T in units of seconds.;
#X text 14 200 [1] Kaegi \, W. \, and S. Tempelaars \, ``Vosim--a new sound synthesis system \, '' Journal of the Audio Engineering Society \, vol. 26 \, no. 6 \, pp. 418-24 \, 1978;
#X text 20 323 Andy Farnell's tweaked version from mailing list;
#X text 19 349 adapted for netpd by beem 2020;
#X restore 11 240 pd about vosim;