forked from zkmkarlsruhe/ZirkoniumSpatializationServer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspatdif_server.pd
More file actions
861 lines (861 loc) · 21.7 KB
/
spatdif_server.pd
File metadata and controls
861 lines (861 loc) · 21.7 KB
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
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
#N canvas 544 154 429 191 10;
#N canvas 541 437 689 376 command_interpretation 0;
#X obj 131 6 inlet;
#N canvas 324 117 272 250 PropertiesOfAudioFile 0;
#X obj 29 39 inlet;
#X obj 61 181 readsf~;
#X obj 61 134 list prepend open;
#X obj 61 157 list trim;
#X obj 29 73 t b a;
#X msg 28 112 print;
#X obj 180 133 openpanel;
#X obj 180 104 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 180 164 open \$1;
#X connect 0 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 4 1 2 0;
#X connect 5 0 1 0;
#X connect 6 0 8 0;
#X connect 7 0 6 0;
#X connect 8 0 1 0;
#X restore 131 92 pd PropertiesOfAudioFile;
#N canvas 469 273 681 649 Transport 0;
#X obj 85 4 inlet;
#X obj 29 186 bang~;
#X obj 55 232 f;
#X obj 55 269 + 64;
#X obj 56 327 / 44100;
#X text 10 360 elapsed time;
#X obj 178 415 +;
#X obj 163 586 s toZTE;
#X text 219 385 offset Time;
#X obj 353 61 print Transport_unknown_message;
#X obj 95 299 r SampleRate;
#X obj 163 490 f;
#X obj 56 391 t b f;
#X obj 94 422 + 1;
#X obj 56 423 f;
#X msg 8 442 0, f 4;
#X obj 56 473 sel 25;
#X obj 253 69 r SampleRate;
#X text 296 108 fps;
#X floatatom 253 145 5 0 0 0 - - -, f 5;
#X text 301 140 samples per frame;
#X obj 253 180 / 64;
#X floatatom 253 218 5 0 0 0 - - -, f 5;
#X obj 253 241 i;
#X obj 253 269 print update_skip;
#X obj 253 107 / 30;
#X msg 92 175 64;
#X msg 150 174 0;
#X text 299 215 number of blocks per refresh;
#X obj 86 32 route play poll setCurrentTime refreshRate;
#X obj 131 223 t b f;
#X msg 87 229 0;
#X msg 435 513 set poll;
#X obj 141 104 t b b;
#X obj 88 108 t b b;
#X msg 247 513 set currentTime \, adddollar 1;
#X msg 163 559 poll;
#X obj 84 564 send poll;
#X obj 58 537 t b b;
#X text 12 155 master clock;
#X connect 0 0 29 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 2 1;
#X connect 3 0 4 0;
#X connect 4 0 12 0;
#X connect 6 0 11 1;
#X connect 10 0 4 1;
#X connect 11 0 36 0;
#X connect 12 0 14 0;
#X connect 12 1 6 0;
#X connect 13 0 14 1;
#X connect 14 0 13 0;
#X connect 14 0 16 0;
#X connect 15 0 14 1;
#X connect 16 0 15 0;
#X connect 16 0 38 0;
#X connect 17 0 25 0;
#X connect 19 0 21 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 23 0 16 1;
#X connect 25 0 19 0;
#X connect 26 0 30 0;
#X connect 27 0 30 0;
#X connect 29 0 34 0;
#X connect 29 1 33 0;
#X connect 29 2 6 1;
#X connect 29 3 25 1;
#X connect 29 4 9 0;
#X connect 30 0 31 0;
#X connect 30 1 3 1;
#X connect 31 0 2 1;
#X connect 32 0 36 0;
#X connect 33 0 27 0;
#X connect 33 1 32 0;
#X connect 34 0 26 0;
#X connect 34 1 35 0;
#X connect 35 0 36 0;
#X connect 36 0 7 0;
#X connect 38 0 11 0;
#X connect 38 1 37 0;
#X restore 161 111 pd Transport;
#N canvas 98 41 748 532 AudioFileInspection 0;
#X obj 102 16 inlet;
#X obj 119 244 soundfiler;
#X obj 101 64 route loadToBuffer freeBuffer;
#X msg 186 311 buffer freed;
#X msg 5 223 buffer loaded;
#X obj 119 272 list prepend number of samples;
#X obj 6 122 t b a;
#X obj 119 308 list trim;
#X obj 119 402 print PDmemory;
#X obj 119 371 spigot;
#X obj 193 346 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 440 261 table fileInspectionBuffer1;
#X obj 440 280 table fileInspectionBuffer2;
#X msg 119 166 read -maxsize \$1 -skip \$2 -resize \$3 fileInspectionBuffer1
fileInspectionBuffer2 fileInspectionBuffer3 fileInspectionBuffer4 fileInspectionBuffer5
fileInspectionBuffer6 fileInspectionBuffer7 fileInspectionBuffer8;
#X obj 440 299 table fileInspectionBuffer3;
#X obj 440 318 table fileInspectionBuffer4;
#X obj 440 337 table fileInspectionBuffer5;
#X obj 440 356 table fileInspectionBuffer6;
#X obj 440 375 table fileInspectionBuffer7;
#X obj 440 394 table fileInspectionBuffer8;
#X msg 500 81 \; fileInspectionBuffer1 resize 0 \; fileInspectionBuffer2
resize 0 \; fileInspectionBuffer3 resize 0 \; fileInspectionBuffer4
resize 0 \; fileInspectionBuffer5 resize 0 \; fileInspectionBuffer6
resize 0 \; fileInspectionBuffer7 resize 0 \; fileInspectionBuffer8
resize 0 \;;
#X text 165 16 This functionality is exclusively used for creating
waveform representation in ZTE;
#X connect 0 0 2 0;
#X connect 1 0 5 0;
#X connect 2 0 6 0;
#X connect 2 1 20 0;
#X connect 2 1 3 0;
#X connect 3 0 9 0;
#X connect 4 0 9 0;
#X connect 5 0 7 0;
#X connect 6 0 4 0;
#X connect 6 1 13 0;
#X connect 7 0 9 0;
#X connect 9 0 8 0;
#X connect 10 0 9 1;
#X connect 13 0 1 0;
#X restore 192 132 pd AudioFileInspection;
#X obj 223 152 s SampleRate;
#X obj 254 172 s ID;
#X obj 287 187 s Speaker;
#X obj 346 224 s vbapMapping;
#X obj 315 204 s SpeakerDef;
#N canvas 580 415 649 501 vbap 0;
#X obj 129 259 s vbapDef;
#X obj 131 204 define_loudspeakers 2 0 45 90 135;
#X obj 133 152 list prepend ls-directions;
#X text 342 193 <- dummy;
#X obj 81 73 t b a;
#X obj 132 177 list trim;
#N canvas 393 359 476 606 convert 0;
#X obj 112 14 inlet;
#X obj 149 562 outlet;
#X obj 221 195 until;
#X obj 221 233 list append;
#X obj 313 238 bang;
#X obj 221 263 list split 2;
#X obj 220 287 unpack 0 0;
#X obj 217 357 circlewrap;
#X obj 222 380 pack 0 0;
#X obj 203 440 list append;
#X obj 323 415 t l;
#X obj 221 406 list prepend;
#X obj 202 167 t b b l b;
#X obj 143 525 list prepend;
#X obj 74 200 until;
#X obj 74 238 list append;
#X obj 166 243 bang;
#X obj 70 362 circlewrap;
#X obj 56 445 list append;
#X obj 176 420 t l;
#X obj 74 411 list prepend;
#X obj 55 172 t b b l b;
#X obj 74 268 list split 1;
#X obj 222 309 * -1;
#X obj 222 330 + 90;
#X obj 75 314 * -1;
#X obj 75 335 + 90;
#X obj 107 98 route 2 3;
#X obj 232 488 list prepend 3;
#X obj 72 484 list prepend 2;
#X connect 0 0 27 0;
#X connect 2 0 3 0;
#X connect 3 0 5 0;
#X connect 4 0 2 1;
#X connect 5 0 6 0;
#X connect 5 1 3 1;
#X connect 5 2 4 0;
#X connect 6 0 23 0;
#X connect 6 1 8 1;
#X connect 7 0 8 0;
#X connect 8 0 11 0;
#X connect 9 0 28 0;
#X connect 10 0 11 1;
#X connect 11 0 10 0;
#X connect 11 0 9 1;
#X connect 12 0 9 0;
#X connect 12 1 2 0;
#X connect 12 2 3 1;
#X connect 12 3 11 1;
#X connect 13 0 1 0;
#X connect 14 0 15 0;
#X connect 15 0 22 0;
#X connect 16 0 14 1;
#X connect 17 0 20 0;
#X connect 18 0 29 0;
#X connect 19 0 20 1;
#X connect 20 0 19 0;
#X connect 20 0 18 1;
#X connect 21 0 18 0;
#X connect 21 1 14 0;
#X connect 21 2 15 1;
#X connect 21 3 20 1;
#X connect 22 0 25 0;
#X connect 22 1 15 1;
#X connect 22 2 16 0;
#X connect 23 0 24 0;
#X connect 24 0 7 0;
#X connect 25 0 26 0;
#X connect 26 0 17 0;
#X connect 27 0 21 0;
#X connect 27 1 12 0;
#X connect 28 0 13 0;
#X connect 29 0 13 0;
#X restore 133 118 pd convert;
#X obj 369 410 s toZTE;
#X obj 244 301 route selectedTriplet;
#X obj 368 361 list prepend triplet;
#X obj 368 386 list trim;
#X obj 367 337 list prepend -1;
#X obj 81 42 r SpeakerDef;
#X obj 222 255 zirkvbap;
#X connect 1 0 0 0;
#X connect 1 0 13 0;
#X connect 2 0 5 0;
#X connect 4 0 1 0;
#X connect 4 1 6 0;
#X connect 5 0 1 0;
#X connect 6 0 2 0;
#X connect 8 1 11 0;
#X connect 9 0 10 0;
#X connect 10 0 7 0;
#X connect 11 0 9 0;
#X connect 12 0 4 0;
#X connect 13 4 8 0;
#X restore 81 252 pd vbap;
#N canvas 0 22 459 366 speakerNum 0;
#X obj 250 42 r SpeakerDef;
#X obj 212 127 list length;
#X floatatom 214 172 5 0 0 0 - - -, f 5;
#X obj 214 201 - 1;
#X text 20 193 because first one is dimension;
#X obj 246 67 t l l;
#X msg 304 128 \$1;
#X obj 309 166 sel 2 3;
#X msg 310 228 1;
#X msg 345 228 2;
#X obj 218 247 / 1;
#X floatatom 216 273 5 0 0 0 - - -, f 5;
#X obj 217 296 s NumSpeakers;
#X connect 0 0 5 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 10 0;
#X connect 5 0 1 0;
#X connect 5 1 6 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 10 1;
#X connect 9 0 10 1;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X restore 136 252 pd speakerNum;
#X obj 377 244 s HRTF;
#N canvas 0 22 450 300 Report 0;
#X obj 79 75 inlet;
#X obj 79 122 route enableIDLevelReport enableSpeakerLevelReport;
#X obj 76 161 s IDLevelReport;
#X obj 219 161 s SpeakerLevelReport;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X restore 408 265 pd Report;
#X obj 131 34 route PropertiesOfAudioFile Transport AudioFileInspection
SampleRate ID Speaker SpeakerDef vbapMapping hrtf Report SoundFile
;
#X obj 439 287 s SoundFile;
#X obj 471 130 print error-invalidCommand;
#X text 80 306 distributes commands from the Trajectory Editor;
#X connect 0 0 13 0;
#X connect 13 0 1 0;
#X connect 13 1 2 0;
#X connect 13 2 3 0;
#X connect 13 3 4 0;
#X connect 13 4 5 0;
#X connect 13 5 6 0;
#X connect 13 6 8 0;
#X connect 13 7 7 0;
#X connect 13 8 11 0;
#X connect 13 9 12 0;
#X connect 13 10 14 0;
#X connect 13 11 15 0;
#X restore 29 37 pd command_interpretation;
#N canvas 0 22 334 232 report 0;
#X obj 40 20 loadbang;
#X obj 40 96 print;
#X obj 43 122 loadbang;
#X msg 42 160 \; pd dsp 1;
#X obj 111 80 r pd;
#X msg 40 46 Zirkonium Spatialization Server ver3.1;
#X connect 0 0 5 0;
#X connect 2 0 3 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X restore 350 60 pd report;
#X obj 29 12 r fromZTE;
#X obj 252 8 catch~ hrtfL;
#X obj 331 9 catch~ hrtfR;
#X obj 295 37 dac~;
#X text 181 73 source layer;
#X text 181 95 ID (sound object) layer;
#X text 181 144 Hardware output layer;
#X text 182 119 Virtual speaker layer;
#N canvas 155 313 727 389 sfplayers 0;
#X obj 17 12 sfplayer 0;
#X obj 17 34 sfplayer 1;
#X obj 17 56 sfplayer 2;
#X obj 17 78 sfplayer 3;
#X obj 17 100 sfplayer 4;
#X obj 17 122 sfplayer 5;
#X obj 17 144 sfplayer 6;
#X obj 17 166 sfplayer 7;
#X obj 17 188 sfplayer 8;
#X obj 17 210 sfplayer 9;
#X obj 17 232 sfplayer 10;
#X obj 17 254 sfplayer 11;
#X obj 17 276 sfplayer 12;
#X obj 17 298 sfplayer 13;
#X obj 17 320 sfplayer 14;
#X obj 17 342 sfplayer 15;
#X obj 98 13 sfplayer 16;
#X obj 98 35 sfplayer 17;
#X obj 98 57 sfplayer 18;
#X obj 98 79 sfplayer 19;
#X obj 98 101 sfplayer 20;
#X obj 98 123 sfplayer 21;
#X obj 98 145 sfplayer 22;
#X obj 98 167 sfplayer 23;
#X obj 98 190 sfplayer 24;
#X obj 98 212 sfplayer 25;
#X obj 98 234 sfplayer 26;
#X obj 98 256 sfplayer 27;
#X obj 98 278 sfplayer 28;
#X obj 98 300 sfplayer 29;
#X obj 98 322 sfplayer 30;
#X obj 98 344 sfplayer 31;
#X text 338 28 sound file players;
#X text 336 85 you can play upto 64 files at the same time. Audio signal
from the sound file will be sent to "receive~ playerID channelID".
Note \, channel ID starts from 1 playerID starts from 0;
#X obj 175 12 sfplayer 32;
#X obj 175 34 sfplayer 33;
#X obj 175 56 sfplayer 34;
#X obj 175 78 sfplayer 35;
#X obj 175 100 sfplayer 36;
#X obj 175 122 sfplayer 37;
#X obj 175 144 sfplayer 38;
#X obj 175 166 sfplayer 39;
#X obj 175 188 sfplayer 40;
#X obj 175 210 sfplayer 41;
#X obj 175 232 sfplayer 42;
#X obj 175 254 sfplayer 43;
#X obj 175 276 sfplayer 44;
#X obj 175 298 sfplayer 45;
#X obj 175 320 sfplayer 46;
#X obj 175 342 sfplayer 47;
#X obj 256 13 sfplayer 48;
#X obj 256 35 sfplayer 49;
#X obj 256 57 sfplayer 50;
#X obj 256 79 sfplayer 51;
#X obj 256 101 sfplayer 52;
#X obj 256 123 sfplayer 53;
#X obj 256 145 sfplayer 54;
#X obj 256 167 sfplayer 55;
#X obj 256 190 sfplayer 56;
#X obj 256 212 sfplayer 57;
#X obj 256 234 sfplayer 58;
#X obj 256 256 sfplayer 59;
#X obj 255 278 sfplayer 60;
#X obj 256 300 sfplayer 61;
#X obj 256 322 sfplayer 62;
#X obj 256 344 sfplayer 63;
#X restore 93 69 pd sfplayers;
#N canvas 269 148 920 628 inputs 0;
#X obj 73 74 send~ in1;
#X obj 89 95 send~ in2;
#X obj 74 13 send~ noinput;
#X obj 105 117 send~ in3;
#X obj 120 139 send~ in4;
#X obj 137 161 send~ in5;
#X obj 156 183 send~ in6;
#X obj 173 204 send~ in7;
#X obj 190 224 send~ in8;
#X obj 209 75 send~ in9;
#X obj 225 96 send~ in10;
#X obj 243 118 send~ in11;
#X obj 262 140 send~ in12;
#X obj 278 163 send~ in13;
#X obj 294 184 send~ in14;
#X obj 311 205 send~ in15;
#X obj 330 224 send~ in16;
#X obj 73 43 adc~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
#X obj 356 43 adc~ 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
;
#X obj 356 74 send~ in17;
#X obj 376 95 send~ in18;
#X obj 395 117 send~ in19;
#X obj 416 139 send~ in20;
#X obj 438 161 send~ in21;
#X obj 459 183 send~ in22;
#X obj 479 204 send~ in23;
#X obj 505 226 send~ in24;
#X obj 521 78 send~ in25;
#X obj 542 99 send~ in26;
#X obj 562 121 send~ in27;
#X obj 582 143 send~ in28;
#X obj 603 165 send~ in29;
#X obj 623 187 send~ in30;
#X obj 646 208 send~ in31;
#X obj 666 227 send~ in32;
#X text 64 546 input from the hardware. Max 64 channels. You can find
receive~ in ID;
#X obj 63 283 adc~ 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
;
#X obj 63 314 send~ in33;
#X obj 83 335 send~ in34;
#X obj 104 357 send~ in35;
#X obj 124 379 send~ in36;
#X obj 141 401 send~ in37;
#X obj 166 423 send~ in38;
#X obj 183 444 send~ in39;
#X obj 206 464 send~ in40;
#X obj 227 311 send~ in41;
#X obj 247 333 send~ in42;
#X obj 269 356 send~ in43;
#X obj 291 380 send~ in44;
#X obj 309 400 send~ in45;
#X obj 329 420 send~ in46;
#X obj 349 439 send~ in47;
#X obj 371 460 send~ in48;
#X obj 411 284 adc~ 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
;
#X obj 411 315 send~ in49;
#X obj 431 336 send~ in50;
#X obj 450 358 send~ in51;
#X obj 471 380 send~ in52;
#X obj 493 402 send~ in53;
#X obj 514 424 send~ in54;
#X obj 534 445 send~ in55;
#X obj 556 465 send~ in56;
#X obj 575 319 send~ in57;
#X obj 597 340 send~ in58;
#X obj 617 362 send~ in59;
#X obj 637 384 send~ in60;
#X obj 658 406 send~ in61;
#X obj 678 428 send~ in62;
#X obj 701 449 send~ in63;
#X obj 721 468 send~ in64;
#X connect 17 0 0 0;
#X connect 17 1 1 0;
#X connect 17 2 3 0;
#X connect 17 3 4 0;
#X connect 17 4 5 0;
#X connect 17 5 6 0;
#X connect 17 6 7 0;
#X connect 17 7 8 0;
#X connect 17 8 9 0;
#X connect 17 9 10 0;
#X connect 17 10 11 0;
#X connect 17 11 12 0;
#X connect 17 12 13 0;
#X connect 17 13 14 0;
#X connect 17 14 15 0;
#X connect 17 15 16 0;
#X connect 18 0 19 0;
#X connect 18 1 20 0;
#X connect 18 2 21 0;
#X connect 18 3 22 0;
#X connect 18 4 23 0;
#X connect 18 5 24 0;
#X connect 18 6 25 0;
#X connect 18 7 26 0;
#X connect 18 8 27 0;
#X connect 18 9 28 0;
#X connect 18 10 29 0;
#X connect 18 11 30 0;
#X connect 18 12 31 0;
#X connect 18 13 32 0;
#X connect 18 14 33 0;
#X connect 18 15 34 0;
#X connect 36 0 37 0;
#X connect 36 1 38 0;
#X connect 36 2 39 0;
#X connect 36 3 40 0;
#X connect 36 4 41 0;
#X connect 36 5 42 0;
#X connect 36 6 43 0;
#X connect 36 7 44 0;
#X connect 36 8 45 0;
#X connect 36 9 46 0;
#X connect 36 10 47 0;
#X connect 36 11 48 0;
#X connect 36 12 49 0;
#X connect 36 13 50 0;
#X connect 36 14 51 0;
#X connect 36 15 52 0;
#X connect 53 0 54 0;
#X connect 53 1 55 0;
#X connect 53 2 56 0;
#X connect 53 3 57 0;
#X connect 53 4 58 0;
#X connect 53 5 59 0;
#X connect 53 6 60 0;
#X connect 53 7 61 0;
#X connect 53 8 62 0;
#X connect 53 9 63 0;
#X connect 53 10 64 0;
#X connect 53 11 65 0;
#X connect 53 12 66 0;
#X connect 53 13 67 0;
#X connect 53 14 68 0;
#X connect 53 15 69 0;
#X restore 28 70 pd inputs;
#N canvas 159 321 440 234 Hardware_out 0;
#X obj 17 42 hout 1;
#X obj 63 42 hout 2;
#X obj 113 42 hout 3;
#X obj 163 42 hout 4;
#X obj 213 42 hout 5;
#X obj 263 42 hout 6;
#X obj 314 42 hout 7;
#X obj 365 42 hout 8;
#X obj 17 61 hout 9;
#X obj 63 61 hout 10;
#X obj 113 61 hout 11;
#X obj 163 61 hout 12;
#X obj 213 61 hout 13;
#X obj 263 61 hout 14;
#X obj 314 61 hout 15;
#X obj 365 61 hout 16;
#X text 17 8 hardware out | max 64 channels;
#X obj 17 80 hout 17;
#X obj 63 80 hout 18;
#X obj 113 80 hout 19;
#X obj 163 80 hout 20;
#X obj 213 80 hout 21;
#X obj 263 80 hout 22;
#X obj 314 80 hout 23;
#X obj 365 80 hout 24;
#X obj 17 99 hout 25;
#X obj 63 99 hout 26;
#X obj 113 99 hout 27;
#X obj 163 99 hout 28;
#X obj 213 99 hout 29;
#X obj 263 99 hout 30;
#X obj 314 99 hout 31;
#X obj 365 99 hout 32;
#X obj 17 118 hout 33;
#X obj 63 118 hout 34;
#X obj 113 118 hout 35;
#X obj 163 118 hout 36;
#X obj 213 118 hout 37;
#X obj 263 118 hout 38;
#X obj 314 118 hout 39;
#X obj 365 118 hout 40;
#X obj 17 137 hout 41;
#X obj 63 137 hout 42;
#X obj 113 137 hout 43;
#X obj 163 137 hout 44;
#X obj 213 137 hout 45;
#X obj 263 137 hout 46;
#X obj 314 137 hout 47;
#X obj 365 137 hout 48;
#X obj 17 156 hout 49;
#X obj 63 156 hout 50;
#X obj 113 156 hout 51;
#X obj 163 156 hout 52;
#X obj 213 156 hout 53;
#X obj 263 156 hout 54;
#X obj 314 156 hout 55;
#X obj 365 156 hout 56;
#X obj 17 175 hout 57;
#X obj 63 175 hout 58;
#X obj 113 175 hout 59;
#X obj 163 175 hout 60;
#X obj 213 175 hout 61;
#X obj 263 175 hout 62;
#X obj 314 175 hout 63;
#X obj 365 175 hout 64;
#X restore 27 139 pd Hardware_out;
#N canvas 230 342 721 259 Speakers 0;
#X obj 614 30 catch~ out0;
#X obj 312 34 speaker 5;
#X obj 84 35 speaker 2;
#X obj 5 34 speaker 1;
#X obj 158 35 speaker 3;
#X obj 231 36 speaker 4;
#X obj 388 35 speaker 6;
#X obj 466 35 speaker 7;
#X obj 540 35 speaker 8;
#X obj 5 54 speaker 9;
#X obj 5 74 speaker 17;
#X obj 5 94 speaker 25;
#X obj 5 114 speaker 33;
#X obj 5 134 speaker 41;
#X obj 5 154 speaker 49;
#X obj 5 174 speaker 57;
#X obj 84 54 speaker 10;
#X obj 84 74 speaker 18;
#X obj 84 94 speaker 26;
#X obj 84 114 speaker 34;
#X obj 158 55 speaker 11;
#X obj 231 56 speaker 12;
#X obj 313 55 speaker 13;
#X obj 388 55 speaker 14;
#X obj 466 55 speaker 15;
#X obj 540 55 speaker 16;
#X obj 158 75 speaker 19;
#X obj 158 95 speaker 27;
#X obj 158 115 speaker 35;
#X obj 158 135 speaker 43;
#X obj 158 155 speaker 51;
#X obj 158 175 speaker 59;
#X obj 84 134 speaker 42;
#X obj 84 154 speaker 50;
#X obj 84 174 speaker 58;
#X obj 230 76 speaker 20;
#X obj 231 96 speaker 28;
#X obj 231 116 speaker 36;
#X obj 231 136 speaker 44;
#X obj 231 156 speaker 52;
#X obj 231 176 speaker 60;
#X obj 313 75 speaker 21;
#X obj 313 95 speaker 29;
#X obj 313 115 speaker 37;
#X obj 313 135 speaker 45;
#X obj 313 155 speaker 53;
#X obj 313 175 speaker 61;
#X obj 388 75 speaker 22;
#X obj 388 95 speaker 30;
#X obj 388 115 speaker 38;
#X obj 388 135 speaker 46;
#X obj 388 155 speaker 54;
#X obj 388 175 speaker 62;
#X obj 466 75 speaker 23;
#X obj 466 95 speaker 31;
#X obj 466 115 speaker 39;
#X obj 466 135 speaker 47;
#X obj 466 155 speaker 55;
#X obj 466 175 speaker 63;
#X obj 540 75 speaker 24;
#X obj 540 95 speaker 32;
#X obj 540 115 speaker 40;
#X obj 540 135 speaker 48;
#X obj 540 175 speaker 64;
#X obj 539 154 speaker 56;
#X text 1 200 represent speaker. The connection of speaker and hardware
out can be configurable. Thus the numbers above are NOT hardware out
channels.;
#X restore 27 114 pd Speakers;
#N canvas 1034 483 393 344 IDs 0;
#N canvas 288 241 727 458 testID 0;
#X obj 478 163 switch~;
#X obj 478 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 477 51 loadbang;
#X msg 478 87 0;
#X obj 231 70 noise~;
#X text 274 95 - 6dB;
#X obj 315 51 r ID;
#X obj 315 96 route 0;
#X obj 311 141 route position activate;
#X obj 433 244 print IDActivation;
#X obj 408 276 print IDDeactivation;
#X obj 408 209 route 0 1;
#X obj 408 179 pack 0 \$1;
#X obj 348 181 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 231 97 *~ 0.1;
#X obj 293 208 sel 1;
#X obj 333 212 t f f;
#X msg 286 236 0;
#X obj 229 263 VBAPModule 0;
#X obj 41 158 == 1;
#X obj 126 157 == 0;
#X obj 137 105 loadbang;
#X msg 137 130 0;
#X obj 212 213 *~;
#X obj 71 96 r HRTF;
#X obj 42 312 *~;
#X obj 43 372 throw~ hrtfL;
#X obj 130 372 throw~ hrtfR;
#N canvas 0 22 450 300 HRTF 0;
#X obj 133 105 unpack 0 0;
#X obj 133 164 pack 0 25;
#X obj 197 167 pack 0 25;
#X obj 195 189 line 0 5;
#X obj 130 186 line 0 5;
#N canvas 0 22 450 300 hrtf_convert 0;
#X obj 133 119 * -1;
#X obj 131 166 + 360;
#X obj 131 141 moses 0;
#X obj 136 71 inlet;
#X obj 136 205 outlet;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 2 1 4 0;
#X connect 3 0 0 0;
#X restore 132 138 pd hrtf_convert;
#X obj 40 112 inlet~;
#X obj 88 250 outlet~;
#X obj 146 247 outlet~;
#X obj 282 147 switch~;
#X obj 281 122 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 307 105 0;
#X obj 346 73 loadbang;
#X obj 278 70 r HRTF;
#X obj 135 65 inlet;
#X text 103 215 hrtf;
#X connect 0 0 5 0;
#X connect 0 1 2 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 5 0 1 0;
#X connect 10 0 9 0;
#X connect 11 0 10 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 0 0;
#X restore 43 341 pd HRTF;
#X connect 1 0 0 0;
#X connect 1 0 12 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 14 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 18 1;
#X connect 8 0 28 1;
#X connect 8 1 1 0;
#X connect 8 1 13 0;
#X connect 11 0 10 0;
#X connect 11 1 9 0;
#X connect 12 0 11 0;
#X connect 13 0 16 0;
#X connect 14 0 23 1;
#X connect 14 0 25 1;
#X connect 15 0 17 0;
#X connect 16 0 15 0;
#X connect 16 1 18 3;
#X connect 17 0 18 2;
#X connect 19 0 25 0;
#X connect 20 0 23 0;
#X connect 21 0 22 0;
#X connect 22 0 20 0;
#X connect 23 0 18 0;
#X connect 24 0 19 0;
#X connect 24 0 20 0;
#X connect 25 0 28 0;
#X connect 28 0 26 0;
#X connect 28 1 27 0;
#X restore 244 196 pd testID;
#X obj 26 24 ID 1;
#X text 28 201 represents each ID (sound object);
#X obj 237 24 ID 7;
#X obj 96 42 ID 11;
#X obj 61 24 ID 2;
#X obj 26 42 ID 9;
#X obj 96 24 ID 3;
#X obj 131 24 ID 4;
#X obj 167 24 ID 5;
#X obj 202 24 ID 6;
#X obj 272 24 ID 8;
#X obj 61 42 ID 10;
#X obj 131 42 ID 12;
#X obj 167 42 ID 13;
#X obj 202 42 ID 14;
#X obj 237 42 ID 15;
#X obj 272 42 ID 16;
#X obj 26 61 ID 17;
#X obj 61 61 ID 18;
#X obj 96 61 ID 19;
#X obj 131 61 ID 20;
#X obj 167 61 ID 21;
#X obj 202 61 ID 22;
#X obj 237 61 ID 23;
#X obj 272 61 ID 24;
#X obj 26 79 ID 25;
#X obj 61 80 ID 26;
#X obj 96 80 ID 27;
#X obj 131 80 ID 28;
#X obj 167 80 ID 29;
#X obj 202 80 ID 30;
#X obj 237 80 ID 31;
#X obj 272 80 ID 32;
#X obj 25 100 ID 33;
#X obj 60 100 ID 34;
#X obj 95 100 ID 35;
#X obj 130 100 ID 36;
#X obj 166 100 ID 37;
#X obj 201 100 ID 38;
#X obj 236 100 ID 39;
#X obj 271 100 ID 40;
#X obj 25 118 ID 41;
#X obj 60 118 ID 42;
#X obj 95 118 ID 43;
#X obj 130 118 ID 44;
#X obj 166 118 ID 45;
#X obj 201 118 ID 46;
#X obj 236 118 ID 47;
#X obj 271 118 ID 48;
#X obj 25 137 ID 49;
#X obj 60 137 ID 50;
#X obj 95 137 ID 51;
#X obj 130 137 ID 52;
#X obj 166 137 ID 53;
#X obj 201 137 ID 54;
#X obj 236 137 ID 55;
#X obj 271 137 ID 56;
#X obj 25 155 ID 57;
#X obj 60 156 ID 58;
#X obj 90 156 ID 59;
#X obj 130 156 ID 60;
#X obj 166 156 ID 61;
#X obj 201 156 ID 62;
#X obj 236 156 ID 63;
#X obj 271 156 ID 64;
#X restore 27 91 pd IDs;
#X connect 2 0 0 0;
#X connect 3 0 5 0;
#X connect 4 0 5 1;