From cdf8ded57019d5c905f16422d40be7b1a18ab3bc Mon Sep 17 00:00:00 2001 From: Tom Schouten Date: Tue, 21 Jan 2003 10:18:19 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r350, which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/creb/; revision=351 --- modules/fwarp.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 modules/fwarp.c (limited to 'modules/fwarp.c') diff --git a/modules/fwarp.c b/modules/fwarp.c new file mode 100644 index 0000000..28fe024 --- /dev/null +++ b/modules/fwarp.c @@ -0,0 +1,61 @@ +/* + * fwarp.c - converts a frequency to a "standard" tangent warped freq + * Copyright (c) 2000-2003 by Tom Schouten + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include "m_pd.h" +#include + +#define SEQL 16 + + +typedef struct fwarp +{ + t_object t_ob; + t_outlet *x_out; +} t_fwarp; + +static void fwarp_float(t_fwarp *x, t_floatarg f) +{ + float twopi = 2.0f * M_PI; + float sr = sys_getsr(); + f /= sr; + f = tan(twopi * f) / twopi; + outlet_float(x->x_out, f * sr); +} + +static void fwarp_free(void) +{ +} + +t_class *fwarp_class; + +static void *fwarp_new(void) +{ + t_fwarp *x = (t_fwarp *)pd_new(fwarp_class); + x->x_out = outlet_new(&x->t_ob, gensym("float")); + return (void *)x; +} + +void fwarp_setup(void) +{ + fwarp_class = class_new(gensym("fwarp"), (t_newmethod)fwarp_new, + (t_method)fwarp_free, sizeof(t_fwarp), 0, 0); + class_addfloat(fwarp_class, fwarp_float); +} + -- cgit v1.2.1