Wanted process: FluidBufFFT

I think this would be super easy for you all to implement, because it is already all over the place: I just want a process that outputs a buffer with the FFT in it. Bin channels by M frames.

Maybe this exists in Max? I don’t think it does in SC.

I actually started making this a while ago, although IIRC there wasn’t great enthusiasm for the idea from my colleagues. It foundered on something, so preusmably not super easy. I think the problem might have been about the shape and navigability of the resulting buffer. I’ll dig out what I did and remind myself + start petitioning on your (our) behalf for this to be a thing if the problems seem surmountable.

1 Like

SC has PV_Record, which records into a 1 channel buffer. It looks like it has 3 pieces of meta-data: frameSize, hopsize, rate (maybe?), and then each frame is written from there laterally. This is real-time. I was hoping for something non-realtime.

I did figure out how to do what I was trying to do without this, but I still think it would be a nice tool to have in the toolbox.

1 Like

Is that part of some plugin? I don’t see it in my very bare installation. Does it interleave the real / complex (or mag/phase)?

It is in the SC3Plugins, in the JoshUGens:

Source is here:

Prebuilt package is here:

Sam

1 Like

Thanks for this @spluta - I am on pause this week for Marking joy, but am after real FFT info, thanks for flagging the PV plugins

Cheers. That answers my question (yes, they interleave magnitudes and phases). Looking at as far as I got, it looks like I drew to a halt figuring out a sensible interface (e.g separate mag/phase buffers or not etc.). I’ll revisit when we can.

2 Likes

@spluta, this may do what you want. I made it a while ago; it only operates in the language so is quite slow, but is technically NRT and gets the data you’re looking for. Not that I would put a big long file in it though. Also, currently sums anything to mono because I was just using it for visualization purposes… but it could be modified.


Also, it has an fft method and ifft method. The fft method returns a 3d array: an array of frames, each frame has an array for mags and phases, each one of those is 512 (or whatever) values. The ifft method expects that shape array in return.
1 Like

Real nice! It should be easy to do this with NRT server, which would be super fast, but I was having a hard time getting it to save a buffer that wasn’t the audio record buffer…and then I got distracted by something else.

1 Like

if @weefuzzy does not send one before you’re done, you can try to hack my buffer NRT stuff here:

super quick super simple and completes the very incomplete docs on how to do NRT buffer stuff

1 Like