Fail to import JUCE plugin into Logic Pro X

Dear JUCE users,

Hi! I made a small plugin by Faust and exported it into Juce. I then built the .component file and moved it to the folder /Library/Audio/Plug-Ins/Components. However, my Logic Pro X kept reporting “couldn’t be opened” in the compatibility column. Does anyone know what the problem is? Thanks!

Sincerely,

Hanzhi

AFAIK Logic Pro performs a check on basic functioning when it tries to import a plugin, so this could be your plugin just crashing or hanging when LogicPro tests it. You can debug the plugin in Xcode by specifying Logic Pro as the executable in the scheme for your plugin. Have you tried debugging with the example plugin host provided with Juce? This is often a lot simpler as a starting point

First should be running auval with your plugin. You need to know the three identifiers to tell auval what to test. It will show you a report what criteria were not met (or if your plugiin crashes, auval will crash with it).

Logic uses auval for it’s validation as well. If you select your plugin (if it already shows up there) and click “Reset & Rescan Selection” it will show the result in a new window.

…and you can use “auval -a” to show all the Audio Units that it recognizes. In that list, it will show the three identifiers in the order you’ll need to pass them to “auval -v XXXX YYYY ZZZZ”.

Yes I have made Logic Pro the executable in the scheme but I didn’t see any difference…

Yes I here have the screenshot after I click “Reset & Rescan Selection.”

Thank you guys for help! I here have a screenshot of my xcode window. Honestly what makes me more confused is that each time I redid the whole process it just turned out to be different results. Sometimes the standalone app fails to work, and sometimes the .component bundle fails.

It is a scroll field, the error might be above.
Also when you see an JUCE Assertion it tells you where to look at. In your case in the file juce_AudioProcessor.cpp in line 454 and 465. There is usually a text explaining, or at least the condition that was expected but not met:

TL;DR:

  • your parameter IDs are too long, more than 31 characters (1st assert).
  • and because they are shortened to 31 characters they are no longer unique.

But that is unlikely the problem why Logic pulls out.

The error message can be found as well online

If you are lucky you find in the output a more descriptive error message

validating Audio Unit HZFaust0458 by GRAME:

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

VALIDATING AUDIO UNIT: ‘aumu’ - ‘7669’ - ‘Manu’

Manufacturer String: GRAME
AudioUnit Name: HZFaust0458
Component Version: 1.0.0 (0x10000)

    • PASS

TESTING OPEN TIMES:
COLD:
JUCE v6.1.2
JUCE Assertion failure in juce_AudioProcessor.cpp:1154
JUCE Assertion failure in juce_AudioProcessor.cpp:983
Started with 16 voices
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
Time to open AudioUnit: 118.259 ms
WARM:
JUCE Assertion failure in juce_AudioProcessor.cpp:1154
JUCE Assertion failure in juce_AudioProcessor.cpp:983
Started with 16 voices
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
JUCE Assertion failure in juce_AudioProcessor.cpp:454
JUCE Assertion failure in juce_AudioProcessor.cpp:465
Time to open AudioUnit: 37.265 ms
FIRST TIME:
FATAL ERROR: Initialize: result: -10868
*** Leaked objects detected: 10 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class HashMap
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 4 instance(s) of class AudioBuffer
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 1 instance(s) of class TimerThread
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 3 instance(s) of class AsyncUpdater
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 1 instance(s) of class Thread
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 3 instance(s) of class WaitableEvent
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 88 instance(s) of class AudioParameterFloat
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 98 instance(s) of class AudioProcessorParameterNode
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 10 instance(s) of class AudioParameterBool
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 98 instance(s) of class AudioProcessorParameterWithID
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 98 instance(s) of class AudioProcessorParameter
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 6 instance(s) of class MidiBuffer
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class FaustPlugInAudioProcessor
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class AudioProcessor
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class AudioProcessorParameterGroup
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 2 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 4 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 14 instance(s) of class BigInteger
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 1 instance(s) of class MessageManager
JUCE Assertion failure in juce_LeakedObjectDetector.h:92
*** Leaked objects detected: 118 instance(s) of class StringArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:92

validation result: couldn’t be opened

Sorry I forgot to copy and past the whole report! I have attached it in my previous reply.

So, what’s on line 1154 of that file? The assertion there should tell you something. You’ve already been told what’s apparently causing the assertion on line 454.

Oh I checked it and find out all the issues were related a function called jassert (is it juce assert?). I tried to simply delete the lines and the report turned out to be like this:

I think that’s a problem related to Juce’s original modules files?

jassert is a helper to avoid let you go down a rabbit hole, so you can fix your errors early on.

jassert means: “Make sure this condition is true. If not stop the debugger so the developer (you!) can fix their code.”

There is a variant I just learned now:
jassertquiet: “Make sure this condition is met. If not print a debug text but don’t stop”.

The jassert calls are in the juce code, but they are triggered because of errors in your code.

The jassert function is simply an assertion telling you something is wrong with your code. Don’t remove the jassert; fix what is wrong that is causing the assertion to fail!

Oh then I guess I know what the problem comes from…
My plugin is actually coded in another programming language called Faust. I compiled and exported the code to the JUCE architecture in order to make a .component and .app file. I guess that’s where the problem comes from.

Also it explains why everytime I do the same process but get a different result.

Xcode keeps saying “unexpected C compiler invocation with specified outputs…” …