Wondering if Jules would consider adding these to JUCE for RTAS?
BYPASS BUTTON
In AppConfig.h add
#ifndef JucePlugin_RTASCanBypass
#define JucePlugin_RTASCanBypass 0
#endif
and in RTAS_Wrapper.cpp in the method CreateEffectTypes() change it to:
if (JucePlugin_RTASCanBypass)
type->AddGestalt (pluginGestalt_CanBypass);
========================
MULTI-OUT
In AppConfig.h
#ifndef JucePlugin_RTASMonoAuxOutputs
#define JucePlugin_RTASMonoAuxOutputs 0
#endif
#ifndef JucePlugin_RTASStereoAuxOutputs
#define JucePlugin_RTASStereoAuxOutputs 0
#endif
Usage: Set the Aux Outputs values as desired (set to 0 will create no Aux Stems), for example:
#ifndef JucePlugin_RTASMonoAuxOutputs
#define JucePlugin_RTASMonoAuxOutputs 6
#endif
#ifndef JucePlugin_RTASStereoAuxOutputs
#define JucePlugin_RTASStereoAuxOutputs 3
#endif
In juce_RTAS_Wrapper.cpp
add:
for class JucePlugInProcess add the method:
[code]
int getTotalNumOutputs()
{
int outs = GetNumOutputs() + GetNumAuxOutputPorts();
return outs;
}[/code]
for class JucePlugInProcess modify EffectInit():
SFicPlugInStemFormats stems;
GetProcessType()->GetStemFormats (&stems);
juceFilter->setPlayConfigDetails (fNumInputs, fNumOutputs,
juceFilter->getSampleRate(), juceFilter->getBlockSize());
// Addition & changes for Multi-Out:
int output_num;
int base_port_num;
for (int k=0; k < JucePlugin_RTASMonoAuxOutputs; k++)
{
output_num = k+1;
base_port_num = output_num;
char name[cAOSPortStrSize] = "Mono";
AppendOutputPortNumToName(name, output_num);
AddAuxOutputStem(new CAOSInfo(ePlugIn_StemFormat_Mono, base_port_num, name));
}
for (int k=0; k < JucePlugin_RTASStereoAuxOutputs; k++)
{
// This names the stereo output starting at "Stereo 1" -- You may wish to change
// this to start after int nb_main_outputs = GetNumOutputs();
// as in the previous post in this thread
output_num = k+1;
base_port_num = output_num;
char name[cAOSPortStrSize] = "Stereo";
AppendOutputPortNumToName(name, output_num);
AddAuxOutputStem(new CAOSInfo(ePlugIn_StemFormat_Stereo, base_port_num, name));
}
juceFilter->setPlayConfigDetails(fNumInputs, getTotalNumOutputs(), juceFilter->getSampleRate(), juceFilter->getBlockSize());
:
in handleAsyncUpdate() change the line:
[code]
// Change for Multi-Out:
// juceFilter->setPlayConfigDetails (fNumInputs, fNumOutputs, sampleRate, mRTGlobals->mHWBufferSizeInSamples);
juceFilter->setPlayConfigDetails (fNumInputs, getTotalNumOutputs(),
sampleRate, mRTGlobals->mHWBufferSizeInSamples);[/code]
in bypassBuffers() change the method declaration to:
and in the method change the line:
[code]
// Change for Multi-Out:
// for (int i = fNumOutputs; --i >= 0;)
for (int i = getTotalNumOutputs(); --i >= 0;)[/code]
in class JucePlugInGroup in the method CreateEffectTypes() add:
[code]
type->AddGestalt (pluginGestalt_CanBypass);
type->AddGestalt (pluginGestalt_SupportsVariableQuanta);
// Addition for Multi-Out:
if (JucePlugin_RTASMonoAuxOutputs || JucePlugin_RTASStereoAuxOutputs)
{
type->AddGestalt (pluginGestalt_DoesntSupportMultiMono);
type->AddGestalt (pluginGestalt_SupportsAuxOutputStems);
}
////////////////////////////////////////////////////////
type->AttachEffectProcessCreator (createNewProcess);[/code]
Thanks,
Rail