Plugin Not Recognized in Garageband

I’ve had Juce plugins recognized a few times but now I have copied the same exact setup with no luck for three days now.

So far I have tried:
In Xcode:
changing the scheme
changing executable to GarageBand (build success, opens GB, no plugin)
making sure “debug executable” is unchecked

In ProJucer:
Changing the “plugin main type”
Changing the “plugin characteristics”
Trying AU, AUv3

In GB:
Making sure component is copied to audio plugins file

Still no plugin. I’m looking for concrete steps to produce a plugin in Garageband every time. Til now, the times I’ve had success seem random and I haven’t been able to reproduce it.

Thanks for any help.

Are you building your plugin using XCde or CMake? Are you using any protection?

Rail

I have tried using sandbox off/on as well. I’ve only used XCode so far.

Have you run auval or PluginVal? They might provide you with a little more information. You can also try cleaning your AudioUnit cache, and you might have to restart your machine. I’m not sure what the current situation is with restarting, but it was required for a while on some versions of MacOS.

Is it by chance a mono-only plugin? I had to find out that Garage Band tracks are all stereo by default so my mono plugin did not show up in the plugin menu when trying to add it to a track

The restart hasn’t changed anything and I haven’t used pluginval before. Maybe I’ll have to as a last resort if I don’t find an answer here. As far as stereo/mono it hasn’t changed anything after trying both. Plus I’m using this on midi so it doesn’t affect it.

Is the first letter of your manufacturer code uppercase, and are the others lowercase?

Surely you’ve run auval at this point? Just type auval -a into the terminal window and let it tell you why Garageband can’t load your plugin.

I ran auval and this is what it returned:
aufx L71z Manu - JUCE: ArpeggiatorTutorial
JUCE v6.0.8

So it is recognized and is listed with the other ones that have worked, but it is still not showing up as an option. I’ve searched every option for plugins and don’t see it.

Also, I don’t know where to check for the manufacturer code. What would be the reasoning there?

If auval lists it you can now validate it via
auvaltool -v L71z Manu
This is basically what Garage Band runs internally to decide wether to list your plugin or not. What does this call return?

auval already reported the manufacturer code to you, it’s Manu – probably the default value and you didn’t change it. Some AU hosts seemed to ignore plugins where the manufacturer code did not follow this uppercase/lowercase rules (although I cannot confirm that from my personal testing)

I tried auvaltool and auval as arguments and both returned info about the tool itself nothing further about the plugin. Also for the other plugins that have worked, they have Manu listed as the manufacturer and are being recognized so I don’t think that’s the issue.

AU Validation Tool
Version: 1.8.0
Copyright 2003-2019, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options

Not enough arguments for ‘-v’ flag.

Invalid Arguments: auvaltool

Ah sorry, you have to add the aufx part of course. So auvaltool -v aufx L71z Manu

This was the only fail returned

ca_require: GetElement(inScope, inElement) != NULL InvalidElement JUCE/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBase.cpp:562
ERROR: -10877 IN CALL Get Output Format

    • FAIL

Ah great, now you know why GarageBand refuses to load your plugin :tada:

I’m no in depth AU expert but this looks like it doesn’t like something about some output format you have chosen, I guess that’s a good base for starting some focused research :slight_smile:

1 Like

Right, I just tested the others that work and they return as successful. This is a good start. Thank you for your help.

So I just tried another of the Juce plugin tutorials and this time it successfully validated but still didn’t show. Then I tried a new “Hello World” plugin and that shows. This makes me think there is something inside the tutorial’s code that causes it not to appear.