Standalone Audio Software in JUCE

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?

It appears that an audio graph would be essential. Is this correct?
https://docs.juce.com/master/classAudioProcessorGraph.html

What other JUCE tools would be essential to implement standalone audio software?

You don’t need the AudioProcessorGraph, although you certainly could use it.

All you need to do is read from a MIDI input device and send data to an audio output device. Whatever else you do is completely up to you.

JUCE comes with examples that show exactly how to do this.

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.

1 Like

@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?

Take a look at VCV Rack’s codebase:

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.

2 Likes