Seth Nickell wrote:
I'm planning to release our realtime convolution engine (extracted from http://meatscience.net/pages/convolution-reverb) as a GPLed Pd external.
This is a good idea!
It currently accepts 4-channel ('true stereo'), two channel or mono impulse responses, with stereo or mono output. Performance is
What is 'true stereo' with four channels by the way?
excellent if you have SSE3 and has a fallback in case you don't, and it aims for accuracy (basically that means multi-stage scaling to keep floats within healthy sizes).
- I'd love to swipe the convolve~ external name, currently installed
by mjlib as part of pd-extended. convolve~ from mjlib appears to be a copy of pin~ ? so I think it could be taken? Maybe I mis-read the code. I've cc'ed mark who can probably clarify.
- Anyone have requests for features/api? Its currently simplistic:
- takes a "read FILENAME" message, loads the file, does a test
convolution against pink noise to normalize the gain to something sane
Is this done within the main Pd audio thread?
- caches the last N impulse responses, as the test convolution
takes a little time
- allows setting the cache size with a "cachesize N" message
To make sure I understood this: cachesize is not the size of the first partition of the partitioned convolution, but the cache that tries to avoid audio dropouts when performing the test convolution?
- disable normalization with "normalize 0" or "normalize 1"
Yes, disabling this could be a good idea! You could also add a "gain 0-1" message for manual control.
Features I'm considering (let me know if they sound useful): - load from an array instead of from disk (no gain normalization?)
Very good.
- It wouldn't be hard to enable MxN convolution if that floats
somebody's boat.
I am sure if you come up with a convolution as efficient and flexible as jconv by Fons within Pd, then soon a multichannel use and hence request will come up fast.
[...]
- Would this be of interest for Pd-extended?
This would be of interest for all Pd users, no matter if they like their externals included in a distribution of Pd ('extended') or manuall adding them to their vanilla Pd.
best, P