From 1eef182b31a4cb2f55e26e7527469fc2902368a3 Mon Sep 17 00:00:00 2001 From: "N.N." Date: Mon, 28 Feb 2005 13:10:41 +0000 Subject: cyclone alpha53 (see notes.txt for cyclone, bin and shared) svn path=/trunk/externals/miXed/; revision=2590 --- cyclone/sickle/matrix.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'cyclone/sickle/matrix.c') 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, -- cgit v1.2.1