What JUCE tools can be used to implement a standalone modular polyphonic synthesizer that does not require a DAW to be fully functional as standalone audio software?
You would need some kind of audio graph because that’s what a modular synthesizer basically is, but you might not want to get stuck with a design based on the Juce AudioProcessorGraph and rather make your own one.
Some reasons why you might not want to use the Juce AudioProcessorGraph :
The processing nodes need to be Juce AudioProcessor based. AudioProcessor may not be what you want to use as your processor base class.
It might not handle large numbers (read dozens/hundreds) of processing nodes and connections between them well, when doing things like adding/removing nodes/connections. It used to have a problem where operations like that got extremely slow as more nodes were added to the graph. I haven’t checked lately if that problem has resurfaced, though.
It doesn’t do multithreaded processing, so you can only use at most 1 CPU core to process the whole graph. This may quickly get insufficient with large numbers of nodes.
Being AudioProcessor based, it is implied you will be processing blocks of audio and not single samples at a time. A modular synth may want to process sample per sample. You could technically pass around AudioBuffers that have a length of 1 sample, but that could be inefficient/awkward to deal with.
Feedback connections don’t work in the graph. A modular synth probably should have that.
Of course, even with all those limitations the Juce AudioProcessorGraph might be enough for what you need and has the advantage that it is readily available to use in Juce based code. I would not personally attempt a proper modular synth using it, though.
@xenakios
Thank You.
What resources would you recommend to develop my own custom audio graph to implement in a custom modular polyphonic synthesizer that is standalone and does not require a DAW to be fully functional?
It’s a highly performant modular synth engine that’s source available - just remember to review and comply with the GPL licensing requirements if you plan to base any work on it.