#N canvas 4 4 856 655 10; #X obj 60 572 print; #X text 513 156 1.arg: ambisonic order; #X obj 60 549 round_zero 1e-006; #X text 348 312 ambisonic-order = n_ao; #X text 536 387 ambisonic-order-group; #X text 324 428 -90 <= delta <= +90; #X text 324 440 -180 <= phi <= +180; #X text 265 387 input: 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 265 336 input: index + phi [degree] .. 2-dimensional; #X text 265 346 input: index + delta + phi [degree] .. 3-dimensional ; #X text 265 360 input: index + phi [degree .. 2-dimensional ; #X text 265 371 input: index + delta + phi [degree] .. 3-dimensional ; #X text 289 518 n_col = (2*n_ao+1) = number of ambisonic-channels ; #X text 277 527 + n_row = (n_ls) = number of loudspeakers; #X text 517 313 number of loudspeakers = n_ls; #X text 280 587 + n_row = (n_ls) = number of loudspeakers; #X text 265 568 output in case of 3d: ((n_ao+1)*(n_ao+1)*n_ls+2) ; #X text 263 507 output in case of 2d: ((2*n_ao+1)*n_ls+2) ; #X text 610 568 :; #X text 567 506 :; #X text 507 578 number of ambisonic-channels; #X text 292 578 n_col = (n_ao+1)*(n_ao+1) =; #X text 478 597 elements of a matrix; #X text 280 597 + (n_ao + 1) * (n_ao + 1) * n_ls; #X text 277 537 + (2*n_ao + 1) * n_ls elements of a matrix ; #X text 258 460 input: calculates the pseudo-inverse of the encoded; #X text 314 471 loudspeaker-positions (+ the phantom-speakers); #X text 328 482 and output a matrix-message; #X text 339 417 1 <= index <= n_ao; #X text 603 268 a regular matrix to inverse it); #X text 426 399 to suppress the side-lobe-phenomena; #X text 526 258 (it is sometimes necessary to add phantom-ls. for achieving ; #X msg 272 130 ambi_weight 1 1 1 0.3904; #X msg 123 129 ambi_weight 1 1 1 1; #X msg 138 106 mirror_weight 0.7; #X obj 94 237 pp pht_ls; #X obj 38 77 t b b b b b b b; #X text 528 174 (1 .. 5 in case of 3 dimensional); #X text 528 165 (1 .. 12 in case of 2 dimensional); #X text 514 196 3.arg: number of independent loudspeakers; #X text 513 184 2.arg: dimension (2 or 3); #X text 513 247 5.arg: number of canceled phantom_loudspeakers ; #X text 514 208 4.arg: number of merged and mirrored loudspeakers ; #X text 560 221 (the merged loudspeakers are at the border of the arc ; #X text 573 233 or the hemisphere \, the mirrored loudspeakers are ; #X obj 742 385 pp ind_ls; #X msg 742 362 1 90 0 \, 2 45 45 \, 3 45 135 \, 4 45 225 \, 5 45 315 ; #X obj 728 450 pp mrg_ls; #X msg 728 415 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 714 507 pp mir_ls; #X msg 714 472 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 700 553 pp pht_ls; #X msg 700 530 1 -90 0; #X msg 108 155 1 90 0 \, 2 45 45 \, 3 45 135 \, 4 45 225 \, 5 45 315 \, 6 0 0 \, 7 0 45 \, 8 0 90 \, 9 0 135 \, 10 0 180 \, 11 0 225 \, 12 0 270 \, 13 0 315; #X obj 108 190 pp real_ls; #X msg 80 263 begin_pseudo_inverse; #X obj 60 527 ambi_decode3 3 3 13 6; #X msg 30 501 end_pseudo_inverse; #X msg 94 215 1 -45 0 \, 2 -45 90 \, 3 -45 180 \, 4 -45 270 \, 6 -90 0; #X msg 47 476 ipht_ireal_muladd \$1 \$2 \$3; #N canvas 337 146 559 509 /SUBPATCH/ 0; #X msg 142 186 1 6 \$1; #X obj 102 58 inlet; #X obj 101 441 outlet; #X obj 162 59 inlet; #X obj 71 135 f; #X obj 103 135 f; #X obj 157 106 * 0.25; #X obj 214 106 * 0.5; #X msg 163 211 2 8 \$1; #X msg 40 187 1 13 \$1 \, 1 7 \$1; #X msg 61 212 2 7 \$1 \, 2 9 \$1; #X msg 179 241 3 10 \$1; #X msg 77 242 3 9 \$1 \, 3 11 \$1; #X msg 199 271 4 12 \$1; #X msg 87 271 4 11 \$1 \, 4 13 \$1; #X obj 162 81 route mirror_weight; #X connect 0 0 2 0; #X connect 1 0 4 0; #X connect 1 0 5 0; #X connect 3 0 15 0; #X connect 4 0 9 0; #X connect 4 0 10 0; #X connect 4 0 12 0; #X connect 4 0 14 0; #X connect 5 0 0 0; #X connect 5 0 8 0; #X connect 5 0 11 0; #X connect 5 0 13 0; #X connect 6 0 4 1; #X connect 7 0 5 1; #X connect 8 0 2 0; #X connect 9 0 2 0; #X connect 10 0 2 0; #X connect 11 0 2 0; #X connect 12 0 2 0; #X connect 13 0 2 0; #X connect 14 0 2 0; #X connect 15 0 7 0; #X connect 15 0 6 0; #X restore 47 436 pd; #X connect 2 0 0 0; #X connect 10 0 39 0; #X connect 35 0 59 0; #X connect 36 0 59 0; #X connect 37 0 63 1; #X connect 38 0 59 0; #X connect 39 0 60 0; #X connect 39 1 63 0; #X connect 39 2 58 0; #X connect 39 3 61 0; #X connect 39 4 56 0; #X connect 39 5 36 0; #X connect 39 6 37 0; #X connect 49 0 48 0; #X connect 51 0 50 0; #X connect 53 0 52 0; #X connect 55 0 54 0; #X connect 56 0 57 0; #X connect 57 0 59 0; #X connect 58 0 59 0; #X connect 59 0 2 0; #X connect 60 0 59 0; #X connect 61 0 38 0; #X connect 62 0 59 0; #X connect 63 0 62 0;