DSP Questions


#1

Hi everybody,

now that I’ve finally migrated to JUCE 5, I am enjoying all the new features that were added the last year, most of all the DSP module, obviously.

I do have 2 questions though (and I hope this thread will not get too schizophrenic):

  1. How can I use the IPP library with the FFT? I remembered there was some discussion why you chose the MKL library even if there’s already IPP support baked right into the Projucer (using the VS Extension). The easiest thing would be to make the private FFT:Struct a public interface (I’d be happy to contribute the wrapper code for the IPP Library).

  2. Why is there no parameter system for the Processor base class? Browsing the source code of the dsp module yields the impression that you weren’t the biggest fans of inheritance (and I must admit this metatemplate stuff looks neat), but having a somewhat unified parameter system using virtual functions would make it far more easy to embed the modules into a (runtime) modular system:

virtual void setParameter(int index, NumericType newValue) = 0;
virtual NumericType getParameter(int index) const = 0;

Also I think the performance overhead for this should be neglible, since you’re not supposed to call this function at samplerate if you’re sane.

Of course some modules need different input than just float numbers (it’s hard to represent a waveshaper function as float number), but eg. the Gain module and the Oscillator module could use this to set the gain / frequency using enum values for their Parameter ID, filters could use this for frequency, gain & Q, etc.

I could (and probably will end up) writing wrapper shells around the actual modules which offer this mechanism by subclassing ProcessorWrapper (again), but I’d be interested why it wasn’t considered to be part of the dsp module itself (since the AudioProcessor class has this kind of interface).