From 33dd6d603830640766aa1a5fe70137c856e2c145 Mon Sep 17 00:00:00 2001 From: musil Date: Thu, 6 Sep 2012 15:54:46 +0000 Subject: other variable names, t_float to t_sample change, array access 64 bit svn path=/trunk/externals/iemlib/; revision=16193 --- iemlib1/src/iem_pow4~.c | 54 +++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 22 deletions(-) (limited to 'iemlib1/src/iem_pow4~.c') diff --git a/iemlib1/src/iem_pow4~.c b/iemlib1/src/iem_pow4~.c index 38dfbad..a34a490 100644 --- a/iemlib1/src/iem_pow4~.c +++ b/iemlib1/src/iem_pow4~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2012 */ #include "m_pd.h" #include "iemlib.h" @@ -14,37 +14,49 @@ static t_class *iem_pow4_tilde_class; typedef struct _iem_pow4_tilde { t_object x_obj; - t_float x_exp; + t_sample x_exp; t_float x_float_sig_in; } t_iem_pow4_tilde; static void iem_pow4_tilde_ft1(t_iem_pow4_tilde *x, t_floatarg f) { - x->x_exp = f; + x->x_exp = (t_sample)f; } static t_int *iem_pow4_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_iem_pow4_tilde *x = (t_iem_pow4_tilde *)(w[3]); - t_float y=x->x_exp; - t_float f, g; + t_sample exp=x->x_exp; + t_sample f, g; int n = (int)(w[4])/4; while (n--) { - f = *in; - if(f < 0.01f) - f = 0.01f; - else if(f > 1000.0f) - f = 1000.0f; - g = log(f); - f = exp(g*y); - *out++ = f; - *out++ = f; - *out++ = f; - *out++ = f; + f = (t_sample)(*in); + if(f > 0.0) + { + g = log(f); + f = exp(g * exp); + *out++ = f; + *out++ = f; + *out++ = f; + *out++ = f; + + /*g = pow(f, exp); + *out++ = g; + *out++ = g; + *out++ = g; + *out++ = g;*/ + } + else + { + *out++ = 0.0; + *out++ = 0.0; + *out++ = 0.0; + *out++ = 0.0; + } in += 4; } return (w+5); @@ -59,10 +71,10 @@ static void *iem_pow4_tilde_new(t_floatarg f) { t_iem_pow4_tilde *x = (t_iem_pow4_tilde *)pd_new(iem_pow4_tilde_class); - x->x_exp = f; + x->x_exp = (t_sample)f; inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); outlet_new(&x->x_obj, gensym("signal")); - x->x_float_sig_in = 0.0f; + x->x_float_sig_in = 0.0; return (x); } @@ -70,9 +82,7 @@ void iem_pow4_tilde_setup(void) { iem_pow4_tilde_class = class_new(gensym("iem_pow4~"), (t_newmethod)iem_pow4_tilde_new, 0, sizeof(t_iem_pow4_tilde), 0, A_DEFFLOAT, 0); - class_addcreator((t_newmethod)iem_pow4_tilde_new, gensym("icot~"), 0); CLASS_MAINSIGNALIN(iem_pow4_tilde_class, t_iem_pow4_tilde, x_float_sig_in); class_addmethod(iem_pow4_tilde_class, (t_method)iem_pow4_tilde_dsp, gensym("dsp"), 0); class_addmethod(iem_pow4_tilde_class, (t_method)iem_pow4_tilde_ft1, gensym("ft1"), A_FLOAT, 0); -// class_sethelpsymbol(iem_pow4_tilde_class, gensym("iemhelp/help-iem_pow4~")); } -- cgit v1.2.1