AU validation and errors

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

I have issue about audio units.Made with IPlug.

Building is okay.No issue.Validated in Logic.I can see my audio units in Reaper and Logic.But my friends can't see.For example i have 5 different EQs.One of my friends can't see any AU.Other one see some AU only.And others can't see all AU in Logic.

They getting this error:

"could not be opened"

and

"While verifying Audio Unit compatibility, Logic Pro X encountered 1 Audio Unit plug-in(s) which did not pass the Apple AU validation. These plug-ins have been excluded from further usage in Logic Pro X to prevent possible problems or crashes. You can start the Plug-In Manager now to review the validation results or continue the startup process."

Any idea?

Thanks.
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

Have you updated the version inbetween builds? Logic only scans your AU if you changed the version.

Apart from that, AUvalidation was updated several times. You might want to try a validation run on the latest MacOS release.

A word of experience: Write a shell script that does an AUValidation run for all of your plug-ins. Add it as a post-build step in your XCode release target. Do a release build at least once a week.

If you want to be extra serious, direct the AUValidation output into a file. Keep one of those files as reference, e.g. from your last release version of your software (with successful validation, of course). Then, from the same script, compare the two files and make your build fail if there's any difference. Best unit test ever for AU developers.

Additionally, XCode lets you define multiple "build schemes" for the same target. I always keep one which launches AUValidation as debug executable. It's the fastest way to quickly see if stuff runs and renders, and you get a free AUVal on top.

Cheers,

- Urs

Post

Urs wrote:Have you updated the version inbetween builds? Logic only scans your AU if you changed the version.

Apart from that, AUvalidation was updated several times. You might want to try a validation run on the latest MacOS release.

A word of experience: Write a shell script that does an AUValidation run for all of your plug-ins. Add it as a post-build step in your XCode release target. Do a release build at least once a week.

If you want to be extra serious, direct the AUValidation output into a file. Keep one of those files as reference, e.g. from your last release version of your software (with successful validation, of course). Then, from the same script, compare the two files and make your build fail if there's any difference. Best unit test ever for AU developers.

Additionally, XCode lets you define multiple "build schemes" for the same target. I always keep one which launches AUValidation as debug executable. It's the fastest way to quickly see if stuff runs and renders, and you get a free AUVal on top.

Cheers,

- Urs
Thanks for reply.

I didn't change version.And i tried everything but still no luck.

It's really strange issue.

For example i have 5 eq.NVQ,NVTQ,PEQ,TEQ and SEQ.

Someone sees PEQ,NVQ and NVTQ.

Other one sees SEQ,NVQ and TEQ.

And another one sees only PEQ.

I can see all AUs.

What causes this?
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

By the way auval sees my AUs.
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

I have the same issues, it seems that auval doesn't validate the plugins in the same way Logic or Garage Band does. Thanks Apple...

Post

Miles1981 wrote:I have the same issues, it seems that auval doesn't validate the plugins in the same way Logic or Garage Band does. Thanks Apple...
But Logic and auval can see as validated my AUs in my system.But for other systems,it causes validation issues.Still trying to fix...
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

But Logic and auval can see as validated my AUs in my system.But for other systems,it causes validation issues.Still trying to fix...
Seems like each one is a bit different:-)
~stratum~

Post

stratum wrote:
But Logic and auval can see as validated my AUs in my system.But for other systems,it causes validation issues.Still trying to fix...
Seems like each one is a bit different:-)
Maybe,but...

I checked what is different but can't see any difference.

Same SDK,same target,same arch...

:scared:
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

Hi tunca,

did you add "SetIsMeta(true)" to your code?
bruno @ Xhun Audio || www.xhun-audio.com || Twitter || Instagram
Image

Post

xhunaudio wrote:Hi tunca,

did you add "SetIsMeta(true)" to your code?
You mean

Code: Select all

GetParam(param)->SetIsMeta(true)
?

I just saw this but have no idea where and how to add.
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

tunca wrote:
xhunaudio wrote:Hi tunca,

did you add "SetIsMeta(true)" to your code?
You mean

Code: Select all

GetParam(param)->SetIsMeta(true)
?

I just saw this but have no idea where and how to add.
Exactly, place it in your constructor.
Apply it for each parameter that, when its value is changed, it changes also other parameter/s.

In other words, if in the method onParamChange() you declared that when a certain parameter value is changed, then also other parameters' value will be affected, you have to add

Code: Select all

GetParam(param)->SetIsMeta(true)
for that parameter inside the constructor.

This could be the fix for your issue.
bruno @ Xhun Audio || www.xhun-audio.com || Twitter || Instagram
Image

Post


I checked what is different but can't see any difference.

Same SDK,same target,same arch...
My understanding is that they run a set of unit tests against the plugin, which might be slightly different for each host.
That's a bit odd, because running unit tests is not their job, but of the developer; but their documentation says exactly that. https://developer.apple.com/library/con ... 1-SECTION2
~stratum~

Post

xhunaudio wrote:
tunca wrote:
xhunaudio wrote:Hi tunca,

did you add "SetIsMeta(true)" to your code?
You mean

Code: Select all

GetParam(param)->SetIsMeta(true)
?

I just saw this but have no idea where and how to add.
Exactly, place it in your constructor.
Apply it for each parameter that, when its value is changed, it changes also other parameter/s.

In other words, if in the method onParamChange() you declared that when a certain parameter value is changed, then also other parameters' value will be affected, you have to add

Code: Select all

GetParam(param)->SetIsMeta(true)
for that parameter inside the constructor.

This could be the fix for your issue.

It's my OnParamChange.How to add this code?

Code: Select all

void BRUTUS::Reset()
{
  TRACE;
  IMutexLock lock(this);
}

void BRUTUS::OnParamChange(int paramIdx)
{
  IMutexLock lock(this);

  switch (paramIdx)
  {
    case kThr:
      mThr = GetParam(kThr)->Value();
      break;
      
    case kOut:
      mOut = GetParam(kOut)->Value();
      break;

      
    default:
      break;
  }
}
http://analogobsession.com/ VST, AU, AAX for WIN & MAC

Post

Code: Select all

BRUTUS::BRUTUS()
{
GetParam(param)->SetIsMeta(true)
}
that's what "for that parameter inside the constructor." means, I guess.
~stratum~

Post

Ah ok, it seems my suggestion is not for your case. You have just 2 params and each one does not affect others. So it is not necessary for you to add setismeta().

Sorry, :)
bruno @ Xhun Audio || www.xhun-audio.com || Twitter || Instagram
Image

Post Reply

Return to “DSP and Plugin Development”