From 81d751e8824f6a9b3975c1da517d1d163a2eace5 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sat, 20 Sep 2003 00:05:08 +0000 Subject: *** empty log message *** svn path=/trunk/externals/tb/; revision=1012 --- tbext/source/tbfft2.cpp | 147 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 tbext/source/tbfft2.cpp (limited to 'tbext/source/tbfft2.cpp') diff --git a/tbext/source/tbfft2.cpp b/tbext/source/tbfft2.cpp new file mode 100644 index 0000000..6ed71d9 --- /dev/null +++ b/tbext/source/tbfft2.cpp @@ -0,0 +1,147 @@ +/* Copyright (c) 2003 Tim Blechmann. */ +/* For information on usage and redistribution, and for a DISCLAIMER OF ALL */ +/* WARRANTIES, see the file, "COPYING" in this distribution. */ +/* */ +/* */ +/* tbfft2~ transforms the fft spectrum. it reverses the order of the samples in */ +/* the fft spectrum. see the help file for further instruction... */ +/* */ +/* */ +/* tbfft2~ uses the flext C++ layer for Max/MSP and PD externals. */ +/* get it at http://www.parasitaere-kapazitaeten.de/PD/ext */ +/* thanks to Thomas Grill */ +/* */ +/* */ +/* */ +/* 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. */ +/* */ +/* See file LICENSE for further informations on licensing terms. */ +/* */ +/* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* */ +/* Based on PureData by Miller Puckette and others. */ +/* */ +/* */ +/* */ +/* coded while listening to: Naked City: Heretic, Jeux Des Dames Cruelles */ +/* Bob Ostertag: Attention Span */ +/* */ +/* */ + + + +#include + +#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) +#error upgrade your flext version!!!!!! +#endif + + +class tbfft2: public flext_dsp +{ + FLEXT_HEADER(tbfft2,flext_dsp); + +public: // constructor + tbfft2(); + +protected: + virtual void m_signal (int n, float *const *in, float *const *out); + void set_freq(t_float); + void set_width(t_float); + +private: + FLEXT_CALLBACK_1(set_freq,t_float) + FLEXT_CALLBACK_1(set_width,t_float) + + t_int center; + t_int width; + + t_float pos; + t_int posi; + + float *ins; + float *outs; + float *tmps; + t_float tmp[2049]; + + t_float s; + t_float b; + + t_int n0; +}; + + +FLEXT_LIB_DSP("tbfft2~",tbfft2) + +tbfft2::tbfft2() +{ + AddInSignal(); + AddOutSignal(); + FLEXT_ADDMETHOD_F(0,"center",set_freq); + FLEXT_ADDMETHOD_F(0,"width",set_width); +} + + +void tbfft2::m_signal(int n, t_float *const *in, t_float *const *out) +{ + ins = in[0]; + outs = out[0]; + + CopySamples(tmp,ins,n); + + n0=n/2; + + if (center-width>0) + { + n=center-width; + } + else + n=0; + + while (nn0) + { + width=n0-center; + return; + } + if (center-w<0) + { + width=center; + return; + } + + width=w; +} + + -- cgit v1.2.1 From ce8d118561bd86df80eae140f2e0a64db55998e3 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 28 Jan 2004 11:09:13 +0000 Subject: *** empty log message *** svn path=/trunk/externals/tb/; revision=1298 --- tbext/source/tbfft2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tbext/source/tbfft2.cpp') diff --git a/tbext/source/tbfft2.cpp b/tbext/source/tbfft2.cpp index 6ed71d9..99d16fe 100644 --- a/tbext/source/tbfft2.cpp +++ b/tbext/source/tbfft2.cpp @@ -72,7 +72,7 @@ private: float *ins; float *outs; float *tmps; - t_float tmp[2049]; + t_float tmp[17000]; t_float s; t_float b; -- cgit v1.2.1 From 07468876d7ad699977fd3f67d708dfe90a9d1626 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Tue, 13 Jul 2004 20:06:10 +0000 Subject: cleanup svn path=/trunk/externals/tb/; revision=1855 --- tbext/source/tbfft2.cpp | 93 ++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 44 deletions(-) (limited to 'tbext/source/tbfft2.cpp') diff --git a/tbext/source/tbfft2.cpp b/tbext/source/tbfft2.cpp index 99d16fe..1ab08db 100644 --- a/tbext/source/tbfft2.cpp +++ b/tbext/source/tbfft2.cpp @@ -49,35 +49,28 @@ class tbfft2: public flext_dsp { - FLEXT_HEADER(tbfft2,flext_dsp); - + FLEXT_HEADER(tbfft2,flext_dsp); + public: // constructor - tbfft2(); + tbfft2(); + ~tbfft2(); protected: - virtual void m_signal (int n, float *const *in, float *const *out); - void set_freq(t_float); - void set_width(t_float); - + virtual void m_signal (int n, float *const *in, float *const *out); + virtual void m_dsp (int n, float *const *in, float *const *out); + void set_freq(t_float); + void set_width(t_float); + private: - FLEXT_CALLBACK_1(set_freq,t_float) - FLEXT_CALLBACK_1(set_width,t_float) - - t_int center; - t_int width; - - t_float pos; - t_int posi; - - float *ins; - float *outs; - float *tmps; - t_float tmp[17000]; + FLEXT_CALLBACK_1(set_freq,t_float); + FLEXT_CALLBACK_1(set_width,t_float); - t_float s; - t_float b; - - t_int n0; + t_int center; + t_int width; + + t_float * tmp; + + t_int n0; }; @@ -91,40 +84,52 @@ tbfft2::tbfft2() FLEXT_ADDMETHOD_F(0,"width",set_width); } +tbfft2::~tbfft2() +{ + free(tmp); +} -void tbfft2::m_signal(int n, t_float *const *in, t_float *const *out) +void tbfft2::m_dsp(int n, t_float *const *in, t_float *const *out) { - ins = in[0]; - outs = out[0]; + free(tmp); + tmp=(t_float*)malloc(n*sizeof(t_float)); +} - CopySamples(tmp,ins,n); - - n0=n/2; - if (center-width>0) + +void tbfft2::m_signal(int n, t_float *const *in, t_float *const *out) +{ + t_float * ins = in[0]; + t_float * outs = out[0]; + + CopySamples(tmp,ins,n); + + n0=n/2; + + if (center-width>0) { - n=center-width; + n=center-width; } - else - n=0; - - while (n