diff options
author | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2010-03-08 16:45:20 +0000 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2010-03-08 16:45:20 +0000 |
commit | 600a0153c0d196a596309226cabadb628db20b56 (patch) | |
tree | 1db894b5077577c9ade765529329b2df1f4c9cae /src/sleepgrain.c | |
parent | 1c04c1e8987499231dcb3c12f4a25d0eff6b0733 (diff) |
a wee external to get/set the current sleepgrain
svn path=/trunk/externals/zexy/; revision=13195
Diffstat (limited to 'src/sleepgrain.c')
-rw-r--r-- | src/sleepgrain.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/sleepgrain.c b/src/sleepgrain.c new file mode 100644 index 0000000..aeda70b --- /dev/null +++ b/src/sleepgrain.c @@ -0,0 +1,74 @@ +/****************************************************** + * + * zexy - implementation file + * + * copyleft (c) IOhannes m zmölnig + * + * 1999:forum::für::umläute:2004 + * + * institute of electronic music and acoustics (iem) + * + ****************************************************** + * + * license: GNU General Public License v.2 + * + ******************************************************/ + +/* + sleepgrain : get (and set?) the sleepgrain of Pd +*/ + +#include "zexy.h" + +EXTERN int* get_sys_sleepgrain(void ) ; + +/* ------------------------- sleepgrain ------------------------------- */ + + +static t_class *sleepgrain_class; + +typedef struct _sleepgrain +{ + t_object x_obj; + +} t_sleepgrain; + + +static void sleepgrain_bang(t_sleepgrain *x) +{ + int*current=get_sys_sleepgrain(); + t_float f=*current; + outlet_float(x->x_obj.ob_outlet, f); +} + +static void sleepgrain_float(t_sleepgrain *x, t_float f) +{ + int value=(int)f; + int*current=get_sys_sleepgrain(); + + if(value<=0) { + pd_error(x, "[sleepgrain]: sleepgrain cannot be <= 0"); + return; + } + + *current=value; + + // outlet_float(x->x_obj.ob_outlet, f); +} + +static void *sleepgrain_new(void) +{ + t_sleepgrain *x = (t_sleepgrain *)pd_new(sleepgrain_class); + outlet_new(&x->x_obj, 0); + return (x); +} + +void sleepgrain_setup(void) +{ + sleepgrain_class = class_new(gensym("sleepgrain"), (t_newmethod)sleepgrain_new, + 0, sizeof(t_sleepgrain), 0, A_NULL); + + class_addbang (sleepgrain_class, sleepgrain_bang); + class_addfloat (sleepgrain_class, sleepgrain_float); + zexy_register("sleepgrain"); +} |