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
|
#N canvas 82 3 844 643 10;
#X obj 38 441 print;
#X text 454 156 1.arg: <float> ambisonic order;
#X obj 38 418 round_zero 1e-006;
#X text 297 312 ambisonic-order = n_ao;
#X text 485 387 ambisonic-order-group;
#X text 273 428 -90 <= delta <= +90;
#X text 273 440 -180 <= phi <= +180;
#X text 214 387 input: <ambi_weight> one mul-factor for each;
#X text 21 12 ambi_decode;
#X text 105 12 calculates a decoder-matrix;
#X obj 38 33 bng 35 250 50 0 empty empty empty 0 -6 0 8 -24198 -42246
-1;
#X text 214 336 input: <ls> index + phi [degree] .. 2-dimensional;
#X text 214 346 input: <ls> index + delta + phi [degree] .. 3-dimensional
;
#X text 214 360 input: <phls> index + phi [degree .. 2-dimensional
;
#X text 214 371 input: <phls> index + delta + phi [degree] .. 3-dimensional
;
#X text 238 518 <float> n_col = (2*n_ao+1) = number of ambisonic-channels
;
#X text 226 527 + <float> n_row = (n_ls) = number of loudspeakers;
#X text 466 313 number of loudspeakers = n_ls;
#X text 229 587 + <float> n_row = (n_ls) = number of loudspeakers;
#X text 214 568 output in case of 3d: <matrix> ((n_ao+1)*(n_ao+1)*n_ls+2)
;
#X text 212 507 output in case of 2d: <matrix> ((2*n_ao+1)*n_ls+2)
;
#X text 559 568 <float> :;
#X text 516 506 <float> :;
#X text 456 578 number of ambisonic-channels;
#X text 241 578 <float> n_col = (n_ao+1)*(n_ao+1) =;
#X text 427 597 <float> elements of a matrix;
#X text 229 597 + (n_ao + 1) * (n_ao + 1) * n_ls;
#X text 226 537 + (2*n_ao + 1) * n_ls <float> elements of a matrix
;
#X text 207 460 input: <pinv> calculates the pseudo-inverse of the
encoded;
#X text 263 471 loudspeaker-positions (+ the phantom-speakers);
#X text 277 482 and output a matrix-message;
#X text 288 417 1 <= index <= n_ao;
#X text 544 268 a regular matrix to inverse it);
#X text 375 399 to suppress the side-lobe-phenomena;
#X text 467 258 (it is sometimes necessary to add phantom-ls. for achieving
;
#X msg 38 372 pseudo_inverse;
#X msg 234 128 ambi_weight 1 1 1 0.3904;
#X msg 108 129 ambi_weight 1 1 1 1;
#X msg 123 104 mirror_weight 0.7;
#X obj 94 178 pp ind_ls;
#X msg 94 155 1 90 0 \, 2 45 45 \, 3 45 135 \, 4 45 225 \, 5 45 315
;
#X obj 38 396 ambi_decode2 3 3 5 8 1;
#X obj 80 243 pp mrg_ls;
#X msg 80 208 1 0 0 \, 2 0 45 \, 3 0 90 \, 4 0 135 \, 5 0 180 \, 6
0 225 \, 7 0 270 \, 8 0 315;
#X obj 66 300 pp mir_ls;
#X msg 66 265 1 -45 0 \, 2 -45 45 \, 3 -45 90 \, 4 -45 135 \, 5 -45
180 \, 6 -45 225 \, 7 -45 270 \, 8 -45 315;
#X obj 52 346 pp pht_ls;
#X msg 52 323 1 -90 0;
#X obj 38 77 t b b b b b b b;
#X text 469 174 (1 .. 5 in case of 3 dimensional);
#X text 469 165 (1 .. 12 in case of 2 dimensional);
#X text 455 196 3.arg: <float> number of independent loudspeakers;
#X text 454 184 2.arg: <float> dimension (2 or 3);
#X text 454 247 5.arg: <float> number of canceled phantom_loudspeakers
;
#X text 455 208 4.arg: <float> number of merged and mirrored loudspeakers
;
#X text 501 221 (the merged loudspeakers are at the border of the arc
;
#X text 514 233 or the hemisphere \, the mirrored loudspeakers are
;
#X connect 2 0 0 0;
#X connect 10 0 48 0;
#X connect 35 0 41 0;
#X connect 36 0 41 0;
#X connect 37 0 41 0;
#X connect 38 0 41 0;
#X connect 39 0 41 0;
#X connect 40 0 39 0;
#X connect 41 0 2 0;
#X connect 42 0 41 0;
#X connect 43 0 42 0;
#X connect 44 0 41 0;
#X connect 45 0 44 0;
#X connect 46 0 41 0;
#X connect 47 0 46 0;
#X connect 48 0 35 0;
#X connect 48 1 47 0;
#X connect 48 2 45 0;
#X connect 48 3 43 0;
#X connect 48 4 40 0;
#X connect 48 5 37 0;
#X connect 48 6 38 0;
|