aboutsummaryrefslogtreecommitdiff
path: root/source/vthreshold.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/vthreshold.c')
-rw-r--r--source/vthreshold.c106
1 files changed, 0 insertions, 106 deletions
diff --git a/source/vthreshold.c b/source/vthreshold.c
deleted file mode 100644
index 106cf72..0000000
--- a/source/vthreshold.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* --------------------- vthreshold ----------------------------- */
-
-#include "defines.h"
-#include "memory.h"
-
-static t_class *vthreshold_class;
-
-typedef struct _vthreshold
-{
- t_object x_obj;
- t_outlet *x_outlet1; /* bang out for high thresh */
- t_outlet *x_outlet2; /* bang out for low thresh */
- int *x_state; /* 1 = high, 0 = low */
- int x_n;
- float x_hithresh; /* value of high vthreshold */
- float x_lothresh; /* value of low vthreshold */
- float x_hideadtime; /* hi dead */
- float x_lodeadtime; /* lo dead */
-} t_vthreshold;
-
- /* "set" message to specify vthresholds and dead times */
-static void vthreshold_set(t_vthreshold *x,
- t_floatarg hithresh, t_floatarg hideadtime,
- t_floatarg lothresh, t_floatarg lodeadtime,
- t_floatarg nf)
-{
- if (lothresh > hithresh)
- lothresh = hithresh;
- x->x_hithresh = hithresh;
- x->x_hideadtime = hideadtime;
- x->x_lothresh = lothresh;
- x->x_lodeadtime = lodeadtime;
- freebytes(x->x_state,x->x_n);
- x->x_n=(int)nf;
- x->x_state = (int *)getbytes(sizeof(int)*x->x_n);
- memset(x->x_state , 0, x->x_n);
-}
-
-static t_vthreshold *vthreshold_new(t_floatarg hithresh,
- t_floatarg hideadtime, t_floatarg lothresh, t_floatarg lodeadtime, t_floatarg n)
-{
- t_vthreshold *x = (t_vthreshold *)
- pd_new(vthreshold_class);
- x->x_state = 0; /* low state */
- x->x_outlet1 = outlet_new(&x->x_obj, gensym("float"));
- x->x_outlet2 = outlet_new(&x->x_obj, gensym("float"));
- vthreshold_set(x, hithresh, hideadtime, lothresh, lodeadtime, n);
- return (x);
-}
-
-static void vthreshold_free(t_vthreshold *x)
-{
- freebytes(x->x_state,x->x_n);
-}
-
-static void vthreshold_perform(t_vthreshold *x, t_symbol *s, int argc, t_atom *argv)
-{
- int i;
- int *state;
-
- state=x->x_state;
- if (argc>x->x_n) argc=x->x_n;
- for (i=0;i<argc;i++)
- {
- float f;
- f=atom_getfloat(argv++);
-
- if (*state<0)
- {
- if (f>x->x_hithresh)
- {
- outlet_float(x->x_outlet1, (float)i); // on
- *state=1;
- }
- }
- else
- {
- if (f<x->x_lothresh)
- {
- outlet_float(x->x_outlet2, (float)i); // off
- *state=-1;
- }
- }
- state++;
- }
-}
-
-
-static void vthreshold_ff(t_vthreshold *x)
-{
- freebytes(x->x_state,x->x_n);
-}
-
-void vthreshold_setup( void)
-{
- vthreshold_class = class_new(gensym("vthreshold"),
- (t_newmethod)vthreshold_new, (t_method)vthreshold_free,
- sizeof(t_vthreshold), 0,
- A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0);
-
- class_addlist(vthreshold_class, (t_method)vthreshold_perform);
- class_addmethod(vthreshold_class, (t_method)vthreshold_set,
- gensym("set"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
-// class_addmethod(vthreshold_class, (t_method)vthreshold_ft1,
-// gensym("ft1"), A_FLOAT, 0);
-}