#N canvas 59 -12 889 598 12;
#X declare -lib iemmatrix;
#X obj 68 271 osc~ 100;
#X obj 68 297 *~ 0.2;
#X obj 112 320 osc~ 1000;
#X obj 112 346 *~ 1.5;
#X obj 157 295 osc~ 432;
#X obj 68 411 env~;
#X floatatom 68 435 4 0 0 0 - - - 0;
#X obj 127 410 env~;
#X floatatom 127 434 4 0 0 0 - - - 0;
#X obj 187 410 env~;
#X floatatom 187 434 4 0 0 0 - - - 0;
#X obj 247 409 env~;
#X floatatom 247 433 4 0 0 0 - - - 0;
#X floatatom 284 350 4 0 0 0 - - - 0;
#X text 332 353 fade time in [ms];
#X msg 265 100 bang;
#X obj 265 127 mtx_eye 3 4;
#X msg 362 100 bang;
#X obj 362 127 mtx_egg 3 4;
#X msg 261 179 bang;
#X msg 362 178 bang;
#X obj 261 206 mtx_ones 3 4;
#X obj 362 205 mtx_zeros 3 4;
#X obj 68 371 matrix~ 3 4 100 .......;
#X obj 158 32 matrix~;
#X text 236 31 matrix-multiply m IN~signals to n OUT~signals;
#X text 174 60 matrices are interpolated a la line~;
#X text 473 91 the one-before-last inlet eats;
#X text 476 104 matrix-messages to control the gains;
#X text 475 117 of the matrix~;
#X text 484 333 the last inlet gets the fade-time between two matrix-messages.;
#X obj 78 505 matrix~;
#X text 154 503 creation: "matrix~ [<num_in> [<num_out> [<fade_time>]]];
#N canvas 460 154 493 221 META 0;
#X text 12 135 AUTHOR IOhannes m zmoelnig;
#X text 12 155 HELP_PATCH_AUTHORS IOhannes m zmölnig;
#X text 12 5 KEYWORDS signal matrix;
#X text 12 25 LICENSE GPL-2+;
#X text 12 45 DESCRIPTION matrix multiplication of signals (with interpolation), f 67;
#X text 12 64 INLET_0..R-1 input signal;
#X text 12 80 INLET_R matrix;
#X text 12 97 INLET_R+1 interpolation time;
#X text 12 115 OUTLET_0 output signals;
#X obj 13 180 declare -lib iemmatrix;
#X restore 821 556 pd META;
#X text 604 26 OBSOLETE;
#X text 604 46 OBSOLETE;
#X text 64 26 OBSOLETE;
#X text 64 46 OBSOLETE;
#X text 64 36 DEPRECATED;
#X text 604 36 DEPRECATED-->;
#X obj 698 16 cnv 20 100 60 empty empty empty 20 12 0 12 #ff8300 #404040 0;
#N canvas 34 69 743 638 LEGACY 0;
#X obj 50 163 sig~;
#X floatatom 180 166 5 0 0 0 - - - 0;
#X text 286 127 this object \, accepted the signals at the first inputs \, then the matrix (and finally the fade-time);
#X text 295 163 OUT~^[n] = IN~^[m] * B[m*x];
#X obj 147 317 sig~;
#X msg 97 283 time 100;
#X obj 84 163 sig~;
#X obj 50 188 matrix~ 2 3 100;
#X obj 118 135 mtx 2 3;
#X obj 25 346 matrix_mul_line~ 2 3 100;
#X obj 190 317 sig~;
#X text 288 262 this object \, accepted the signals at the inlets \; all! messages went to the 1st inlet;
#X obj 25 284 mtx 3 2;
#X text 297 298 OUT~^[n] = B[n*m] * IN~^[m];
#X text 288 183 this is a _very_ unusual way to notate signal matrix multiplications;
#X text 290 318 this conforms to the way how signal matrix multiplications is usually notated \, however \, we didn't like that the incoming matrix had different dimensions than the object ([mtx N M] vs [matrix_mul_line~ M N]) \; and the 1st inlet was a bit overloaded.;
#X text 69 37 [matrix~] and [matrix_mul_line~] are 2 predecessors of a shiny new [mtx_*~].;
#X text 84 78 we believe that the old objects had some design flaws:;
#X text 226 471 - it has a clean interface;
#X text 226 491 - it uses standard matrix notation: OUT~[1*n]^ = A[n*m] * IN~^[m*1], f 67;
#X text 225 512 - it supports multichannel connections (and dynamic number channels, f 67;
#X text 206 446 conversely \, the new [mtx_*~] should be used in any new project:, f 64;
#X text 208 548 for compatibility's sake we probably will not completely remove the old and deprecated versions \, but you will get annoying warnings whenever you use them.;
#X obj 34 465 sig~;
#X obj 75 465 sig~;
#X floatatom 115 500 5 0 0 0 - - - 0;
#X obj 2 435 mtx 3 2;
#X obj 2 499 mtx_*~ 3 2 100;
#X obj 2 524 env~;
#X obj 49 524 env~;
#X obj 97 524 env~;
#X obj 26 371 env~;
#X obj 107 371 env~;
#X obj 190 371 env~;
#X obj 50 214 env~;
#X obj 101 214 env~;
#X obj 152 214 env~;
#X connect 0 0 7 0;
#X connect 1 0 7 3;
#X connect 4 0 9 0;
#X connect 5 0 9 0;
#X connect 6 0 7 1;
#X connect 7 0 34 0;
#X connect 7 1 35 0;
#X connect 7 2 36 0;
#X connect 8 0 7 2;
#X connect 9 0 31 0;
#X connect 9 1 32 0;
#X connect 9 2 33 0;
#X connect 10 0 9 1;
#X connect 12 0 9 0;
#X connect 23 0 27 1;
#X connect 24 0 27 2;
#X connect 25 0 27 3;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 27 1 29 0;
#X connect 27 2 30 0;
#X restore 714 36 pd LEGACY;
#X connect 0 0 1 0;
#X connect 1 0 23 0;
#X connect 2 0 3 0;
#X connect 3 0 23 1;
#X connect 4 0 23 2;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 9 0 10 0;
#X connect 11 0 12 0;
#X connect 13 0 23 4;
#X connect 15 0 16 0;
#X connect 16 0 23 3;
#X connect 17 0 18 0;
#X connect 18 0 23 3;
#X connect 19 0 21 0;
#X connect 20 0 22 0;
#X connect 21 0 23 3;
#X connect 22 0 23 3;
#X connect 23 0 5 0;
#X connect 23 1 7 0;
#X connect 23 2 9 0;
#X connect 23 3 11 0;
