Combined Single Stereo, Multi Out, FX Version and more compilations?


#1

Guys, I have 3 types of files that I compile for my plugins.

  1. Single Stereo Output (Instrument Version)
  2. Multi Stereo Output (Instrument Version)
  3. FX Version

But this is a PITA to do, specially on Windows, as I have to compile 32 and 64 bits versions. So when I do a cross-products updates I end up with 3 * 2 * 6 * 2 times compilations (the last is for OSX).

So now I wonder if I could have some run-time checks instead. If I could make a single file and it would check if in the name there is FX or MultiOut and them change accordingly.

I will post below this some code.

Thanks for any help! :slight_smile:


#2

I already have a SINGLE project where I use MACROS to determinate which type of output I want.

For the FX version I already see a problem. I could MOD the JUCE files, but that sucks, as every time I would update JUCE it would get rid of those things. I see that on the VST_Wrapper it does this:

   #if JucePlugin_IsSynth
    vstEffect.flags |= Vst2::effFlagsIsSynth;
   #else
    if (processor->getTailLengthSeconds() == 0.0)
        vstEffect.flags |= Vst2::effFlagsNoSoundInStop;
   #endif

Run time set for Instrument or FX Plugin
#3

The MultiOut version is even more problematic, unless there’s another way to do, in real-time, the channels settings. Here’s the current code.

Wusik4000AudioProcessor::Wusik4000AudioProcessor() :
#if ONE_STEREO_OUTPUT_ONLY
	AudioProcessor(BusesProperties().withInput("Input", AudioChannelSet::stereo(), true)
		.withOutput("Output", AudioChannelSet::stereo(), true)),
#else
	AudioProcessor(BusesProperties()
		.withInput("Input", AudioChannelSet::stereo())
		.withOutput("Out #1", AudioChannelSet::stereo())
		.withOutput("Out #2", AudioChannelSet::stereo())
		.withOutput("Out #3", AudioChannelSet::stereo())
		.withOutput("Out #4", AudioChannelSet::stereo())
		.withOutput("Out #5", AudioChannelSet::stereo())
		.withOutput("Out #6", AudioChannelSet::stereo())
		.withOutput("Out #7", AudioChannelSet::stereo())
		.withOutput("Out #8", AudioChannelSet::stereo())
		.withOutput("Out #9", AudioChannelSet::stereo())
		.withOutput("Out #10", AudioChannelSet::stereo())
		.withOutput("Out #11", AudioChannelSet::stereo())
		.withOutput("Out #12", AudioChannelSet::stereo())
		.withOutput("Out #13", AudioChannelSet::stereo())
		.withOutput("Out #14", AudioChannelSet::stereo())
		.withOutput("Out #15", AudioChannelSet::stereo())
		.withOutput("Out #16", AudioChannelSet::stereo())),
#endif

#4

Also, for JucePlugin_IsSynth, I guess the OSX AU version will do something too. I haven’t check the StandAlone version, but I guess that’s not important, as I only need that for the main version anyway.