diff options
author | N.N. <krzyszcz@users.sourceforge.net> | 2005-02-28 13:10:41 +0000 |
---|---|---|
committer | N.N. <krzyszcz@users.sourceforge.net> | 2005-02-28 13:10:41 +0000 |
commit | 1eef182b31a4cb2f55e26e7527469fc2902368a3 (patch) | |
tree | a08b51f0c41fb879f4d62f3bb4a6d5860d22b4fe /cyclone/sickle/matrix.c | |
parent | bfb359fd22e61faaca3a6e49ad3b7a81f2d71551 (diff) |
cyclone alpha53 (see notes.txt for cyclone, bin and shared)
svn path=/trunk/externals/miXed/; revision=2590
Diffstat (limited to 'cyclone/sickle/matrix.c')
-rw-r--r-- | cyclone/sickle/matrix.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/cyclone/sickle/matrix.c b/cyclone/sickle/matrix.c index a0772dc..a1c1ef4 100644 --- a/cyclone/sickle/matrix.c +++ b/cyclone/sickle/matrix.c @@ -9,7 +9,7 @@ #include "sickle/sic.h" #ifdef KRZYSZCZ -#define MATRIX_DEBUG +//#define MATRIX_DEBUG #endif #define MATRIX_DEFGAIN 0. /* CHECKED */ @@ -124,6 +124,32 @@ static void matrix_clear(t_matrix *x) x->x_cells[i] = 0; } +static void matrix_set(t_matrix *x, t_floatarg f1, t_floatarg f2) +{ + int i, onoff; + float gain = f1; + static int warned = 0; + if (fittermax_get() && !warned) + { + fittermax_warning(*(t_pd *)x, "'set' not supported in Max"); + warned = 1; + } + onoff = (gain < -MATRIX_GAINEPSILON || gain > MATRIX_GAINEPSILON); + for (i = 0; i < x->x_ncells; i++) + x->x_cells[i] = onoff; + if (x->x_gains) + { + float ramp = (f2 < MATRIX_MINRAMP ? 0. : f2); + for (i = 0; i < x->x_ncells; i++) + { + if (onoff) /* LATER rethink */ + x->x_gains[i] = gain; + x->x_ramps[i] = ramp; + matrix_retarget(x, i); + } + } +} + /* CHECKED c74's refman and help patch are wrong about int pairs -- the actual syntax is "[dis]connect indx ondx1 [ondx2 [ondx3..." */ static void matrix_connect(t_matrix *x, t_symbol *s, int ac, t_atom *av) @@ -543,6 +569,8 @@ void matrix_tilde_setup(void) class_addlist(matrix_class, matrix_list); class_addmethod(matrix_class, (t_method)matrix_clear, gensym("clear"), 0); + class_addmethod(matrix_class, (t_method)matrix_set, + gensym("set"), A_FLOAT, A_DEFFLOAT, 0); class_addmethod(matrix_class, (t_method)matrix_connect, gensym("connect"), A_GIMME, 0); class_addmethod(matrix_class, (t_method)matrix_connect, |