My MIDI effect AU plugin works on Apple Silicon but not on Intel chipset (macOs)

On intel processBlock() doesn’t even get called.

Works great on apple silicon.

Vst3 version works on both chipsets, so does AAX

Not really sure where to even look to solve this…

Using JUCE 7.0.5

nor is processBlockBypassed() being called in AU on intel macos

DoRenderBus never gets called in the AUBASE::DoRender on the x86 side
So something about my bus configuration is acceptable on Silicon but not acceptable on x86
(that’s my theory at least)

in Juce my plugin channel configurations are
{1,1},{2,2},{0,0}

If I remove those, then AU on intel macOs works.
But then AAX breaks.

in juceheader.h

#ifndef  JucePlugin_PreferredChannelConfigurations
 #define JucePlugin_PreferredChannelConfigurations  {1,1},{2,2},{0,0}
#endif

is there a way to make that not get defined if doing AU?
#ifndef JucePlugin_PreferredChannelConfigurations
    #if ! JucePlugin_Build_AU
        #define JucePlugin_PreferredChannelConfigurations  {1,1},{2,2},{0,0}
    #endif
#endif

Surprisingly didn’t work.

Is there something else that JUCER Plugin Channel configurations will implicate?

#ifndef  JucePlugin_MaxNumInputChannels
#if ! JucePlugin_Build_AU

 #define JucePlugin_MaxNumInputChannels    2
#endif

#endif
#ifndef  JucePlugin_MaxNumOutputChannels
#if ! JucePlugin_Build_AU

 #define JucePlugin_MaxNumOutputChannels   2
#endif

#endif
#ifndef JucePlugin_PreferredChannelConfigurations
    #if ! JucePlugin_Build_AU
        #define JucePlugin_PreferredChannelConfigurations  {1,1},{2,2},{0,0}
    #endif
#endif

also doesn’t do it.

Keep in mind that the Processor is compiled in the Shared Code target so you shouldn’t rely on #ifs to make it behave differently between AU and AAX. What you can do for these sorts of workarounds is to check the format in run-time.

1 Like