OK, looking at the OOURA code, the init routine has this:
======================== static int ooura_init( int n) { n = (1 << ilog2(n)); if (n < 64) return (0); ========================
then later in the fft/ifft routine:
======================== if (!ooura_init(2*n)) return; ========================
if (!ooura_init(n))
return;
========================
since these operate directly on samples in the signal vector, it will pass signals in small blocks without performing dft. I don't know what this is supposed to avoid. I've used fft in small block sizes before, and I can't be the only one whose patches might be broken by this.
On Fri, Oct 16, 2015 at 5:33 PM, katja katjavetter@gmail.com wrote:
If I understand the fft files correctly OOURA is now the default, but 'disguised' as mayer fft so the old API should remain valid. ( http://sourceforge.net/p/pure-data/pure-data/ci/master/tree/src/d_fft_fftsg.... ).
Indeed I get the same result for Matt's test patch with Pd 0.46-5 which is on my system. Sinusoids for block size 8 and 16, instead of spectrum points.
A while ago I've been reading in OOURA fft code and what I remember is, Pd uses its mixed radix functions. Not sure about it though.
Katja
On Fri, Oct 16, 2015 at 10:00 PM, Robert Esler robert@urbanstew.org wrote:
As far as I know Pd stopped using the mayer fft library in .46, which
is probably why this is new behavior. I only get what you’re experiencing with a block size of 8. Otherwise, it seems to perform as expected.
To really understand if this is a bug or not is to know which fft
library is being used for OS X. My guess is it’s the OOURA but it’s not clear from looking at [fft~] object code that comes with distribution.
You could also download the old library and recompile Pd, but I doubt
it’s worth it.
-Rob
Hi list,
There's either a major bug in the [fft~] objects in Pd-0.46.7 (64bit OSX) or I'm going crazy. I'd love to see if others can reproduce it.
Basically, for [block~] sizes less than 32 bits, [fft~] doesn't perform
--
it just passes the signal through unchanged. [ifft~] does the same. The [rfft~]-[rifft~] is a little more complicated -- it passes signal through but zeroes out the last N/2 for [block~] sizes less than 64.
See the attached patch, which only shows [fft~]. The saved contents of
the
tables on opening are the results for [block~ 8] on my machine, for quarter-nyquist at 44100.
I've never seen this before in other versions of Pd. Anyone else get this behavior?
Matt _______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management ->