aboutsummaryrefslogtreecommitdiff
path: root/cyclone/sickle/matrix.c
diff options
context:
space:
mode:
authorN.N. <krzyszcz@users.sourceforge.net>2005-02-28 13:10:41 +0000
committerN.N. <krzyszcz@users.sourceforge.net>2005-02-28 13:10:41 +0000
commit1eef182b31a4cb2f55e26e7527469fc2902368a3 (patch)
treea08b51f0c41fb879f4d62f3bb4a6d5860d22b4fe /cyclone/sickle/matrix.c
parentbfb359fd22e61faaca3a6e49ad3b7a81f2d71551 (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.c30
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,