offline processing
I'm trying to figure out a general approach to processing some spectral data in a non-realtime fashion. I start with a buffer~ with an impulse response. I just need to convert to spectral amplitude values and then do some basic mathematics on it. Like maybe some smoothing, summing up over octave bands etc. Pretty simple, and just done once, not realtime. I could use any guidance on general direction to go. I thought about jitter matrixes, but have not used jitter before. Also thought about writing java external but also not too experienced in java coding. Seems like all the Max externals like fft are geared towards ongoing realtime processing.
Indeed, the Max world is pretty much about realtime processing. Have you considered using something else than Max? Like Matlab, python or Octave?
Hens Zimmerman
or, you could have the max audio drive rset as "non realtime" - but good luck to make good use of it !
Ha, i would love to use Matlab. That is one approach I considered. But then I have to either get Matlabcommunicate to work (not much documentation, not supported), or call Matlab engine (requires Matlab) or call a Matlab standalone. I'm trying to deploy this to another computer so having another Matlab license required is not great. Compiling a Matlab standalone is possible but a bit of a pain.
To use the NonRealTime driver, you have select the driver and enable "Scheduler in Overdrive" and "Audio Interrupt".
I think that then, the "Signal Vector Size" you set (even 1) will be like the period of the control (non signal) values are calculated.
So, the lower "Signal Vector Size" the more detailed the control values will be.
I had tried it and worked fine with "Signal Vector Size" to 1.
Lastly, you do have to start and stop the DSP manually!
And to sum it up, enable "Scheduler in Overdrive" and "Audio Interrupt", set "Signal Vector Size" to 1 and manual DSP on & off!
So, indeed good luck, but it is doable once you get the handle of it.
Just, remember to disable the "Scheduler in Overdrive" and "Audio Interrupt", change "Signal Vector Size" if you go to a real-time driver, cause like that, the CPU will go quite high!
Hope this helps a bit..