From b703eab295330e6f81564fbb39a10a1a2fdd2f54 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Sun, 27 Dec 2009 11:30:35 +0000 Subject: moved old qt4 branch --- .../synti/zynaddsubfx/DSP/FFTwrapper.C | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.C (limited to 'muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.C') diff --git a/muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.C b/muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.C new file mode 100644 index 00000000..7c67e631 --- /dev/null +++ b/muse_qt4_evolution/synti/zynaddsubfx/DSP/FFTwrapper.C @@ -0,0 +1,99 @@ +/* + ZynAddSubFX - a software synthesizer + + FFTwrapper.c - A wrapper for Fast Fourier Transforms + Copyright (C) 2002-2005 Nasca Octavian Paul + Author: Nasca Octavian Paul + + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License + as published by the Free Software Foundation. + + 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 (version 2) for more details. + + You should have received a copy of the GNU General Public License (version 2) + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include +#include "FFTwrapper.h" + +FFTwrapper::FFTwrapper(int fftsize_){ + fftsize=fftsize_; + tmpfftdata1=new fftw_real[fftsize]; + tmpfftdata2=new fftw_real[fftsize]; +#ifdef FFTW_VERSION_2 + planfftw=rfftw_create_plan(fftsize,FFTW_REAL_TO_COMPLEX,FFTW_ESTIMATE|FFTW_IN_PLACE); + planfftw_inv=rfftw_create_plan(fftsize,FFTW_COMPLEX_TO_REAL,FFTW_ESTIMATE|FFTW_IN_PLACE); +#else + planfftw=fftw_plan_r2r_1d(fftsize,tmpfftdata1,tmpfftdata1,FFTW_R2HC,FFTW_ESTIMATE); + planfftw_inv=fftw_plan_r2r_1d(fftsize,tmpfftdata2,tmpfftdata2,FFTW_HC2R,FFTW_ESTIMATE); +#endif +}; + +FFTwrapper::~FFTwrapper(){ +#ifdef FFTW_VERSION_2 + rfftw_destroy_plan(planfftw); + rfftw_destroy_plan(planfftw_inv); +#else + fftw_destroy_plan(planfftw); + fftw_destroy_plan(planfftw_inv); +#endif + + delete [] tmpfftdata1; + delete [] tmpfftdata2; +}; + +/* + * do the Fast Fourier Transform + */ +void FFTwrapper::smps2freqs(REALTYPE *smps,FFTFREQS freqs){ +#ifdef FFTW_VERSION_2 + for (int i=0;i