Update of /cvsroot/pure-data/externals/iem/iem_ambi/help
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19911/iem/iem_ambi/help
Added Files:
help-ambi_decode.pd help-ambi_decode2.pd help-ambi_decode3.pd
help-ambi_encode.pd help-ambi_rot.pd test-ambi_rot.pd
Log Message:
initial version JAN_06 with all sources
--- NEW FILE: help-ambi_decode3.pd ---
#N canvas 4 4 856 655 10;
#X obj 60 572 print;
#X text 513 156 1.arg: <float> 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: <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 265 336 input: <ls> index + phi [degree] .. 2-dimensional;
#X text 265 346 input: <ls> index + delta + phi [degree] .. 3-dimensional
;
#X text 265 360 input: <phls> index + phi [degree .. 2-dimensional
;
#X text 265 371 input: <phls> index + delta + phi [degree] .. 3-dimensional
;
#X text 289 518 <float> n_col = (2*n_ao+1) = number of ambisonic-channels
;
#X text 277 527 + <float> n_row = (n_ls) = number of loudspeakers;
#X text 517 313 number of loudspeakers = n_ls;
#X text 280 587 + <float> n_row = (n_ls) = number of loudspeakers;
#X text 265 568 output in case of 3d: <matrix> ((n_ao+1)*(n_ao+1)*n_ls+2)
;
#X text 263 507 output in case of 2d: <matrix> ((2*n_ao+1)*n_ls+2)
;
#X text 610 568 <float> :;
#X text 567 506 <float> :;
#X text 507 578 number of ambisonic-channels;
#X text 292 578 <float> n_col = (n_ao+1)*(n_ao+1) =;
#X text 478 597 <float> 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 <float> elements of a matrix
;
#X text 258 460 input: <pinv> 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: <float> number of independent loudspeakers;
#X text 513 184 2.arg: <float> dimension (2 or 3);
#X text 513 247 5.arg: <float> number of canceled phantom_loudspeakers
;
#X text 514 208 4.arg: <float> 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;
--- NEW FILE: help-ambi_rot.pd ---
#N canvas 44 25 730 500 10;
#X text 230 40 phi ... azimut \, positiv direction from nose to left
ear;
#X text 228 18 delta ... elevation \, positiv direction from nose to
top of the head;
#X floatatom 52 76 6 -180 180 0 - - -;
#X obj 29 76 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 128 76 6 -180 180 0 - - -;
#X text 129 59 rho_y;
#X text 54 59 rho_z;
#X floatatom 195 76 6 -180 180 0 - - -;
#X text 197 59 rho_x;
#X obj 127 149 pack 0 0 0;
#X obj 195 120 t b f;
#X obj 128 120 t b f;
#X obj 52 93 deg2rad;
#X obj 128 94 deg2rad;
#X obj 195 95 deg2rad;
#X text 241 6 AMBISONIC Encoder 4.Order 3-Dimensional;
#X text 254 73 umkehrung der matrizen multiplikation: funktioniert
nicht;
#X obj 63 393 print r1;
#X obj 174 390 print r2;
#X obj 292 389 print r3;
#X obj 407 387 print r4;
#X obj 63 342 mtx_mul;
#X obj 389 275 pack 0 0 0;
#X obj 389 214 unpack 0 0 0;
#X obj 389 237 * -1;
#X obj 126 172 t l l;
#X obj 174 341 mtx_mul;
#X obj 292 339 mtx_mul;
#X obj 407 338 mtx_mul;
#X obj 422 238 * -1;
#X obj 455 237 * -1;
#X obj 389 300 ambi_rot 4;
#X obj 63 244 ambi_rot 4;
#X text 10 8 ambi_rot;
#X obj 407 362 round_zero 0.0001;
#X obj 292 365 round_zero 0.0001;
#X obj 174 364 round_zero 0.0001;
#X obj 63 365 round_zero 0.0001;
#X connect 2 0 12 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 7 0 14 0;
#X connect 9 0 25 0;
#X connect 10 0 9 0;
#X connect 10 1 9 2;
#X connect 11 0 9 0;
#X connect 11 1 9 1;
#X connect 12 0 9 0;
#X connect 13 0 11 0;
#X connect 14 0 10 0;
#X connect 21 0 37 0;
#X connect 22 0 31 0;
#X connect 23 0 24 0;
#X connect 23 1 29 0;
#X connect 23 2 30 0;
#X connect 24 0 22 0;
#X connect 25 0 32 0;
#X connect 25 1 23 0;
#X connect 26 0 36 0;
#X connect 27 0 35 0;
#X connect 28 0 34 0;
#X connect 29 0 22 1;
#X connect 30 0 22 2;
#X connect 31 0 21 1;
#X connect 31 1 26 1;
#X connect 31 2 27 1;
#X connect 31 3 28 1;
#X connect 32 0 21 0;
#X connect 32 1 26 0;
#X connect 32 2 27 0;
#X connect 32 3 28 0;
#X connect 34 0 20 0;
#X connect 35 0 19 0;
#X connect 36 0 18 0;
#X connect 37 0 17 0;
--- NEW FILE: test-ambi_rot.pd ---
#N canvas 44 25 726 496 10;
#X text 230 40 phi ... azimut \, positiv direction from nose to left
ear;
#X text 228 18 delta ... elevation \, positiv direction from nose to
top of the head;
#X floatatom 52 76 6 -180 180 0 - - -;
#X obj 29 76 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 128 76 6 -180 180 0 - - -;
#X text 129 59 rho_y;
#X text 54 59 rho_z;
#X floatatom 195 76 6 -180 180 0 - - -;
#X text 197 59 rho_x;
#X obj 127 149 pack 0 0 0;
#X obj 195 120 t b f;
#X obj 128 120 t b f;
#X obj 52 93 deg2rad;
#X obj 128 94 deg2rad;
#X obj 195 95 deg2rad;
#X text 241 6 AMBISONIC Encoder 4.Order 3-Dimensional;
#X text 254 73 umkehrung der matrizen multiplikation: funktioniert
nicht;
#X obj 63 393 print r1;
#X obj 174 390 print r2;
#X obj 292 389 print r3;
#X obj 407 387 print r4;
#X text 10 8 test-ambi_rot.pd;
#X obj 63 342 mtx_mul;
#X obj 389 275 pack 0 0 0;
#X obj 389 214 unpack 0 0 0;
#X obj 389 237 * -1;
#X obj 126 172 t l l;
#X obj 174 341 mtx_mul;
#X obj 292 339 mtx_mul;
#X obj 407 338 mtx_mul;
#X obj 422 238 * -1;
#X obj 455 237 * -1;
#X obj 389 300 ambi_rot 4;
#X obj 63 244 ambi_rot 4;
#X obj 63 365 round_zero 1e-007;
#X obj 174 364 round_zero 1e-007;
#X obj 292 365 round_zero 1e-007;
#X obj 407 362 round_zero 1e-007;
#X connect 2 0 12 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 7 0 14 0;
#X connect 9 0 26 0;
#X connect 10 0 9 0;
#X connect 10 1 9 2;
#X connect 11 0 9 0;
#X connect 11 1 9 1;
#X connect 12 0 9 0;
#X connect 13 0 11 0;
#X connect 14 0 10 0;
#X connect 22 0 34 0;
#X connect 23 0 32 0;
#X connect 24 0 25 0;
#X connect 24 1 30 0;
#X connect 24 2 31 0;
#X connect 25 0 23 0;
#X connect 26 0 33 0;
#X connect 26 1 24 0;
#X connect 27 0 35 0;
#X connect 28 0 36 0;
#X connect 29 0 37 0;
#X connect 30 0 23 1;
#X connect 31 0 23 2;
#X connect 32 0 22 1;
#X connect 32 1 27 1;
#X connect 32 2 28 1;
#X connect 32 3 29 1;
#X connect 33 0 22 0;
#X connect 33 1 27 0;
#X connect 33 2 28 0;
#X connect 33 3 29 0;
#X connect 34 0 17 0;
#X connect 35 0 18 0;
#X connect 36 0 19 0;
#X connect 37 0 20 0;
--- NEW FILE: help-ambi_decode.pd ---
#N canvas 117 18 719 674 10;
#X obj 47 249 print;
#X text 291 171 1.arg: <float> ambisonic order;
#X text 306 180 (1 .. 12 for 2 dimensional use);
#X obj 47 226 round_zero 1e-006;
#X text 117 310 ambisonic-order = n_ao;
#X msg 150 170 ambi_weight 1 1 1;
#X msg 133 149 ambi_weight 1 1 0.3904;
#X text 305 385 ambisonic-order-group;
#X text 98 416 -90 <= delta <= +90;
#X text 98 428 -180 <= phi <= +180;
#X text 34 385 input: <ambi_weight> one mul-factor for each;
#X text 21 12 ambi_decode;
#X text 105 12 calculates a decoder-matrix;
#X obj 47 204 ambi_decode 2 2 5 0;
#X text 291 199 2.arg: <float> dimension;
#X text 440 199 (2 or 3);
#X text 291 211 3.arg: <float> number of real loudspeakers;
#X text 305 222 (best results \, if n_ls = n_ambi_channels);
#X text 316 232 (could be more or less);
#X text 292 243 4.arg: <float> number of phantom_loudspeakers;
#X text 334 254 (optional \, default 0);
#X msg 46 116 pinv;
#X obj 59 90 t b b;
#X obj 59 46 bng 35 250 50 0 empty empty empty 0 -6 0 8 -24198 -42246
-1;
#X text 34 334 input: <ls> index + phi [degree] .. 2-dimensional;
#X text 34 344 input: <ls> index + delta + phi [degree] .. 3-dimensional
;
#X text 34 358 input: <phls> index + phi [degree .. 2-dimensional;
#X text 34 369 input: <phls> index + delta + phi [degree] .. 3-dimensional
;
#X text 63 525 <float> n_col = (2*n_ao+1) = number of ambisonic-channels
;
#X text 51 534 + <float> n_row = (n_ls) = number of loudspeakers;
#X text 286 311 number of loudspeakers = n_ls;
#X text 51 594 + <float> n_row = (n_ls) = number of loudspeakers;
#X text 36 575 output in case of 3d: <matrix> ((n_ao+1)*(n_ao+1)*n_ls+2)
;
#X text 37 514 output in case of 2d: <matrix> ((2*n_ao+1)*n_ls+2);
#X text 384 575 <float> :;
#X text 341 513 <float> :;
#X text 281 585 number of ambisonic-channels;
#X text 63 585 <float> n_col = (n_ao+1)*(n_ao+1) =;
#X text 252 604 <float> elements of a matrix;
#X text 51 604 + (n_ao + 1) * (n_ao + 1) * n_ls;
#X text 51 544 + (2*n_ao + 1) * n_ls <float> elements of a matrix;
#X text 34 458 input: <pinv> calculates the pseudo-inverse of the encoded
;
#X text 90 469 loudspeaker-positions (+ the phantom-speakers);
#X text 104 480 and output a matrix-message;
#X text 306 189 (1 .. 5 for 3 dimensional use);
#X msg 95 116 ls 1 0 \, ls 2 72 \, ls 3 144 \, ls 4 216 \, ls 5 288
;
#X text 113 405 1 <= index <= n_ao;
#X text 340 275 a regular matrix to inverse it);
#X text 437 384 to suppress the side-lobe-phenomena;
#X text 308 265 (it is sometimes necessary to add phantom-ls. for achieving
;
#N canvas 0 0 812 677 phantom_example 0;
#X obj 57 631 print;
#X obj 57 608 round_zero 1e-006;
#X msg 57 94 pinv;
#X obj 70 24 bng 35 250 50 0 empty empty empty 0 -6 0 8 -24198 -42246
-1;
#X msg 198 72 ls 1 5 \, ls 2 2.5 \, ls 3 0 \, ls 4 -2.5 \, ls 5 -5
;
#X msg 92 176 phls 5 -17.5 \, phls 6 -20 \, phls 7 -22.5 \, phls 8
-25;
#X msg 92 200 phls 9 -27.5 \, phls 10 -30 \, phls 11 -32.5 \, phls
12 -35;
#X msg 92 223 phls 13 -37.5 \, phls 14 -40 \, phls 15 -42.5 \, phls
16 -45;
#X msg 92 247 phls 17 -47.5 \, phls 18 -50 \, phls 19 -52.5 \, phls
20 -55;
#X msg 92 270 phls 21 -57.5 \, phls 22 -60 \, phls 23 -62.5 \, phls
24 -65;
#X msg 92 294 phls 25 -67.5 \, phls 26 -70 \, phls 27 -72.5 \, phls
28 -75;
#X msg 92 317 phls 29 -77.5 \, phls 30 -80 \, phls 31 -82.5 \, phls
32 -85;
#X msg 92 340 phls 33 -87.5 \, phls 34 -90 \, phls 35 -92.5 \, phls
36 -95;
#X msg 92 364 phls 37 -97.5 \, phls 38 -100 \, phls 39 -102.5 \, phls
40 -105;
#X msg 92 387 phls 41 -107.5 \, phls 42 -110 \, phls 43 -112.5 \, phls
44 -115;
#X msg 92 411 phls 45 -117.5 \, phls 46 -120 \, phls 47 -122.5 \, phls
48 -125;
#X msg 92 434 phls 49 -127.5 \, phls 50 -130 \, phls 51 -132.5 \, phls
52 -135;
#X msg 92 456 phls 53 -137.5 \, phls 54 -140 \, phls 55 -142.5 \, phls
56 -145;
#X msg 92 480 phls 57 -147.5 \, phls 58 -150 \, phls 59 -152.5 \, phls
60 -155;
#X msg 92 503 phls 61 -157.5 \, phls 62 -160 \, phls 63 -162.5 \, phls
64 -165;
#X msg 92 527 phls 65 -167.5 \, phls 66 -170 \, phls 67 -172.5 \, phls
68 -175;
#X msg 92 550 phls 69 -177.5 \, phls 70 -180 \, phls 71 177.5 \, phls
72 175;
#X msg 497 228 phls 73 172.5 \, phls 74 170 \, phls 75 167.5 \, phls
76 165;
#X msg 497 249 phls 77 162.5 \, phls 78 160 \, phls 79 157.5 \, phls
80 155;
#X msg 497 270 phls 81 152.5 \, phls 82 150 \, phls 83 147.5 \, phls
84 145;
#X msg 497 290 phls 85 142.5 \, phls 86 140 \, phls 87 137.5 \, phls
88 135;
#X msg 497 312 phls 89 132.5 \, phls 90 130 \, phls 91 127.5 \, phls
92 125;
#X msg 497 333 phls 93 122.5 \, phls 94 120 \, phls 95 117.5 \, phls
96 115;
#X msg 497 354 phls 97 112.5 \, phls 98 110 \, phls 99 107.5 \, phls
100 105;
#X msg 497 375 phls 101 102.5 \, phls 102 100 \, phls 103 97.5 \, phls
104 95;
#X msg 497 396 phls 105 92.5 \, phls 106 90 \, phls 107 87.5 \, phls
108 85;
#X msg 497 418 phls 109 82.5 \, phls 110 80 \, phls 111 77.5 \, phls
112 75;
#X msg 497 439 phls 113 72.5 \, phls 114 70 \, phls 115 67.5 \, phls
116 65;
#X msg 497 460 phls 117 62.5 \, phls 118 60 \, phls 119 57.5 \, phls
120 55;
#X msg 497 481 phls 121 52.5 \, phls 122 50 \, phls 123 47.5 \, phls
124 45;
#X msg 497 502 phls 125 42.5 \, phls 126 40 \, phls 127 37.5 \, phls
128 35;
#X msg 497 524 phls 129 32.5 \, phls 130 30 \, phls 131 27.5 \, phls
132 25;
#X msg 497 545 phls 133 22.5 \, phls 134 20 \, phls 135 17.5 \, phls
136 15;
#X msg 497 566 phls 137 12.5 \, phls 138 10 \, phls 139 7.5;
#X obj 70 68 t b b b b;
#X obj 92 127 t b;
#X obj 497 206 t b;
#X obj 57 586 ambi_decode 2 2 5 139;
#X msg 92 152 phls 1 -7.5 \, phls 2 -10 \, phls 3 -12.5 \, phls 4 -15
;
#X connect 1 0 0 0;
#X connect 2 0 42 0;
#X connect 3 0 39 0;
#X connect 4 0 42 0;
#X connect 5 0 42 0;
#X connect 6 0 42 0;
#X connect 7 0 42 0;
#X connect 8 0 42 0;
#X connect 9 0 42 0;
#X connect 10 0 42 0;
#X connect 11 0 42 0;
#X connect 12 0 42 0;
#X connect 13 0 42 0;
#X connect 14 0 42 0;
#X connect 15 0 42 0;
#X connect 16 0 42 0;
#X connect 17 0 42 0;
#X connect 18 0 42 0;
#X connect 19 0 42 0;
#X connect 20 0 42 0;
#X connect 21 0 42 0;
#X connect 22 0 42 0;
#X connect 23 0 42 0;
#X connect 24 0 42 0;
#X connect 25 0 42 0;
#X connect 26 0 42 0;
#X connect 27 0 42 0;
#X connect 28 0 42 0;
#X connect 29 0 42 0;
#X connect 30 0 42 0;
#X connect 31 0 42 0;
#X connect 32 0 42 0;
#X connect 33 0 42 0;
#X connect 34 0 42 0;
#X connect 35 0 42 0;
#X connect 36 0 42 0;
#X connect 37 0 42 0;
#X connect 38 0 42 0;
#X connect 39 0 2 0;
#X connect 39 1 41 0;
#X connect 39 2 40 0;
#X connect 39 3 4 0;
#X connect 40 0 43 0;
#X connect 40 0 5 0;
#X connect 40 0 6 0;
#X connect 40 0 7 0;
#X connect 40 0 8 0;
#X connect 40 0 9 0;
#X connect 40 0 10 0;
#X connect 40 0 11 0;
#X connect 40 0 12 0;
#X connect 40 0 13 0;
#X connect 40 0 14 0;
#X connect 40 0 15 0;
#X connect 40 0 16 0;
#X connect 40 0 17 0;
#X connect 40 0 18 0;
#X connect 40 0 19 0;
#X connect 40 0 20 0;
#X connect 40 0 21 0;
#X connect 41 0 22 0;
#X connect 41 0 23 0;
#X connect 41 0 24 0;
#X connect 41 0 25 0;
#X connect 41 0 26 0;
#X connect 41 0 27 0;
#X connect 41 0 28 0;
#X connect 41 0 29 0;
#X connect 41 0 30 0;
#X connect 41 0 31 0;
#X connect 41 0 32 0;
#X connect 41 0 33 0;
#X connect 41 0 34 0;
#X connect 41 0 35 0;
#X connect 41 0 36 0;
#X connect 41 0 37 0;
#X connect 41 0 38 0;
#X connect 42 0 1 0;
#X connect 43 0 42 0;
#X restore 421 117 pd phantom_example regular;
#N canvas 0 0 814 679 real_example 0;
#X obj 58 293 print;
#X obj 58 270 round_zero 1e-006;
#X msg 57 94 pinv;
#X obj 70 24 bng 35 250 50 0 empty empty empty 0 -6 0 8 -24198 -42246
-1;
#X msg 103 115 ls 1 5 \, ls 2 2.5 \, ls 3 0 \, ls 4 -2.5 \, ls 5 -5
;
#X obj 70 68 t b b;
#X obj 58 248 ambi_decode 2 2 5 0;
#X connect 1 0 0 0;
#X connect 2 0 6 0;
#X connect 3 0 5 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 5 1 4 0;
#X connect 6 0 1 0;
#X restore 421 90 pd real_example singular;
#X connect 3 0 0 0;
#X connect 5 0 13 0;
#X connect 6 0 13 0;
#X connect 13 0 3 0;
#X connect 21 0 13 0;
#X connect 22 0 21 0;
#X connect 22 1 45 0;
#X connect 23 0 22 0;
#X connect 45 0 13 0;
--- NEW FILE: help-ambi_encode.pd ---
#N canvas 61 48 860 672 10;
#X obj 374 243 ambi_encode 2;
#X obj 374 288 print;
#X text 478 247 1.arg: <float> ambisonic order;
#X text 489 259 (1 .. 12 for 2 dimensional use);
#X msg 461 178 col 2 \$1;
#X msg 425 97 row 1 \$1;
#X msg 288 211 col 3 \$1 \$2;
#X obj 288 188 pack 0 0;
#X obj 306 166 t b f;
#X obj 374 265 round_zero 1e-006;
#X obj 184 193 pack 0 0;
#X obj 202 171 t b f;
#X floatatom 100 161 5 -180 180 0 - - -;
#X floatatom 51 162 5 -90 90 0 - - -;
#X obj 82 222 pack 0 0;
#X obj 100 200 t b f;
#X text 48 143 delta;
#X text 102 142 phi;
#X text 21 12 ambi_encode;
#X text 34 291 ambisonic-order = n_ao;
#X text 346 320 -> output: <list> of (2*n_ao+1) <float>;
#X text 346 331 -> output: <list> of (n_ao+1)*(n_ao+1) <float>;
#X text 387 356 -> output: <row> + index + (2*n_ao+1) <float>;
#X text 387 368 -> output: <row> + index + (n_ao+1)*(n_ao+1) <float>
;
#X text 383 394 -> output: <col> + index + (2*n_ao+1) <float>;
#X text 383 406 -> output: <col> + index + (n_ao+1)*(n_ao+1) <float>
;
#X text 432 424 for crossfading of 2 ambisonic-systems;
#X msg 605 183 ambi_weight 1 1 1;
#X msg 588 162 ambi_weight 1 1 0.3904;
#X text 299 424 ambisonic-order-group;
#X text 89 452 -90 <= delta <= +90;
#X text 89 464 -180 <= phi <= +180;
#X text 415 439 or for bluring a signal-source-direction;
#X text 31 506 order of ambisonic-channels in 2d-case: W X1 Y1 X2 Y2
X3 Y3;
#X text 391 506 X4 Y4 X5 Y5 ....;
#X text 167 520 W := 1 \, X-term ... cos(i*phi) \, Y-term ... sin(i*phi)
;
#X text 30 560 order of ambisonic-channels in 3d-case: W Z1X1 Z1Y1
Z1;
#X text 358 560 Z2X2 Z2Y2 Z2X1 Z2Y1 Z2 Z3X3 Z3Y3 Z3X2 Z3Y2 Z3X1 Z3Y1
Z3 ...;
#X text 166 574 W := 1 \, X-term ... cos(i*phi) \, Y-term ... sin(i*phi)
\,;
#X text 489 574 Z-term ... cos(j*delta)*sin(k*delta);
#X text 33 318 input: <float> phi [degree] .. 2-dimensional;
#X text 33 331 input: <list> delta + phi [degree] .. 3-dimensional
;
#X text 33 356 input: <row> index + phi [degree] .. 2-dimensional;
#X text 34 368 input: <row> index + delta + phi [degree] .. 3-dimensional
;
#X text 31 395 input: <col> index + phi [degree .. 2-dimensional;
#X text 31 407 input: <col> index + delta + phi [degree] .. 3-dimensional
;
#X text 31 424 input: <ambi_weight> one mul-factor for each;
#X text 267 492 |0| 1 | 2 | 3 | 4 | 5 |;
#X text 687 549 |;
#X text 263 547 |0| 1 | 2 | 3;
#X floatatom 226 142 5 -180 180 0 - - -;
#X floatatom 177 143 5 -90 90 0 - - -;
#X text 174 124 delta;
#X text 228 123 phi;
#X floatatom 327 139 5 -180 180 0 - - -;
#X floatatom 278 140 5 -90 90 0 - - -;
#X text 275 121 delta;
#X text 329 120 phi;
#X floatatom 370 65 5 -180 180 0 - - -;
#X text 372 46 phi;
#X floatatom 425 79 5 -180 180 0 - - -;
#X text 427 60 phi;
#X floatatom 461 160 5 -180 180 0 - - -;
#X text 463 141 phi;
#X text 491 272 (1 .. 5 for 3 dimensional use);
#X msg 184 218 row 4 \$1 \$2;
#X text 112 12 calculates a row or column of a ambisonic-encoder-matrix
;
#X text 82 849 "float"-message: <float> azimuth-angle phi [degree]
-> two-dimensional ambisonic-system -> output a <list> of (2*n_ao +
1) <float> elements;
#X text 478 850 "list"-message: 1.item <float> elevation-angle delta
[degree] \, 2.item <float> azimuth-angle phi [degree] -> three-dimensional
ambisonic-system -> output a <list> of (n_ao + 1)^2 <float> elements
;
#X text 87 914 "row"-message: <float> row-index of ambisonic-encoder-matrix
\, <float> azimuth-angle phi [degree] -> two-dimensional ambisonic-system
-> output a "row"-message + <float> row-index + (2*n_ao + 1) <float>
elements;
#X text 480 919 "row"-message: 1.item <float> elevation-angle delta
[degree] \, 2.item <float> azimuth-angle phi [degree] -> three-dimensional
ambisonic-system -> output a <list> of (n_ao + 1)^2 <float> elements
;
#X text 105 441 1 <= index <= nr_sources;
#N canvas 0 0 860 478 3D-5.Order-example 0;
#X obj 78 97 pack 0 0;
#X floatatom 78 55 5 -90 90 0 - - -;
#X floatatom 121 56 5 -180 180 0 - - -;
#X text 63 24 delta;
#X text 44 38 -90 .. +90;
#X text 147 26 phi;
#X text 120 40 -180 .. +180;
#X obj 96 76 t b f;
#X obj 97 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 9439 1;
#X obj 107 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 6442 1;
#X obj 117 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 3208 1;
#X obj 127 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 137 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 147 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 157 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 167 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 177 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 187 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 197 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 207 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 217 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 227 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 237 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 247 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 257 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 267 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 277 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 287 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 297 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 307 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 317 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 327 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 87 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 10000 1;
#X obj 422 89 ambi_encode 4;
#X floatatom 422 68 5 -180 180 0 - - -;
#X text 434 31 phi;
#X text 407 45 -180 .. +180;
#X obj 142 202 print 3d;
#X obj 422 132 print 2d;
#X obj 78 201 route row;
#X obj 142 180 round_zero 1e-006;
#X floatatom 42 244 5 0 0 0 - - -;
#X obj 78 124 pp row 7;
#X text 13 254 row-index;
#X obj 422 111 round_zero 1e-006;
#X text 448 260 +1;
#X text 448 360 -1;
#X text 451 311 0;
#X obj 78 151 ambi_encode 5;
#X obj 78 222 unpack 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X obj 337 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 347 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 357 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 367 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 377 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 387 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 397 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 407 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 417 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 427 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X obj 437 268 vsl 8 101 -1 1 0 0 empty empty empty 0 -8 0 8 -225280
-1109 -1 5000 1;
#X msg 260 57 ambi_weight 1 1 1 1 1 1;
#X msg 260 95 ambi_weight 1 1 1 1 0 0;
#X msg 260 114 ambi_weight 1 1 1 0 0 0;
#X msg 260 134 ambi_weight 1 1 0 0 0 0;
#X msg 260 154 ambi_weight 1 0 0 0 0 0;
#X msg 260 76 ambi_weight 1 1 1 1 1 0;
#X connect 0 0 42 0;
#X connect 1 0 0 0;
#X connect 2 0 7 0;
#X connect 7 0 0 0;
#X connect 7 1 0 1;
#X connect 33 0 44 0;
#X connect 34 0 33 0;
#X connect 39 0 49 0;
#X connect 40 0 37 0;
#X connect 42 0 48 0;
#X connect 44 0 38 0;
#X connect 48 0 39 0;
#X connect 48 0 40 0;
#X connect 49 0 41 0;
#X connect 49 1 32 0;
#X connect 49 2 8 0;
#X connect 49 3 9 0;
#X connect 49 4 10 0;
#X connect 49 5 11 0;
#X connect 49 6 12 0;
#X connect 49 7 13 0;
#X connect 49 8 14 0;
#X connect 49 9 15 0;
#X connect 49 10 16 0;
#X connect 49 11 17 0;
#X connect 49 12 18 0;
#X connect 49 13 19 0;
#X connect 49 14 20 0;
#X connect 49 15 21 0;
#X connect 49 16 22 0;
#X connect 49 17 23 0;
#X connect 49 18 24 0;
#X connect 49 19 25 0;
#X connect 49 20 26 0;
#X connect 49 21 27 0;
#X connect 49 22 28 0;
#X connect 49 23 29 0;
#X connect 49 24 30 0;
#X connect 49 25 31 0;
#X connect 49 26 50 0;
#X connect 49 27 51 0;
#X connect 49 28 52 0;
#X connect 49 29 53 0;
#X connect 49 30 54 0;
#X connect 49 31 55 0;
#X connect 49 32 56 0;
#X connect 49 33 57 0;
#X connect 49 34 58 0;
#X connect 49 35 59 0;
#X connect 49 36 60 0;
#X connect 61 0 48 0;
#X connect 62 0 48 0;
#X connect 63 0 48 0;
#X connect 64 0 48 0;
#X connect 65 0 48 0;
#X connect 66 0 48 0;
#X restore 538 61 pd 3D-5.Order-example;
#X connect 0 0 9 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 6 0;
#X connect 8 0 7 0;
#X connect 8 1 7 1;
#X connect 9 0 1 0;
#X connect 10 0 65 0;
#X connect 11 0 10 0;
#X connect 11 1 10 1;
#X connect 12 0 15 0;
#X connect 13 0 14 0;
#X connect 14 0 0 0;
#X connect 15 0 14 0;
#X connect 15 1 14 1;
#X connect 27 0 0 0;
#X connect 28 0 0 0;
#X connect 50 0 11 0;
#X connect 51 0 10 0;
#X connect 54 0 8 0;
#X connect 55 0 7 0;
#X connect 58 0 0 0;
#X connect 60 0 5 0;
#X connect 62 0 4 0;
#X connect 65 0 0 0;
--- NEW FILE: help-ambi_decode2.pd ---
#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;