[PD-cvs] externals/fftw LICENSE.txt, NONE, 1.1 Makefile, NONE, 1.1 Makefile.in, NONE, 1.1 README.txt, NONE, 1.1 configure.ac, NONE, 1.1 fftw_config.h, NONE, 1.1 fftw_config.h.in, NONE, 1.1 fftw~-help.pd, NONE, 1.1 fftw~.c, NONE, 1.1 fftw~.h, NONE, 1.1 fftw~.pd, NONE, 1.1 ifftw~-help.pd, NONE, 1.1 ifftw~.c, NONE, 1.1 ifftw~.pd, NONE, 1.1 rfftw~-help.pd, NONE, 1.1 rfftw~.c, NONE, 1.1 rfftw~.pd, NONE, 1.1 rifftw~-help.pd, NONE, 1.1 rifftw~.c, NONE, 1.1 rifftw~.pd, NONE, 1.1
IOhannes m zmölnig
zmoelnig at users.sourceforge.net
Wed Sep 20 13:22:31 CEST 2006
Update of /cvsroot/pure-data/externals/fftw
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16542
Added Files:
LICENSE.txt Makefile Makefile.in README.txt configure.ac
fftw_config.h fftw_config.h.in fftw~-help.pd fftw~.c fftw~.h
fftw~.pd ifftw~-help.pd ifftw~.c ifftw~.pd rfftw~-help.pd
rfftw~.c rfftw~.pd rifftw~-help.pd rifftw~.c rifftw~.pd
Log Message:
library providing FFT-objects using the (fast!) libFFTW
--- NEW FILE: fftw~.pd ---
#N canvas 0 0 450 300 10;
#X obj 163 69 inlet~;
#X obj 188 89 inlet~;
#X obj 163 159 outlet~;
#X obj 188 179 outlet~;
#X obj 162 127 fft~;
#X text 1 29 fall-back abstraction when there is no libFFTW installed
;
#X connect 0 0 4 0;
#X connect 1 0 4 1;
#X connect 4 0 2 0;
#X connect 4 1 3 0;
--- NEW FILE: fftw~.c ---
/* Copyright (c) 1997-1999 Miller Puckette and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
#include "fftw~.h"
#ifdef HAVE_LIBFFTW3F
/* Support for fftw3 by Tim Blechmann */
/* ------------------------ fft~ -------------------------------- */
static t_class *sigfftw_class;
typedef struct fftw
{
t_object x_obj;
float x_f;
fftwf_plan plan;
fftwf_iodim dim;
} t_sigfftw;
static void *sigfftw_new(void)
{
t_sigfftw *x = (t_sigfftw *)pd_new(sigfftw_class);
outlet_new(&x->x_obj, gensym("signal"));
outlet_new(&x->x_obj, gensym("signal"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
x->x_f = 0;
return (x);
}
static void sigfftw_free(t_sigfftw * x)
{
fftwf_destroy_plan(x->plan);
}
static t_int *sigfftw_perform(t_int *w)
{
fftwf_execute(*(fftwf_plan *)w[1]);
return (w+2);
}
static void sigfftw_dsp(t_sigfftw *x, t_signal **sp)
{
int n = sp[0]->s_n;
float *in1 = sp[0]->s_vec;
float *in2 = sp[1]->s_vec;
float *out1 = sp[2]->s_vec;
float *out2 = sp[3]->s_vec;
x->dim.n=n;
x->dim.is=1;
x->dim.os=1;
x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL,
in1, in2, out1, out2,
FFTW_ESTIMATE);
dsp_add(sigfftw_perform, 1, &x->plan);
}
EXTERNAL_SETUP fftw_tilde_setup(void)
{
sigfftw_class = class_new(gensym("fftw~"), sigfftw_new,
(t_method) sigfftw_free,
sizeof(t_sigfftw), 0, 0);
CLASS_MAINSIGNALIN(sigfftw_class, t_sigfftw, x_f);
class_addmethod(sigfftw_class, (t_method)sigfftw_dsp,
gensym("dsp"), 0);
}
#endif
--- NEW FILE: rifftw~.c ---
/* Copyright (c) 1997-1999 Miller Puckette and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
#include "fftw~.h"
#ifdef HAVE_LIBFFTW3F
/* Support for fftw3 by Tim Blechmann */
/* ----------------------- rifft~ -------------------------------- */
static t_class *sigrifftw_class;
typedef struct rifftw
{
t_object x_obj;
float x_f;
fftwf_plan plan;
fftwf_iodim dim;
} t_sigrifftw;
static void *sigrifftw_new(void)
{
t_sigrifftw *x = (t_sigrifftw *)pd_new(sigrifftw_class);
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
outlet_new(&x->x_obj, gensym("signal"));
x->x_f = 0;
return (x);
}
static void sigrifftw_free(t_sigrifftw *x)
{
fftwf_destroy_plan(x->plan);
}
static t_int *sigrifftw_perform(t_int *w)
{
fftw_siginvert((t_sample *)w[2],w[3]);
fftwf_execute(*(fftwf_plan*)w[1]);
return (w+4);
}
static void sigrifftw_dsp(t_sigrifftw *x, t_signal **sp)
{
int n = sp[0]->s_n, n2 = (n>>1);
float *in1 = sp[0]->s_vec;
float *in2 = sp[1]->s_vec;
float *out = sp[2]->s_vec;
if (n < 4)
{
error("fft: minimum 4 points");
return;
}
else
{
x->dim.n=n;
x->dim.is=1;
x->dim.os=1;
x->plan = fftwf_plan_guru_split_dft_c2r(1, &(x->dim), 0, NULL,
in1, in2, out, FFTW_ESTIMATE | FFTW_PRESERVE_INPUT);
dsp_add_zero(in1+ n/2, n/2);
dsp_add(sigrifftw_perform,3,&x->plan,in2,n2);
}
}
EXTERNAL_SETUP rifftw_tilde_setup(void)
{
sigrifftw_class = class_new(gensym("rifftw~"), sigrifftw_new,
(t_method)sigrifftw_free,
sizeof(t_sigrifftw), 0, 0);
CLASS_MAINSIGNALIN(sigrifftw_class, t_sigrifftw, x_f);
class_addmethod(sigrifftw_class, (t_method)sigrifftw_dsp,
gensym("dsp"), 0);
}
#endif
--- NEW FILE: Makefile.in ---
LIBNAME =fftw~
VERSION =0.1
PREFIX =@prefix@@PDLIBDIR@
INSTALL_BIN=$(PREFIX)/extra
EXT = @EXT@
DEFS = @DFLAGS@ -DVERSION=\"$(VERSION)\"
IFLAGS = -I. @INCLUDES@ $(INCLUDES)
CC = @CC@
LD = @LD@
STRIP = @STRIP@ @STRIPFLAGS@
AFLAGS =
LFLAGS = @LFLAGS@
WFLAGS =
MAKEDEP_FLAGS = @MAKEDEP_FLAGS@
TARNAME = $(LIBNAME)- at VERSION@.tgz
BINTARNAME = $(LIBNAME)- at VERSION@-bin.tgz
.SUFFIXES: .$(EXT)
CFLAGS = $(DEFS) $(IFLAGS) $(WFLAGS) @CFLAGS@
LIBS = @LIBS@
SOURCES=$(sort $(filter %.c, $(wildcard *.c)))
OTARGETS = $(SOURCES:.c=.o)
TARGETS = $(SOURCES:.c=.$(EXT))
ifeq (,$(findstring fftw3, $(LIBS) ))
all:
@echo "nothing to be done (no fftw3)"
else
all: $(TARGETS)
endif
clean:
-rm -f *.o *.d
binclean:
-rm -f *.$(EXT)
distclean: clean binclean
-rm -f *~ _* config.*
-rm -rf autom4te.cache
install: install-bin install-doc
install-bin: all
-install -d $(INSTALL_BIN)
-install -m 644 *.$(EXT) $(INSTALL_BIN)
install-doc:
-install -d $(INSTALL_BIN)
-install -m 644 *.pd $(INSTALL_BIN)
dist: distclean
(cd ..;tar czvf $(TARNAME) $(LIBNAME))
distbin: distclean all clean
(cd ..; tar cvzf $(BINTARNAME) $(LIBNAME))
everything: clean all install distclean
%.$(EXT): %.o
$(LD) $(LFLAGS) -o $@ *.o $(LIBS)
$(STRIP) $@
$(LIBNAME): $(OTARGETS)
$(LD) $(LFLAGS) -o $(LIBNAME).$(EXT) *.o $(LIBS)
$(STRIP) $(LIBNAME).$(EXT)
## dependencies: as proposed by the GNU-make documentation
## see http://www.gnu.org/software/make/manual/html_node/make_47.html#SEC51
-include $(SOURCES:.c=.d)
%.d: %.c
@set -e; rm -f $@; \
$(CC) $(MAKEDEP_FLAGS) $(CFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
configure: configure.ac
autoconf
Makefile: Makefile.in configure
./configure
--- NEW FILE: rifftw~.pd ---
#N canvas 0 0 450 300 10;
#X obj 163 69 inlet~;
#X obj 163 159 outlet~;
#X obj 162 127 rifft~;
#X obj 206 99 inlet~;
#X text 1 29 fall-back abstraction when there is no libFFTW installed
;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 3 0 2 1;
--- NEW FILE: rfftw~.pd ---
#N canvas 0 0 450 300 10;
#X obj 163 69 inlet~;
#X obj 163 159 outlet~;
#X obj 198 179 outlet~;
#X obj 162 127 rfft~;
#X text 1 29 fall-back abstraction when there is no libFFTW installed
;
#X connect 0 0 3 0;
#X connect 3 0 1 0;
#X connect 3 1 2 0;
--- NEW FILE: Makefile ---
default:
./configure && make
--- NEW FILE: fftw~.h ---
#ifndef FFTW_TILDE_H_
#define FFTW_TILDE_H_
#include "fftw_config.h"
#include "m_pd.h"
#ifdef HAVE_LIBFFTW3F
# include "fftw3.h"
# include <string.h>
#endif
#define EXTERNAL_SETUP void
static void fftw_siginvert(t_sample * s, t_int n)
{
while (n!=0)
{
--n;
s[n]=-s[n];
}
}
#endif /* FFTW_TILDE_H_ */
--- NEW FILE: ifftw~.pd ---
#N canvas 0 0 450 300 10;
#X obj 163 69 inlet~;
#X obj 198 89 inlet~;
#X obj 163 159 outlet~;
#X obj 198 179 outlet~;
#X obj 162 127 ifft~;
#X text 1 29 fall-back abstraction when there is no libFFTW installed
;
#X connect 0 0 4 0;
#X connect 1 0 4 1;
#X connect 4 0 2 0;
#X connect 4 1 3 0;
--- NEW FILE: rfftw~.c ---
/* Copyright (c) 1997-1999 Miller Puckette and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
#include "fftw~.h"
#ifdef HAVE_LIBFFTW3F
/* Support for fftw3 by Tim Blechmann */
/* ----------------------- rfft~ --------------------------------- */
static t_class *sigrfftw_class;
typedef struct rfftw
{
t_object x_obj;
float x_f;
fftwf_plan plan;
fftwf_iodim dim;
} t_sigrfftw;
static void *sigrfftw_new(void)
{
t_sigrfftw *x = (t_sigrfftw *)pd_new(sigrfftw_class);
outlet_new(&x->x_obj, gensym("signal"));
outlet_new(&x->x_obj, gensym("signal"));
x->x_f = 0;
return (x);
}
static void sigrfftw_free(t_sigrfftw *x)
{
fftwf_destroy_plan(x->plan);
}
static t_int *sigrfftw_perform(t_int *w)
{
fftwf_execute(*(fftwf_plan*)w[1]);
fftw_siginvert((t_sample*)w[2],(t_int)w[3]);
return (w+4);
}
static void sigrfftw_dsp(t_sigrfftw *x, t_signal **sp)
{
int n = sp[0]->s_n, n2 = (n>>1);
float *in = sp[0]->s_vec;
float *out1 = sp[1]->s_vec;
float *out2 = sp[2]->s_vec;
if (n < 4)
{
error("fft: minimum 4 points");
return;
}
else
{
x->dim.n=n;
x->dim.is=1;
x->dim.os=1;
x->plan = fftwf_plan_guru_split_dft_r2c(1, &(x->dim), 0, NULL,
in, out1, out2, FFTW_ESTIMATE | FFTW_PRESERVE_INPUT);
dsp_add(sigrfftw_perform,3,&x->plan,out2+1,n2-1);
}
dsp_add_zero(out1 + n2, n2);
dsp_add_zero(out2 + n2, n2);
}
EXTERNAL_SETUP rfftw_tilde_setup(void)
{
sigrfftw_class = class_new(gensym("rfftw~"), sigrfftw_new,
(t_method)sigrfftw_free,
sizeof(t_sigrfftw), 0, 0);
CLASS_MAINSIGNALIN(sigrfftw_class, t_sigrfftw, x_f);
class_addmethod(sigrfftw_class, (t_method)sigrfftw_dsp,
gensym("dsp"), 0);
}
#endif
--- NEW FILE: fftw~-help.pd ---
#N canvas 99 336 541 313 10;
#X obj 164 93 fftw~;
#X text 87 56 forward complex FFT using libFFTW;
#X text 88 136 this object is a drop-in replacement for pd's built-in
fft-object;
#X text 105 205 for help see;
#X obj 213 204 fft~;
--- NEW FILE: rfftw~-help.pd ---
#N canvas 0 0 605 326 10;
#X text 105 205 for help see;
#X text 85 56 forward real FFT using libFFTW;
#X obj 164 93 rfftw~;
#X obj 213 204 rfft~;
#X text 88 136 this object is a drop-in replacement for pd's built-in
rfft-object;
--- NEW FILE: configure.ac ---
dnl Process this file with autoconf to produce a configure script.
AC_INIT(fftw_config.h.in)
AC_CONFIG_HEADER(fftw_config.h)
dnl Checks for programs.
AC_PROG_CC
AC_SUBST(STK)
AC_SUBST(DFLAGS)
AC_SUBST(LFLAGS)
AC_SUBST(EXT)
AC_SUBST(LD)
AC_SUBST(STRIP)
AC_SUBST(STRIPFLAGS)
AC_SUBST(REFERENCEPATH)
AC_SUBST(PDLIBDIR)
AC_SUBST(INCLUDES)
AC_SUBST(VERSION)
AC_SUBST(HAVE_LIBFFTW3F)
AC_ARG_WITH(pdversion, [ --with-pdversion=<ver> enforce a certain pd-version (e.g. 0.37)])
AC_ARG_WITH(extension, [ --with-extension=<ext> enforce a certain extension for the dynamic library (e.g. dll)])
dnl Checks for libraries.
dnl Replace `main' with a function in -lc:
AC_CHECK_LIB(c, main)
AC_CHECK_LIB(crtdll, fclose)
dnl Replace `main' with a function in -lm:
AC_CHECK_LIB(m, main)
dnl Replace `main' with a function in -lpthread:
dnl AC_CHECK_LIB(pthread, main)
dnl Replace `main' with a function in -lstk:
dnl AC_CHECK_LIB(stk, main, STK=yes)
AC_CHECK_LIB(fftw3f, fftwf_execute)
if test "x$includedir" != "x"; then
for id in $includedir
do
if test -d $id; then INCLUDES="-I$id $INCLUDES"; fi
done
fi
if test "x$libdir" != "x"; then
for id in $libdir
do
if test -d $id; then LIBS="-L$id $LIBS"; fi
done
fi
AC_CHECK_LIB(pd, nullfn)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(stdlib.h stdio.h string.h math.h time.h sys/time.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_TIME
dnl Checks for library functions.
AC_FUNC_MMAP
AC_CHECK_FUNCS(select socket strerror)
dnl check for "-mms-bitfields" cflag
dnl why is there no generic compiler-check for a given flag ?
dnl it would make things so easy: AC_CHECK_FLAG([-mms-bitfields],,)
AC_MSG_CHECKING("ms-bitfields")
cat > conftest.c << EOF
int main(){
return 0;
}
EOF
if ${CC} ${INCLUDES} ${DFLAGS} -o conftest.o conftest.c ${CFLAGS} -mms-bitfields > /dev/null 2>&1
then
echo "yes"
CFLAGS="${CFLAGS} -mms-bitfields"
else
echo "no"
fi
### make-depend flags
if test "x$ac_cv_c_compiler_gnu" = "xyes"; then
AC_SUBST(MAKEDEP_FLAGS, "-MM")
else
AC_SUBST(MAKEDEP_FLAGS, "-M")
fi
dnl isn't there a better way to check for good linker/stripper ?
dnl if we don't have $LD set, we set it to $(CC)
dnl LD=${LD:=$CC}
AC_CHECK_TOOL([LD], [ld], [${CC}])
dnl if we don't have $STRIP set, we set it to ${host}-strip or strip
dnl if we don't have $STRIP set, we set it to ${host}-strip or strip
AC_CHECK_TOOL([STRIP], [strip], [true])
AC_MSG_CHECKING([if strip is GNU strip])
if $STRIP -V | grep GNU > /dev/null
then
AC_SUBST(STRIPFLAGS, "--strip-unneeded")
AC_MSG_RESULT([yes])
else
AC_SUBST(STRIPFLAGS,"-x")
AC_MSG_RESULT([no])
fi
dnl
dnl OK, checks for machines are here now
dnl
if test `uname -s` = Linux;
then
LFLAGS="-export_dynamic -shared"
CFLAGS="-fPIC $CFLAGS"
EXT=pd_linux
fi
dnl This should use '-bundle_loader /path/to/pd/bin/pd' instead of'-undefined suppress'
dnl then strip might do something
if test `uname -s` = Darwin;
then
LD=cc
LFLAGS="-bundle -undefined suppress -flat_namespace"
EXT=pd_darwin
STRIPFLAGS=
fi
if test `uname | sed -e 's/^MINGW.*/NT/'` = NT;
then
LD=gcc
INCLUDES="-I at prefix@/src"
DFLAGS="-D__WIN32__ ${DFLAGS}"
LFLAGS="-shared @prefix@/bin/pd.dll"
EXT=dll
else
PDLIBDIR="/lib/pd"
fi
if test `uname -s` = IRIX64;
then
LFLAGS="-n32 -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \
-OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \
-shared -rdata_shared"
EXT=pd_irix6
dnl DFLAGS="-DUNIX -DIRIX6 ${DFLAGS}"
STRIPFLAGS="--strip-unneeded"
fi
if test `uname -s` = IRIX32;
then
LFLAGS="-o32 -DUNIX -DIRIX -O2
-shared -rdata_shared"
EXT=pd_irix5
dnl DFLAGS="-DUNIX -DIRIX5 ${DFLAGS}"
STRIPFLAGS="--strip-unneeded"
fi
if test "x$with_extension" != "x"
then
EXT=$with_extension
fi
dnl Checks for pd-version, to set the correct help-path
AC_MSG_CHECKING("pd\>=0.37")
if test "$with_pdversion" != ""
then
echo -n "($with_pdversion)... "
PD_VERSION="$with_pdversion"
else
if test "x$cross_compiling" = "xno"
then
cat > conftest.c << EOF
#include <stdio.h>
#include "m_pd.h"
int main(){
printf("%d.%d\n", PD_MAJOR_VERSION, PD_MINOR_VERSION);
return 0;
}
EOF
if $CC $INCLUDES -o conftest.o conftest.c > /dev/null 2>&1
then
PD_VERSION=`./conftest.o`
else
PD_VERSION=""
fi
echo -n $PD_VERSION
else
dnl we are cross-compiling...
echo -n "(X)..."
PD_VERSION="0.38"
fi
fi
let PD_MAJORVERSION=`echo $PD_VERSION | cut -d"." -f1`+0
let PD_MINORVERSION=`echo $PD_VERSION | cut -d"." -f2`+0
if test "$PD_MAJORVERSION" -gt 0 || test "$PD_MINORVERSION" -ge 37
then
REFERENCEPATH=extra/help-
echo " yes"
else
REFERENCEPATH=doc/5.reference/
echo " no"
fi
AC_OUTPUT(Makefile)
rm -f conftest.*
--- NEW FILE: rifftw~-help.pd ---
#N canvas 0 0 450 300 10;
#X text 105 205 for help see;
#X obj 164 93 rifftw~;
#X obj 212 204 rifft~;
#X text 88 136 this object is a drop-in replacement for pd's built-in
rifft-object;
#X text 87 56 inverse real FFT using libFFTW;
--- NEW FILE: ifftw~-help.pd ---
#N canvas 0 0 450 300 10;
#X text 105 205 for help see;
#X text 87 56 inverse complex FFT using libFFTW;
#X obj 164 93 ifftw~;
#X obj 213 204 ifft~;
#X text 88 136 this object is a drop-in replacement for pd's built-in
ifft-object;
--- NEW FILE: ifftw~.c ---
/* Copyright (c) 1997-1999 Miller Puckette and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
#include "fftw~.h"
#ifdef HAVE_LIBFFTW3F
/* Support for fftw3 by Tim Blechmann */
/* ------------------------ ifft~ -------------------------------- */
static t_class *sigifftw_class;
typedef struct fftw
{
t_object x_obj;
float x_f;
fftwf_plan plan;
fftwf_iodim dim;
} t_sigifftw;
static void *sigifftw_new(void)
{
t_sigifftw *x = (t_sigifftw *)pd_new(sigifftw_class);
outlet_new(&x->x_obj, gensym("signal"));
outlet_new(&x->x_obj, gensym("signal"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
x->x_f = 0;
return (x);
}
static void sigifftw_free(t_sigifftw * x)
{
fftwf_destroy_plan(x->plan);
}
static t_int *sigifftw_perform(t_int *w)
{
fftwf_execute(*(fftwf_plan *)w[1]);
return (w+2);
}
static void sigifftw_dsp(t_sigifftw *x, t_signal **sp)
{
int n = sp[0]->s_n;
float *in1 = sp[0]->s_vec;
float *in2 = sp[1]->s_vec;
float *out1 = sp[2]->s_vec;
float *out2 = sp[3]->s_vec;
x->dim.n=n;
x->dim.is=1;
x->dim.os=1;
x->plan = fftwf_plan_guru_split_dft(1, &(x->dim), 0, NULL, in2,
in1, out2, out1, FFTW_ESTIMATE);
dsp_add(sigifftw_perform, 1, &x->plan);
}
EXTERNAL_SETUP ifftw_tilde_setup(void)
{
sigifftw_class = class_new(gensym("ifftw~"), sigifftw_new,
(t_method) sigifftw_free,
sizeof(t_sigifftw), 0, 0);
CLASS_MAINSIGNALIN(sigifftw_class, t_sigifftw, x_f);
class_addmethod(sigifftw_class, (t_method)sigifftw_dsp,
gensym("dsp"), 0);
}
#endif
--- NEW FILE: LICENSE.txt ---
This software is copyrighted by Miller Puckette and others. The following
terms (the "Standard Improved BSD License") apply to all files associated with
the software unless explicitly disclaimed in individual files:
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
3. The name of the author may not be used to endorse or promote
products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
--- NEW FILE: fftw_config.h.in ---
#undef HAVE_LIBFFTW3F
--- NEW FILE: README.txt ---
fftw~ - FFT objects for pd
a set of alternative fft~-objects, using the fftw-library.
these objects should behave exactly like the original ones:
[fftw~] <-> [fft~]
[ifftw~] <-> [ifft~]
[rfftw~] <-> [rfft~]
[rifftw~] <-> [rifft~]
REASONING:
the code in here has originally been written by tim blechmann and was
meant to be part of pd itself.
since miller puckette is somewhat reluctant to integrate these fftw-enabled
objects into vanilla pd, this library provides another way to get
high-performance FFTs.
TODO:
search for a way to override the default FFT-objects in pd with these.
(i think cyclone uses such a mechanism)
AUTHORS:
tim blechmann
IOhannes m zmölnig
LICENSING:
since this code was originally meant to be part of pd, it is licensed under the
same license as pd itself.
see LICENSE.txt for details
--- NEW FILE: fftw_config.h ---
/* fftw_config.h. Generated from fftw_config.h.in by configure. */
#define HAVE_LIBFFTW3F 1
More information about the Pd-cvs
mailing list