New JUCE 5.1 synthesizer plugin example using juce::dsp::FFT

Hello everyone. I’ve just published another GPL3 code sample for a complete music synthesizer plugin based on Juce 5.1, which illustrates use of the FFT functions in the new JUCE DSP library. The code is on GitHub at Supplementary documentation at

I welcome all feedback and suggestions to improve this example. Comment on this post or message me, whichever you prefer. Thanks and best wishes to all.


Update: SARAH now has a traditional single-view GUI (no more tabs) and a limited “skinning” capability. These changes illustrate use of the JUCE Graphics and LookAndFeel classes, as well as the Projucer’s support for embedded binary data.

I’m doing my best to figure out the recommended “JUCE way” to write this code, but much of the time, all I can do is guess. Feedback will be greatly appreciated!

I think you should take a look at this tutorial.

1 Like

I’ve studied the tutorial in detail, but I don’t see any way to implement both [g|s]etCurrentProgramStateInformation as well as [g|s]etStateInformation. In VST2 at least, these are used to save/restore (respectively) program (.fxp) and bank (.fxb) data. The tutorial and other AudioProcessorValueTreeState examples I’ve seen don’t address the program vs. bank distinction. What is the recommended way?

(Update) I’m starting to suspect that the whole “bank” notion may be a VST2 anachronism, no longer really used. Is this the case?