Pluginval: AU plugins returning "No types" but play fine in Logic

I am tasked unifying a couple of plugins for different platforms. The AU plugins I got fail validation in pluginval:

pluginval v0.2.3 - JUCE v5.4.3
Started validating: /Library/Audio/Plug-Ins/Components/RevoiceProLink.component
Random seed: 0x59dfcb8
Validation started: 16 Dec 2019 1:22:04pm

Strictness level: 5
-----------------------------------------------------------------
Starting test: pluginval / Scan for known types: /Library/Audio/Plug-Ins/Components/RevoiceProLink.component...
Num types found: 0
!!! Test 1 failed: No types found
FAILED!!  1 test failed, out of a total of 1

Finished validating: /Library/Audio/Plug-Ins/Components/RevoiceProLink.component
*** FAILED: 1 TESTS

But they succeed in Logic:

validating Audio Unit Revoice Pro Link by Synchro Arts:

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

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'RvRP' - 'SyAt'
--------------------------------------------------
Manufacturer String: Synchro Arts
AudioUnit Name: Revoice Pro Link
Component Version: 4.1.6 (0x40106)

* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
RevoiceProLink Create - Instances: 1
Time to open AudioUnit:         5.169 ms
WARM:
RevoiceProLink Create - Instances: 2
Time to open AudioUnit:         0.076  ms
FIRST TIME:
Time for initialization:        0.006 ms
RevoiceProLink Delete - Instances: 1

* * PASS
--------------------------------------------------
VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
 Default Bus Count:1
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved

Output Scope Bus Configuration:
 Default Bus Count:1
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved

* * PASS
--------------------------------------------------
VERIFYING REQUIRED PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING RECOMMENDED PROPERTIES:
  VERIFYING PROPERTY: Latency
    PASS
  VERIFYING PROPERTY: Tail Time
WARNING: Recommended Property is not supported

  VERIFYING PROPERTY: Bypass Effect
    PASS

* * PASS
--------------------------------------------------
VERIFYING OPTIONAL PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
  RevoiceProLink_CocoaViewFactory
    PASS

VERIFYING CLASS INFO
    PASS

TESTING HOST CALLBACKS
    PASS

* * PASS
--------------------------------------------------
PUBLISHED PARAMETER INFO:

# # # 1 Global Scope Parameters:

* * PASS
--------------------------------------------------
FORMAT TESTS:

Reported Channel Capabilities (implicit):
      [-1, -1]

Input/Output Channel Handling:
1-1   1-2   1-4   1-5   1-6   1-7   1-8   2-2   2-4   2-5   2-6   2-7   2-8   4-4   4-5   5-5   6-6   7-7   8-8
X                                         X                                   X           X     X     X     X     

* * PASS
--------------------------------------------------
RENDER TESTS:

Input Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Output Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Render Test at 512 frames
CallHostTransportState Error correction: 1 Current 0.000000 Last:0.000000 Correct: 0.000000 SampleTime: 0.000000
Slicing Render Test at 64 frames
  PASS


Render Test at 64 frames, sample rate: 22050 Hz
Render Test at 137 frames, sample rate: 96000 Hz
Render Test at 4096 frames, sample rate: 48000 Hz
Render Test at 4096 frames, sample rate: 192000 Hz
Render Test at 4096 frames, sample rate: 11025 Hz
Render Test at 512 frames, sample rate: 44100 Hz
  PASS

1 Channel Test:
Render Test at 512 frames
  PASS

Checking connection semantics:
Connection format:
AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
  PASS

Bad Max Frames - Render should fail
  PASS

Checking parameter setting
Using AudioUnitSetParameter
Using AudioUnitScheduleParameter
  PASS

Test MIDI
  PASS

* * PASS
--------------------------------------------------
RevoiceProLink Delete - Instances: 0
AU VALIDATION SUCCEEDED.
--------------------------------------------------


validation result: successfully validated

updating properties of AU Revoice Pro Link by Synchro Arts…done.

However, the commandline auval seems to fail as well:

➜  ~ auval -v aufx SyAT RvRP

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

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'SyAT' - 'RvRP'
--------------------------------------------------
ERROR: Cannot get Component's Name strings
ERROR: Error from retrieving Component Version: -50

* * FAIL
--------------------------------------------------
TESTING OPEN TIMES:
FATAL ERROR: didn't find the component

Although auval seems to be gone anyway, since auval -a only finds apple components on my system now… (This is Mojave)

Are there different mechanisms to load AU plugins?
Is this an issue with backwards compatibility?

What is the advice to keep my plugins valid for pluginval?

I think you need to restart the component manager when you add new plugins:
killall -9 AudioComponentRegistrar

Does it find it after running that from the Terminal?

Unfortunately it is not a matter of restarting, I have that plugin installed for a few weeks already (and obviously restarted several times in the meantime).

The major difference I can see is, the new method looks only into the Info.plist inside the bundle. The plugin has no .r and .exp files (and seems not to need them).
To me it seems there are two methods to query the components, and the older one seems no longer to be used.

Even if I were to add a .r and .exp file (you have to dig deep to find any information about what to put in), I didn’t manage to get XCode to actually use them.

At least on Mojave, auval seems to find plugins as expected when run in Terminal, but finds only system plugins when run in Iterm2 or over SSH.

This also seems to be the case when trying to check an AU with pluginval from the command line.

To solve that, have a look at this: https://stackoverflow.com/questions/56993800/some-audio-unit-code-incl-auval-does-not-work-in-iterm

1 Like