Working on a plug-in that contains an AudioProcessorGraph and of course AudioGraphIOProcessors to get Audio in and out of the graph. If the plug-in is an effect things work as expected but I encountered some strange behaviour when I changed the plug-in to be a synth. I found that the graph’s output node did not have any inputs (it was triggering an assertion). On close inspection of the AudioProcessor class it seems there are 16 #ifdef statements in the constructor that refer to plug-ins, and because this audio processor was inside a synth plug-in its buses were affected by the global #ifdef JucePlugin_IsSynth.
I think it would be much better if AudioProcessor did not use plugin related #ifdefs like this, which assumes any AudioProcessor in a plugin is always a plugin’s main AudioProcessor. Perhaps these options could be passed in as arguments to the constructor instead - with sensible defaults?