From 600a0153c0d196a596309226cabadb628db20b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Mon, 8 Mar 2010 16:45:20 +0000 Subject: a wee external to get/set the current sleepgrain svn path=/trunk/externals/zexy/; revision=13195 --- src/sleepgrain.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/z_zexy.c | 1 + src/z_zexy.h | 1 + 3 files changed, 76 insertions(+) create mode 100644 src/sleepgrain.c 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"); +} diff --git a/src/z_zexy.c b/src/z_zexy.c index 89f19ca..6b78079 100644 --- a/src/z_zexy.c +++ b/src/z_zexy.c @@ -72,6 +72,7 @@ void z_zexy_setup(void) sfrecord_setup(); /* sfrecord */ sgn_tilde_setup(); /* sgn~ */ sigzero_tilde_setup(); /* sigzero~ */ + sleepgrain_setup(); /* sleepgrain */ sort_setup(); /* sort */ step_tilde_setup(); /* step~ */ strcmp_setup(); /* strcmp */ diff --git a/src/z_zexy.h b/src/z_zexy.h index b72a122..c1eb3af 100644 --- a/src/z_zexy.h +++ b/src/z_zexy.h @@ -70,6 +70,7 @@ void sfplay_setup(void); /* sfplay */ void sfrecord_setup(void); /* sfrecord */ void sgn_tilde_setup(void); /* sgn~ */ void sigzero_tilde_setup(void); /* sigzero~ */ +void sleepgrain_setup(void); /* sleepgrain */ void sort_setup(void); /* sort */ void step_tilde_setup(void); /* step~ */ void strcmp_setup(void); /* strcmp */ -- cgit v1.2.1