From 4ca40545c23235fc899c4429260cbb96b33efd49 Mon Sep 17 00:00:00 2001 From: musil Date: Thu, 11 Dec 2008 17:47:57 +0000 Subject: moved help-files from help to ../ svn path=/trunk/externals/iem/iem_bin_ambi/; revision=10438 --- L0e045a.wav | Bin 0 -> 300 bytes L0e135a.wav | Bin 0 -> 300 bytes L0e225a.wav | Bin 0 -> 300 bytes L0e315a.wav | Bin 0 -> 300 bytes ambi_reduced_decode_fft2-help.pd | 275 ++++++++++++++++++++++++++++++++++ ambi_reduced_decode_fir2-help.pd | 265 ++++++++++++++++++++++++++++++++ help/L0e045a.wav | Bin 300 -> 0 bytes help/L0e135a.wav | Bin 300 -> 0 bytes help/L0e225a.wav | Bin 300 -> 0 bytes help/L0e315a.wav | Bin 300 -> 0 bytes help/ambi_reduced_decode_fft2-help.pd | 275 ---------------------------------- help/ambi_reduced_decode_fir2-help.pd | 265 -------------------------------- 12 files changed, 540 insertions(+), 540 deletions(-) create mode 100644 L0e045a.wav create mode 100644 L0e135a.wav create mode 100644 L0e225a.wav create mode 100644 L0e315a.wav create mode 100644 ambi_reduced_decode_fft2-help.pd create mode 100644 ambi_reduced_decode_fir2-help.pd delete mode 100644 help/L0e045a.wav delete mode 100644 help/L0e135a.wav delete mode 100644 help/L0e225a.wav delete mode 100644 help/L0e315a.wav delete mode 100644 help/ambi_reduced_decode_fft2-help.pd delete mode 100644 help/ambi_reduced_decode_fir2-help.pd diff --git a/L0e045a.wav b/L0e045a.wav new file mode 100644 index 0000000..eab0f9f Binary files /dev/null and b/L0e045a.wav differ diff --git a/L0e135a.wav b/L0e135a.wav new file mode 100644 index 0000000..3926f3e Binary files /dev/null and b/L0e135a.wav differ diff --git a/L0e225a.wav b/L0e225a.wav new file mode 100644 index 0000000..a182570 Binary files /dev/null and b/L0e225a.wav differ diff --git a/L0e315a.wav b/L0e315a.wav new file mode 100644 index 0000000..a5af5f9 Binary files /dev/null and b/L0e315a.wav differ diff --git a/ambi_reduced_decode_fft2-help.pd b/ambi_reduced_decode_fft2-help.pd new file mode 100644 index 0000000..fe3fb26 --- /dev/null +++ b/ambi_reduced_decode_fft2-help.pd @@ -0,0 +1,275 @@ +#N canvas 87 6 761 654 10; +#X obj 29 365 soundfiler; +#X obj 38 203 unpack s s; +#X msg 29 344 read -skip \$1 \$2 \$3; +#X obj 345 335 pp element; +#X obj 56 299 mergefilename /; +#X text 344 373 multiplexer control indices; +#X text 340 384 for spec2_matrix_bundle_stat~; +#X text 367 133 1.arg: unique-number used as table-name-prefix +; +#X obj 29 323 pack f s s; +#X text 367 183 6.arg: ambisonic order; +#X text 367 193 7.arg: ambisonic dimension; +#X text 367 203 8.arg: number of real loudspeakers; +#X text 367 213 9.arg: number of phantom loudspeakers; +#X text 361 223 10.arg: FFT-size = 2 x effective HRIR-length +; +#X obj 38 165 bin_ambi_reduced_decode_fft2 \$0 HRIR HRTF_re HRTF_im +fadeout 1 2 4 0 256; +#X obj 30 509 table \$0_fadeout 256; +#X obj 56 251 symbol .; +#X obj 38 226 t b b s; +#X obj 56 273 pack s s; +#X obj 29 260 f 0; +#X obj 38 60 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 345 356 print; +#X obj 29 423 table \$0_1_HRIR 256; +#X obj 265 418 table \$0_1_HRTF_re 256; +#X obj 405 418 table \$0_1_HRTF_im 256; +#X obj 29 483 table \$0_4_HRIR 256; +#X obj 29 463 table \$0_3_HRIR 256; +#X obj 29 443 table \$0_2_HRIR 256; +#X obj 265 438 table \$0_2_HRTF_re 256; +#X obj 265 458 table \$0_3_HRTF_re 256; +#X obj 405 458 table \$0_3_HRTF_im 256; +#X obj 405 438 table \$0_2_HRTF_im 256; +#X text 21 12 ambi_reduced_decode_fft2; +#X text 367 143 2.arg: last part of left HRIR table name; +#X text 367 173 5.arg: last part of HRIR fadeout window table +name; +#N canvas 0 0 465 384 init_fadeout 0; +#X obj 124 23 loadbang; +#X obj 124 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 124 73 for++ 0 127; +#X obj 124 144 t b; +#X msg 124 164 1; +#X obj 124 123 moses 95; +#X obj 167 144 - 95; +#X obj 167 166 / 32; +#X obj 167 220 * 3.14159; +#X obj 167 264 t f f; +#X obj 172 286 *; +#X obj 172 317 tabwrite \$0_fadeout; +#X obj 270 162 + 128; +#X msg 270 185 0 \$1; +#X obj 153 97 t f f f; +#X obj 167 241 cos; +#X obj 167 199 / 2; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 14 0; +#X connect 3 0 4 0; +#X connect 4 0 11 0; +#X connect 5 0 3 0; +#X connect 5 1 6 0; +#X connect 6 0 7 0; +#X connect 7 0 16 0; +#X connect 8 0 15 0; +#X connect 9 0 10 0; +#X connect 9 1 10 1; +#X connect 10 0 11 0; +#X connect 12 0 13 0; +#X connect 13 0 11 0; +#X connect 14 0 5 0; +#X connect 14 1 11 1; +#X connect 14 2 12 0; +#X connect 15 0 9 0; +#X connect 16 0 8 0; +#X restore 157 510 pd init_fadeout; +#X text 87 585 IEM KUG; +#X text 71 573 musil; +#X text 101 573 @; +#X text 107 573 iem.at; +#X text 70 595 Graz \, Austria; +#X text 22 562 (c) Thomas Musil 2000 - 2006; +#X text 211 40 up to 12.Order 2-dimensional; +#X text 208 28 up to 5.Order 3-dimensional or; +#X text 367 153 3.arg: last part of real reduced HRTF table +name; +#X text 367 163 4.arg: last part of imag reduced HRTF table +name; +#X text 220 14 AMBISONIC BINAURAL DECODING; +#X text 446 33 of HRTF-spectra; +#X text 429 20 calculates a reduced set; +#X obj 39 112 cnv 15 102 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#N canvas 0 5 1012 718 input_messages 0; +#X obj 147 645 outlet; +#X msg 80 324 calc_pinv; +#X msg 14 621 calc_sym; +#X obj 93 277 pp pht_ls; +#X obj 107 222 pp real_ls; +#X obj 120 178 pp load_HRIR; +#X msg 120 158 1 L0e045a.wav \, 2 L0e135a.wav \, 3 L0e225a.wav \, 4 +L0e315a.wav; +#X obj 67 396 pp ipht_ireal_muladd; +#X obj 133 130 pp ambi_weight; +#X obj 147 86 pp sing_range; +#X msg 93 257 1 -90 0; +#X msg 147 66 1e-010; +#X msg 67 375 1 4 0.707; +#X obj 14 26 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 133 110 1 1; +#X obj 14 5 inlet; +#X msg 107 202 1 45 \, 2 135 \, 3 225 \, 4 315; +#X text 670 112 -180 <= phi <= +180; +#X text 231 115 input: one mul-factor for each; +#X text 655 12 n_ao = ambisonic-order; +#X text 667 49 all angles in degree; +#X text 276 126 ambisonic order group to suppress the side-lobe-phenomena +; +#X text 273 317 of all (real + phantom) loudspeaker positions \,; +#X text 274 341 and calculates the pseudo inverse.; +#X text 277 329 multiplicates the ambi order weight; +#X text 536 366 mirror_weight; +#X text 275 392 phantom speaker with the factor "mirror_weight" and +adds; +#X text 231 38 input: singularity range; +#X text 274 49 when calculating the inverse of the matrix by gauss +; +#X text 274 59 algorithm \, you have to divide a row by a certain number +\,; +#X text 274 79 outside of this range (> sing_range \, or < -sing_range). +; +#X text 274 91 Otherwise we say \, this matrix is singular.; +#X text 274 69 to achieve the identity matrix. This number has to be +; +#X text 640 23 n_re_ls = number of real loudspeakers; +#X text 640 35 n_vi_ls = number of virtual phantom loudspeakers; +#X text 298 201 input: re_ls_index + phi .. 2-dimensional +; +#X text 298 212 input: re_ls_index + theta + phi .. 3-dimensional +; +#X text 230 247 input: vi_ls_index + phi .. 2-dimensional +; +#X text 230 258 input: vi_ls_index + theta + phi .. 3-dimensional +; +#X text 670 100 -90 <= theta <= +90; +#X text 662 76 1 <= re_ls_index <= n_re_ls; +#X text 662 87 1 <= vi_ls_index <= n_vi_ls; +#X text 340 223 encodes the re_ls_index row of a matrix; +#X text 273 270 encodes the (re_ls_index + vi_ls_index) row of a matrix +; +#X text 274 281 we need them to achieve a nonsingular matrix; +#X obj 14 45 t b b b b b b b b b b b; +#X obj 27 586 pp calc_reduced; +#X msg 27 564 1 \, 2 \, 3; +#X obj 40 532 pp check_HRTF_arrays; +#X msg 40 511 1 \, 2 \, 3; +#X msg 53 437 1 \, 2 \, 3 \, 4; +#X obj 53 458 pp check_HRIR_arrays; +#X text 491 157 input: : re_ls_index + left_ear_HRIR_wav_file +; +#X text 230 306 input: starts the encoding; +#X text 230 366 input: vi_ls_index re_ls_index +; +#X text 276 379 multiplies the column "vi_ls_index + re_ls_index" of +; +#X text 274 405 this column to the column "re_ls_index" of real speaker +; +#X text 227 435 input: re_ls_index; +#X text 271 448 checks the existence of the table with the "re_ls_index"-th +; +#X text 271 511 checks the existence of the reduced decoder table; +#X text 227 498 input: ambi_ch_index; +#X text 272 524 with the "ambi_ch_index"-th index.; +#X text 270 536 [1 .. (2*n_ao+1)] 2d; +#X text 418 536 [1 .. (n_ao+1)*(n_ao+1)] 3d; +#X text 230 561 input: ambi_ch_index; +#X text 275 574 multiplies the matrix of HRIR with the "ambi_ch_index"-th +; +#X text 273 587 column of the decoder matrix and does a real FFT; +#X text 26 663 to bin_ambi_reduced_decode_fft2; +#X text 534 169 and outputs on the left 2 symbols (table + wav); +#X text 230 611 input: outputs a list of 2 floats; +#X text 273 633 one means symmetric \, two means asymmetric column +of; +#X text 273 644 reduced decoder matrix. (message is especially for +; +#X text 280 227 ____________________________________________________________ +; +#X text 252 285 ____________________________________________________________ +; +#X text 253 409 ____________________________________________________________ +; +#X text 253 345 ____________________________________________________________ +; +#X text 250 480 ____________________________________________________________ +; +#X text 250 541 ____________________________________________________________ +; +#X text 253 592 ____________________________________________________________ +; +#X text 253 662 ____________________________________________________________ +; +#X text 255 95 ____________________________________________________________ +; +#X text 506 178 ____________________________________________________________ +; +#X text 636 58 _________________________________________________; +#X text 636 121 _________________________________________________; +#X text 66 24 in this order; +#X text 275 655 matrix object "spec2_matrix_bundle_stat~"; +#X text 250 133 ____________________________________________________________ +; +#X text 276 178 ____________________________________________________________ +; +#X text 272 461 index of the HRIR from loudspeaker to the left ear +; +#X text 271 473 and multiplies this HRIR with the fadeout table; +#X text 273 622 second float is the index \, first float is one or +two \,; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 5 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 9 0 0 0; +#X connect 10 0 3 0; +#X connect 11 0 9 0; +#X connect 12 0 7 0; +#X connect 13 0 45 0; +#X connect 14 0 8 0; +#X connect 15 0 13 0; +#X connect 16 0 4 0; +#X connect 45 0 2 0; +#X connect 45 1 47 0; +#X connect 45 2 49 0; +#X connect 45 3 50 0; +#X connect 45 5 1 0; +#X connect 45 7 16 0; +#X connect 45 8 6 0; +#X connect 45 9 14 0; +#X connect 45 10 11 0; +#X connect 46 0 0 0; +#X connect 47 0 46 0; +#X connect 48 0 0 0; +#X connect 49 0 48 0; +#X connect 50 0 51 0; +#X connect 51 0 0 0; +#X restore 38 111 pd input_messages; +#X text 108 203 load control of Head Related; +#X text 108 215 Impulse Responses; +#X connect 1 0 17 0; +#X connect 1 1 8 2; +#X connect 2 0 0 0; +#X connect 3 0 21 0; +#X connect 4 0 8 1; +#X connect 8 0 2 0; +#X connect 14 0 1 0; +#X connect 14 1 3 0; +#X connect 16 0 18 0; +#X connect 17 0 19 0; +#X connect 17 1 16 0; +#X connect 17 2 18 1; +#X connect 18 0 4 0; +#X connect 19 0 8 0; +#X connect 20 0 50 0; +#X connect 50 0 14 0; diff --git a/ambi_reduced_decode_fir2-help.pd b/ambi_reduced_decode_fir2-help.pd new file mode 100644 index 0000000..e9ad7fa --- /dev/null +++ b/ambi_reduced_decode_fir2-help.pd @@ -0,0 +1,265 @@ +#N canvas 87 6 818 654 10; +#X obj 29 365 soundfiler; +#X obj 38 203 unpack s s; +#X msg 29 344 read -skip \$1 \$2 \$3; +#X obj 387 335 pp element; +#X obj 56 299 mergefilename /; +#X text 386 373 multiplexer control indices; +#X text 382 384 for spec2_matrix_bundle_stat~; +#X text 407 133 1.arg: unique-number used as table-name-prefix +; +#X obj 29 323 pack f s s; +#X obj 56 251 symbol .; +#X obj 38 226 t b b s; +#X obj 56 273 pack s s; +#X obj 29 260 f 0; +#X obj 38 60 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 387 356 print; +#X text 407 143 2.arg: last part of left HRIR table name; +#N canvas 0 0 469 388 init_fadeout 0; +#X obj 124 23 loadbang; +#X obj 124 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 124 73 for++ 0 127; +#X obj 124 144 t b; +#X msg 124 164 1; +#X obj 124 123 moses 95; +#X obj 167 144 - 95; +#X obj 167 166 / 32; +#X obj 167 220 * 3.14159; +#X obj 167 264 t f f; +#X obj 172 286 *; +#X obj 172 317 tabwrite \$0_fadeout; +#X obj 270 162 + 128; +#X msg 270 185 0 \$1; +#X obj 153 97 t f f f; +#X obj 167 241 cos; +#X obj 167 199 / 2; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 14 0; +#X connect 3 0 4 0; +#X connect 4 0 11 0; +#X connect 5 0 3 0; +#X connect 5 1 6 0; +#X connect 6 0 7 0; +#X connect 7 0 16 0; +#X connect 8 0 15 0; +#X connect 9 0 10 0; +#X connect 9 1 10 1; +#X connect 10 0 11 0; +#X connect 12 0 13 0; +#X connect 13 0 11 0; +#X connect 14 0 5 0; +#X connect 14 1 11 1; +#X connect 14 2 12 0; +#X connect 15 0 9 0; +#X connect 16 0 8 0; +#X restore 157 510 pd init_fadeout; +#X text 87 585 IEM KUG; +#X text 71 573 musil; +#X text 101 573 @; +#X text 107 573 iem.at; +#X text 70 595 Graz \, Austria; +#X text 22 562 (c) Thomas Musil 2000 - 2006; +#X text 211 40 up to 12.Order 2-dimensional; +#X text 208 28 up to 5.Order 3-dimensional or; +#X text 220 14 AMBISONIC BINAURAL DECODING; +#X text 429 20 calculates a reduced set; +#X obj 39 112 cnv 15 102 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#N canvas 0 5 1006 718 input_messages 0; +#X obj 197 645 outlet; +#X msg 67 383 calc_pinv; +#X msg 14 615 calc_sym; +#X obj 93 273 pp pht_ls; +#X obj 107 218 pp real_ls; +#X obj 120 174 pp load_HRIR; +#X msg 120 154 1 L0e045a.wav \, 2 L0e135a.wav \, 3 L0e225a.wav \, 4 +L0e315a.wav; +#X obj 80 329 pp ipht_ireal_muladd; +#X obj 133 130 pp ambi_weight; +#X obj 147 86 pp sing_range; +#X msg 93 253 1 -90 0; +#X msg 147 66 1e-010; +#X msg 80 308 1 4 0.707; +#X obj 14 26 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 133 110 1 1; +#X obj 14 5 inlet; +#X msg 107 198 1 45 \, 2 135 \, 3 225 \, 4 315; +#X text 670 112 -180 <= phi <= +180; +#X text 231 115 input: one mul-factor for each; +#X text 655 12 n_ao = ambisonic-order; +#X text 667 49 all angles in degree; +#X text 276 126 ambisonic order group to suppress the side-lobe-phenomena +; +#X text 273 370 of all (real + phantom) loudspeaker positions \,; +#X text 274 394 and calculates the pseudo inverse.; +#X text 277 382 multiplicates the ambi order weight; +#X text 536 297 mirror_weight; +#X text 275 323 phantom speaker with the factor "mirror_weight" and +adds; +#X text 231 38 input: singularity range; +#X text 274 49 when calculating the inverse of the matrix by gauss +; +#X text 274 59 algorithm \, you have to divide a row by a certain number +\,; +#X text 274 79 outside of this range (> sing_range \, or < -sing_range). +; +#X text 274 91 Otherwise we say \, this matrix is singular.; +#X text 274 69 to achieve the identity matrix. This number has to be +; +#X text 640 23 n_re_ls = number of real loudspeakers; +#X text 640 35 n_vi_ls = number of virtual phantom loudspeakers; +#X text 271 197 input: re_ls_index + phi .. 2-dimensional +; +#X text 271 208 input: re_ls_index + theta + phi .. 3-dimensional +; +#X text 231 241 input: vi_ls_index + phi .. 2-dimensional +; +#X text 231 252 input: vi_ls_index + theta + phi .. 3-dimensional +; +#X text 670 100 -90 <= theta <= +90; +#X text 662 76 1 <= re_ls_index <= n_re_ls; +#X text 662 87 1 <= vi_ls_index <= n_vi_ls; +#X text 313 219 encodes the re_ls_index row of a matrix; +#X text 274 264 encodes the (re_ls_index + vi_ls_index) row of a matrix +; +#X text 275 275 we need them to achieve a nonsingular matrix; +#X obj 14 45 t b b b b b b b b b b b; +#X obj 27 584 pp calc_reduced; +#X msg 27 562 1 \, 2 \, 3; +#X msg 40 506 1 \, 2 \, 3; +#X msg 53 439 1 \, 2 \, 3 \, 4; +#X obj 53 460 pp check_HRIR_arrays; +#X text 481 150 input: : re_ls_index + left_ear_HRIR_wav_file +; +#X text 230 359 input: starts the encoding; +#X text 230 297 input: vi_ls_index re_ls_index +; +#X text 276 310 multiplies the column "vi_ls_index + re_ls_index" of +; +#X text 274 336 this column to the column "re_ls_index" of real speaker +; +#X text 230 424 input: re_ls_index; +#X text 274 437 checks the existence of the table with the "re_ls_index"-th +; +#X text 274 509 checks the existence of the reduced decoder table; +#X text 275 522 with the "ambi_ch_index"-th index.; +#X text 273 534 [1 .. (2*n_ao+1)] 2d; +#X text 421 534 [1 .. (n_ao+1)*(n_ao+1)] 3d; +#X text 230 561 input: ambi_ch_index; +#X text 275 574 multiplies the matrix of HRIR with the "ambi_ch_index"-th +; +#X text 26 663 to bin_ambi_reduced_decode_fft2; +#X text 524 162 and outputs on the left 2 symbols (table + wav); +#X text 230 611 input: outputs a list of 2 floats; +#X text 273 633 one means symmetric \, two means asymmetric column +of; +#X text 273 644 reduced decoder matrix. (message is especially for +; +#X text 253 223 ____________________________________________________________ +; +#X text 253 279 ____________________________________________________________ +; +#X text 253 340 ____________________________________________________________ +; +#X text 253 398 ____________________________________________________________ +; +#X text 253 476 ____________________________________________________________ +; +#X text 253 539 ____________________________________________________________ +; +#X text 253 592 ____________________________________________________________ +; +#X text 253 662 ____________________________________________________________ +; +#X text 255 95 ____________________________________________________________ +; +#X text 496 168 ____________________________________________________________ +; +#X text 636 58 _________________________________________________; +#X text 636 121 _________________________________________________; +#X text 66 24 in this order; +#X text 275 655 matrix object "spec2_matrix_bundle_stat~"; +#X obj 40 527 pp check_HRIR_RED_arrays; +#X text 230 496 input: ambi_ch_index; +#X text 273 587 column of the decoder matrix; +#X text 274 462 and multiplies this HRIR with the fadeout table; +#X text 275 450 index of the HRIR from loudspeaker to the left ear +; +#X text 273 622 second float is the index \, first float is one or +two \,; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 5 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 9 0 0 0; +#X connect 10 0 3 0; +#X connect 11 0 9 0; +#X connect 12 0 7 0; +#X connect 13 0 45 0; +#X connect 14 0 8 0; +#X connect 15 0 13 0; +#X connect 16 0 4 0; +#X connect 45 0 2 0; +#X connect 45 1 47 0; +#X connect 45 2 48 0; +#X connect 45 3 49 0; +#X connect 45 4 1 0; +#X connect 45 7 16 0; +#X connect 45 8 6 0; +#X connect 45 9 14 0; +#X connect 45 10 11 0; +#X connect 46 0 0 0; +#X connect 47 0 46 0; +#X connect 48 0 83 0; +#X connect 49 0 50 0; +#X connect 50 0 0 0; +#X connect 83 0 0 0; +#X restore 38 111 pd input_messages; +#X text 108 203 load control of Head Related; +#X text 108 215 Impulse Responses; +#X text 21 12 ambi_reduced_decode_fir2; +#X text 446 33 of HRIRs; +#X obj 29 423 table \$0_1_HRIR 128; +#X obj 29 443 table \$0_2_HRIR 128; +#X obj 29 463 table \$0_3_HRIR 128; +#X obj 29 483 table \$0_4_HRIR 128; +#X obj 30 509 table \$0_fadeout 128; +#X obj 265 418 table \$0_1_HRIR_RED 128; +#X obj 265 438 table \$0_2_HRIR_RED 128; +#X obj 265 458 table \$0_3_HRIR_RED 128; +#X text 407 203 8.arg: number of phantom loudspeakers; +#X text 407 193 7.arg: number of real loudspeakers; +#X text 407 183 6.arg: ambisonic dimension; +#X text 407 173 5.arg: ambisonic order; +#X text 407 163 4.arg: last part of HRIR fadeout window table +name; +#X text 407 153 3.arg: last part of reduced HRIR table name +; +#X text 407 213 9.arg: FIR-size = effective HRIR-length; +#X obj 38 165 bin_ambi_reduced_decode_fir2 \$0 HRIR HRIR_RED fadeout +1 2 4 0 128; +#X connect 1 0 10 0; +#X connect 1 1 8 2; +#X connect 2 0 0 0; +#X connect 3 0 14 0; +#X connect 4 0 8 1; +#X connect 8 0 2 0; +#X connect 9 0 11 0; +#X connect 10 0 12 0; +#X connect 10 1 9 0; +#X connect 10 2 11 1; +#X connect 11 0 4 0; +#X connect 12 0 8 0; +#X connect 13 0 28 0; +#X connect 28 0 48 0; +#X connect 48 0 1 0; +#X connect 48 1 3 0; diff --git a/help/L0e045a.wav b/help/L0e045a.wav deleted file mode 100644 index eab0f9f..0000000 Binary files a/help/L0e045a.wav and /dev/null differ diff --git a/help/L0e135a.wav b/help/L0e135a.wav deleted file mode 100644 index 3926f3e..0000000 Binary files a/help/L0e135a.wav and /dev/null differ diff --git a/help/L0e225a.wav b/help/L0e225a.wav deleted file mode 100644 index a182570..0000000 Binary files a/help/L0e225a.wav and /dev/null differ diff --git a/help/L0e315a.wav b/help/L0e315a.wav deleted file mode 100644 index a5af5f9..0000000 Binary files a/help/L0e315a.wav and /dev/null differ diff --git a/help/ambi_reduced_decode_fft2-help.pd b/help/ambi_reduced_decode_fft2-help.pd deleted file mode 100644 index fe3fb26..0000000 --- a/help/ambi_reduced_decode_fft2-help.pd +++ /dev/null @@ -1,275 +0,0 @@ -#N canvas 87 6 761 654 10; -#X obj 29 365 soundfiler; -#X obj 38 203 unpack s s; -#X msg 29 344 read -skip \$1 \$2 \$3; -#X obj 345 335 pp element; -#X obj 56 299 mergefilename /; -#X text 344 373 multiplexer control indices; -#X text 340 384 for spec2_matrix_bundle_stat~; -#X text 367 133 1.arg: unique-number used as table-name-prefix -; -#X obj 29 323 pack f s s; -#X text 367 183 6.arg: ambisonic order; -#X text 367 193 7.arg: ambisonic dimension; -#X text 367 203 8.arg: number of real loudspeakers; -#X text 367 213 9.arg: number of phantom loudspeakers; -#X text 361 223 10.arg: FFT-size = 2 x effective HRIR-length -; -#X obj 38 165 bin_ambi_reduced_decode_fft2 \$0 HRIR HRTF_re HRTF_im -fadeout 1 2 4 0 256; -#X obj 30 509 table \$0_fadeout 256; -#X obj 56 251 symbol .; -#X obj 38 226 t b b s; -#X obj 56 273 pack s s; -#X obj 29 260 f 0; -#X obj 38 60 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 345 356 print; -#X obj 29 423 table \$0_1_HRIR 256; -#X obj 265 418 table \$0_1_HRTF_re 256; -#X obj 405 418 table \$0_1_HRTF_im 256; -#X obj 29 483 table \$0_4_HRIR 256; -#X obj 29 463 table \$0_3_HRIR 256; -#X obj 29 443 table \$0_2_HRIR 256; -#X obj 265 438 table \$0_2_HRTF_re 256; -#X obj 265 458 table \$0_3_HRTF_re 256; -#X obj 405 458 table \$0_3_HRTF_im 256; -#X obj 405 438 table \$0_2_HRTF_im 256; -#X text 21 12 ambi_reduced_decode_fft2; -#X text 367 143 2.arg: last part of left HRIR table name; -#X text 367 173 5.arg: last part of HRIR fadeout window table -name; -#N canvas 0 0 465 384 init_fadeout 0; -#X obj 124 23 loadbang; -#X obj 124 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 124 73 for++ 0 127; -#X obj 124 144 t b; -#X msg 124 164 1; -#X obj 124 123 moses 95; -#X obj 167 144 - 95; -#X obj 167 166 / 32; -#X obj 167 220 * 3.14159; -#X obj 167 264 t f f; -#X obj 172 286 *; -#X obj 172 317 tabwrite \$0_fadeout; -#X obj 270 162 + 128; -#X msg 270 185 0 \$1; -#X obj 153 97 t f f f; -#X obj 167 241 cos; -#X obj 167 199 / 2; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 2 0 14 0; -#X connect 3 0 4 0; -#X connect 4 0 11 0; -#X connect 5 0 3 0; -#X connect 5 1 6 0; -#X connect 6 0 7 0; -#X connect 7 0 16 0; -#X connect 8 0 15 0; -#X connect 9 0 10 0; -#X connect 9 1 10 1; -#X connect 10 0 11 0; -#X connect 12 0 13 0; -#X connect 13 0 11 0; -#X connect 14 0 5 0; -#X connect 14 1 11 1; -#X connect 14 2 12 0; -#X connect 15 0 9 0; -#X connect 16 0 8 0; -#X restore 157 510 pd init_fadeout; -#X text 87 585 IEM KUG; -#X text 71 573 musil; -#X text 101 573 @; -#X text 107 573 iem.at; -#X text 70 595 Graz \, Austria; -#X text 22 562 (c) Thomas Musil 2000 - 2006; -#X text 211 40 up to 12.Order 2-dimensional; -#X text 208 28 up to 5.Order 3-dimensional or; -#X text 367 153 3.arg: last part of real reduced HRTF table -name; -#X text 367 163 4.arg: last part of imag reduced HRTF table -name; -#X text 220 14 AMBISONIC BINAURAL DECODING; -#X text 446 33 of HRTF-spectra; -#X text 429 20 calculates a reduced set; -#X obj 39 112 cnv 15 102 15 empty empty empty 20 12 0 14 -260818 -66577 -0; -#N canvas 0 5 1012 718 input_messages 0; -#X obj 147 645 outlet; -#X msg 80 324 calc_pinv; -#X msg 14 621 calc_sym; -#X obj 93 277 pp pht_ls; -#X obj 107 222 pp real_ls; -#X obj 120 178 pp load_HRIR; -#X msg 120 158 1 L0e045a.wav \, 2 L0e135a.wav \, 3 L0e225a.wav \, 4 -L0e315a.wav; -#X obj 67 396 pp ipht_ireal_muladd; -#X obj 133 130 pp ambi_weight; -#X obj 147 86 pp sing_range; -#X msg 93 257 1 -90 0; -#X msg 147 66 1e-010; -#X msg 67 375 1 4 0.707; -#X obj 14 26 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X msg 133 110 1 1; -#X obj 14 5 inlet; -#X msg 107 202 1 45 \, 2 135 \, 3 225 \, 4 315; -#X text 670 112 -180 <= phi <= +180; -#X text 231 115 input: one mul-factor for each; -#X text 655 12 n_ao = ambisonic-order; -#X text 667 49 all angles in degree; -#X text 276 126 ambisonic order group to suppress the side-lobe-phenomena -; -#X text 273 317 of all (real + phantom) loudspeaker positions \,; -#X text 274 341 and calculates the pseudo inverse.; -#X text 277 329 multiplicates the ambi order weight; -#X text 536 366 mirror_weight; -#X text 275 392 phantom speaker with the factor "mirror_weight" and -adds; -#X text 231 38 input: singularity range; -#X text 274 49 when calculating the inverse of the matrix by gauss -; -#X text 274 59 algorithm \, you have to divide a row by a certain number -\,; -#X text 274 79 outside of this range (> sing_range \, or < -sing_range). -; -#X text 274 91 Otherwise we say \, this matrix is singular.; -#X text 274 69 to achieve the identity matrix. This number has to be -; -#X text 640 23 n_re_ls = number of real loudspeakers; -#X text 640 35 n_vi_ls = number of virtual phantom loudspeakers; -#X text 298 201 input: re_ls_index + phi .. 2-dimensional -; -#X text 298 212 input: re_ls_index + theta + phi .. 3-dimensional -; -#X text 230 247 input: vi_ls_index + phi .. 2-dimensional -; -#X text 230 258 input: vi_ls_index + theta + phi .. 3-dimensional -; -#X text 670 100 -90 <= theta <= +90; -#X text 662 76 1 <= re_ls_index <= n_re_ls; -#X text 662 87 1 <= vi_ls_index <= n_vi_ls; -#X text 340 223 encodes the re_ls_index row of a matrix; -#X text 273 270 encodes the (re_ls_index + vi_ls_index) row of a matrix -; -#X text 274 281 we need them to achieve a nonsingular matrix; -#X obj 14 45 t b b b b b b b b b b b; -#X obj 27 586 pp calc_reduced; -#X msg 27 564 1 \, 2 \, 3; -#X obj 40 532 pp check_HRTF_arrays; -#X msg 40 511 1 \, 2 \, 3; -#X msg 53 437 1 \, 2 \, 3 \, 4; -#X obj 53 458 pp check_HRIR_arrays; -#X text 491 157 input: : re_ls_index + left_ear_HRIR_wav_file -; -#X text 230 306 input: starts the encoding; -#X text 230 366 input: vi_ls_index re_ls_index -; -#X text 276 379 multiplies the column "vi_ls_index + re_ls_index" of -; -#X text 274 405 this column to the column "re_ls_index" of real speaker -; -#X text 227 435 input: re_ls_index; -#X text 271 448 checks the existence of the table with the "re_ls_index"-th -; -#X text 271 511 checks the existence of the reduced decoder table; -#X text 227 498 input: ambi_ch_index; -#X text 272 524 with the "ambi_ch_index"-th index.; -#X text 270 536 [1 .. (2*n_ao+1)] 2d; -#X text 418 536 [1 .. (n_ao+1)*(n_ao+1)] 3d; -#X text 230 561 input: ambi_ch_index; -#X text 275 574 multiplies the matrix of HRIR with the "ambi_ch_index"-th -; -#X text 273 587 column of the decoder matrix and does a real FFT; -#X text 26 663 to bin_ambi_reduced_decode_fft2; -#X text 534 169 and outputs on the left 2 symbols (table + wav); -#X text 230 611 input: outputs a list of 2 floats; -#X text 273 633 one means symmetric \, two means asymmetric column -of; -#X text 273 644 reduced decoder matrix. (message is especially for -; -#X text 280 227 ____________________________________________________________ -; -#X text 252 285 ____________________________________________________________ -; -#X text 253 409 ____________________________________________________________ -; -#X text 253 345 ____________________________________________________________ -; -#X text 250 480 ____________________________________________________________ -; -#X text 250 541 ____________________________________________________________ -; -#X text 253 592 ____________________________________________________________ -; -#X text 253 662 ____________________________________________________________ -; -#X text 255 95 ____________________________________________________________ -; -#X text 506 178 ____________________________________________________________ -; -#X text 636 58 _________________________________________________; -#X text 636 121 _________________________________________________; -#X text 66 24 in this order; -#X text 275 655 matrix object "spec2_matrix_bundle_stat~"; -#X text 250 133 ____________________________________________________________ -; -#X text 276 178 ____________________________________________________________ -; -#X text 272 461 index of the HRIR from loudspeaker to the left ear -; -#X text 271 473 and multiplies this HRIR with the fadeout table; -#X text 273 622 second float is the index \, first float is one or -two \,; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 0 0; -#X connect 8 0 0 0; -#X connect 9 0 0 0; -#X connect 10 0 3 0; -#X connect 11 0 9 0; -#X connect 12 0 7 0; -#X connect 13 0 45 0; -#X connect 14 0 8 0; -#X connect 15 0 13 0; -#X connect 16 0 4 0; -#X connect 45 0 2 0; -#X connect 45 1 47 0; -#X connect 45 2 49 0; -#X connect 45 3 50 0; -#X connect 45 5 1 0; -#X connect 45 7 16 0; -#X connect 45 8 6 0; -#X connect 45 9 14 0; -#X connect 45 10 11 0; -#X connect 46 0 0 0; -#X connect 47 0 46 0; -#X connect 48 0 0 0; -#X connect 49 0 48 0; -#X connect 50 0 51 0; -#X connect 51 0 0 0; -#X restore 38 111 pd input_messages; -#X text 108 203 load control of Head Related; -#X text 108 215 Impulse Responses; -#X connect 1 0 17 0; -#X connect 1 1 8 2; -#X connect 2 0 0 0; -#X connect 3 0 21 0; -#X connect 4 0 8 1; -#X connect 8 0 2 0; -#X connect 14 0 1 0; -#X connect 14 1 3 0; -#X connect 16 0 18 0; -#X connect 17 0 19 0; -#X connect 17 1 16 0; -#X connect 17 2 18 1; -#X connect 18 0 4 0; -#X connect 19 0 8 0; -#X connect 20 0 50 0; -#X connect 50 0 14 0; diff --git a/help/ambi_reduced_decode_fir2-help.pd b/help/ambi_reduced_decode_fir2-help.pd deleted file mode 100644 index e9ad7fa..0000000 --- a/help/ambi_reduced_decode_fir2-help.pd +++ /dev/null @@ -1,265 +0,0 @@ -#N canvas 87 6 818 654 10; -#X obj 29 365 soundfiler; -#X obj 38 203 unpack s s; -#X msg 29 344 read -skip \$1 \$2 \$3; -#X obj 387 335 pp element; -#X obj 56 299 mergefilename /; -#X text 386 373 multiplexer control indices; -#X text 382 384 for spec2_matrix_bundle_stat~; -#X text 407 133 1.arg: unique-number used as table-name-prefix -; -#X obj 29 323 pack f s s; -#X obj 56 251 symbol .; -#X obj 38 226 t b b s; -#X obj 56 273 pack s s; -#X obj 29 260 f 0; -#X obj 38 60 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 387 356 print; -#X text 407 143 2.arg: last part of left HRIR table name; -#N canvas 0 0 469 388 init_fadeout 0; -#X obj 124 23 loadbang; -#X obj 124 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 124 73 for++ 0 127; -#X obj 124 144 t b; -#X msg 124 164 1; -#X obj 124 123 moses 95; -#X obj 167 144 - 95; -#X obj 167 166 / 32; -#X obj 167 220 * 3.14159; -#X obj 167 264 t f f; -#X obj 172 286 *; -#X obj 172 317 tabwrite \$0_fadeout; -#X obj 270 162 + 128; -#X msg 270 185 0 \$1; -#X obj 153 97 t f f f; -#X obj 167 241 cos; -#X obj 167 199 / 2; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 2 0 14 0; -#X connect 3 0 4 0; -#X connect 4 0 11 0; -#X connect 5 0 3 0; -#X connect 5 1 6 0; -#X connect 6 0 7 0; -#X connect 7 0 16 0; -#X connect 8 0 15 0; -#X connect 9 0 10 0; -#X connect 9 1 10 1; -#X connect 10 0 11 0; -#X connect 12 0 13 0; -#X connect 13 0 11 0; -#X connect 14 0 5 0; -#X connect 14 1 11 1; -#X connect 14 2 12 0; -#X connect 15 0 9 0; -#X connect 16 0 8 0; -#X restore 157 510 pd init_fadeout; -#X text 87 585 IEM KUG; -#X text 71 573 musil; -#X text 101 573 @; -#X text 107 573 iem.at; -#X text 70 595 Graz \, Austria; -#X text 22 562 (c) Thomas Musil 2000 - 2006; -#X text 211 40 up to 12.Order 2-dimensional; -#X text 208 28 up to 5.Order 3-dimensional or; -#X text 220 14 AMBISONIC BINAURAL DECODING; -#X text 429 20 calculates a reduced set; -#X obj 39 112 cnv 15 102 15 empty empty empty 20 12 0 14 -260818 -66577 -0; -#N canvas 0 5 1006 718 input_messages 0; -#X obj 197 645 outlet; -#X msg 67 383 calc_pinv; -#X msg 14 615 calc_sym; -#X obj 93 273 pp pht_ls; -#X obj 107 218 pp real_ls; -#X obj 120 174 pp load_HRIR; -#X msg 120 154 1 L0e045a.wav \, 2 L0e135a.wav \, 3 L0e225a.wav \, 4 -L0e315a.wav; -#X obj 80 329 pp ipht_ireal_muladd; -#X obj 133 130 pp ambi_weight; -#X obj 147 86 pp sing_range; -#X msg 93 253 1 -90 0; -#X msg 147 66 1e-010; -#X msg 80 308 1 4 0.707; -#X obj 14 26 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X msg 133 110 1 1; -#X obj 14 5 inlet; -#X msg 107 198 1 45 \, 2 135 \, 3 225 \, 4 315; -#X text 670 112 -180 <= phi <= +180; -#X text 231 115 input: one mul-factor for each; -#X text 655 12 n_ao = ambisonic-order; -#X text 667 49 all angles in degree; -#X text 276 126 ambisonic order group to suppress the side-lobe-phenomena -; -#X text 273 370 of all (real + phantom) loudspeaker positions \,; -#X text 274 394 and calculates the pseudo inverse.; -#X text 277 382 multiplicates the ambi order weight; -#X text 536 297 mirror_weight; -#X text 275 323 phantom speaker with the factor "mirror_weight" and -adds; -#X text 231 38 input: singularity range; -#X text 274 49 when calculating the inverse of the matrix by gauss -; -#X text 274 59 algorithm \, you have to divide a row by a certain number -\,; -#X text 274 79 outside of this range (> sing_range \, or < -sing_range). -; -#X text 274 91 Otherwise we say \, this matrix is singular.; -#X text 274 69 to achieve the identity matrix. This number has to be -; -#X text 640 23 n_re_ls = number of real loudspeakers; -#X text 640 35 n_vi_ls = number of virtual phantom loudspeakers; -#X text 271 197 input: re_ls_index + phi .. 2-dimensional -; -#X text 271 208 input: re_ls_index + theta + phi .. 3-dimensional -; -#X text 231 241 input: vi_ls_index + phi .. 2-dimensional -; -#X text 231 252 input: vi_ls_index + theta + phi .. 3-dimensional -; -#X text 670 100 -90 <= theta <= +90; -#X text 662 76 1 <= re_ls_index <= n_re_ls; -#X text 662 87 1 <= vi_ls_index <= n_vi_ls; -#X text 313 219 encodes the re_ls_index row of a matrix; -#X text 274 264 encodes the (re_ls_index + vi_ls_index) row of a matrix -; -#X text 275 275 we need them to achieve a nonsingular matrix; -#X obj 14 45 t b b b b b b b b b b b; -#X obj 27 584 pp calc_reduced; -#X msg 27 562 1 \, 2 \, 3; -#X msg 40 506 1 \, 2 \, 3; -#X msg 53 439 1 \, 2 \, 3 \, 4; -#X obj 53 460 pp check_HRIR_arrays; -#X text 481 150 input: : re_ls_index + left_ear_HRIR_wav_file -; -#X text 230 359 input: starts the encoding; -#X text 230 297 input: vi_ls_index re_ls_index -; -#X text 276 310 multiplies the column "vi_ls_index + re_ls_index" of -; -#X text 274 336 this column to the column "re_ls_index" of real speaker -; -#X text 230 424 input: re_ls_index; -#X text 274 437 checks the existence of the table with the "re_ls_index"-th -; -#X text 274 509 checks the existence of the reduced decoder table; -#X text 275 522 with the "ambi_ch_index"-th index.; -#X text 273 534 [1 .. (2*n_ao+1)] 2d; -#X text 421 534 [1 .. (n_ao+1)*(n_ao+1)] 3d; -#X text 230 561 input: ambi_ch_index; -#X text 275 574 multiplies the matrix of HRIR with the "ambi_ch_index"-th -; -#X text 26 663 to bin_ambi_reduced_decode_fft2; -#X text 524 162 and outputs on the left 2 symbols (table + wav); -#X text 230 611 input: outputs a list of 2 floats; -#X text 273 633 one means symmetric \, two means asymmetric column -of; -#X text 273 644 reduced decoder matrix. (message is especially for -; -#X text 253 223 ____________________________________________________________ -; -#X text 253 279 ____________________________________________________________ -; -#X text 253 340 ____________________________________________________________ -; -#X text 253 398 ____________________________________________________________ -; -#X text 253 476 ____________________________________________________________ -; -#X text 253 539 ____________________________________________________________ -; -#X text 253 592 ____________________________________________________________ -; -#X text 253 662 ____________________________________________________________ -; -#X text 255 95 ____________________________________________________________ -; -#X text 496 168 ____________________________________________________________ -; -#X text 636 58 _________________________________________________; -#X text 636 121 _________________________________________________; -#X text 66 24 in this order; -#X text 275 655 matrix object "spec2_matrix_bundle_stat~"; -#X obj 40 527 pp check_HRIR_RED_arrays; -#X text 230 496 input: ambi_ch_index; -#X text 273 587 column of the decoder matrix; -#X text 274 462 and multiplies this HRIR with the fadeout table; -#X text 275 450 index of the HRIR from loudspeaker to the left ear -; -#X text 273 622 second float is the index \, first float is one or -two \,; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 5 0; -#X connect 7 0 0 0; -#X connect 8 0 0 0; -#X connect 9 0 0 0; -#X connect 10 0 3 0; -#X connect 11 0 9 0; -#X connect 12 0 7 0; -#X connect 13 0 45 0; -#X connect 14 0 8 0; -#X connect 15 0 13 0; -#X connect 16 0 4 0; -#X connect 45 0 2 0; -#X connect 45 1 47 0; -#X connect 45 2 48 0; -#X connect 45 3 49 0; -#X connect 45 4 1 0; -#X connect 45 7 16 0; -#X connect 45 8 6 0; -#X connect 45 9 14 0; -#X connect 45 10 11 0; -#X connect 46 0 0 0; -#X connect 47 0 46 0; -#X connect 48 0 83 0; -#X connect 49 0 50 0; -#X connect 50 0 0 0; -#X connect 83 0 0 0; -#X restore 38 111 pd input_messages; -#X text 108 203 load control of Head Related; -#X text 108 215 Impulse Responses; -#X text 21 12 ambi_reduced_decode_fir2; -#X text 446 33 of HRIRs; -#X obj 29 423 table \$0_1_HRIR 128; -#X obj 29 443 table \$0_2_HRIR 128; -#X obj 29 463 table \$0_3_HRIR 128; -#X obj 29 483 table \$0_4_HRIR 128; -#X obj 30 509 table \$0_fadeout 128; -#X obj 265 418 table \$0_1_HRIR_RED 128; -#X obj 265 438 table \$0_2_HRIR_RED 128; -#X obj 265 458 table \$0_3_HRIR_RED 128; -#X text 407 203 8.arg: number of phantom loudspeakers; -#X text 407 193 7.arg: number of real loudspeakers; -#X text 407 183 6.arg: ambisonic dimension; -#X text 407 173 5.arg: ambisonic order; -#X text 407 163 4.arg: last part of HRIR fadeout window table -name; -#X text 407 153 3.arg: last part of reduced HRIR table name -; -#X text 407 213 9.arg: FIR-size = effective HRIR-length; -#X obj 38 165 bin_ambi_reduced_decode_fir2 \$0 HRIR HRIR_RED fadeout -1 2 4 0 128; -#X connect 1 0 10 0; -#X connect 1 1 8 2; -#X connect 2 0 0 0; -#X connect 3 0 14 0; -#X connect 4 0 8 1; -#X connect 8 0 2 0; -#X connect 9 0 11 0; -#X connect 10 0 12 0; -#X connect 10 1 9 0; -#X connect 10 2 11 1; -#X connect 11 0 4 0; -#X connect 12 0 8 0; -#X connect 13 0 28 0; -#X connect 28 0 48 0; -#X connect 48 0 1 0; -#X connect 48 1 3 0; -- cgit v1.2.1