Tracktion Engine: AUv3 plugin instantiation

I am trying to use AUv3 plugins with TE on iOS.
I have set allowPluginsWhichRequireAsynchronousInstantiation = true;
After, this, the engine is able to scan and see my AUv3 plugins. However, it looks I can’t instantiate them. I am wondering if TE:engine is using createPluginInstance in the place of createPluginInstanceAsync. Is there anything else I should set to make the AUv3 plugins work inside the TE:engine?

We haven’t much done testing of the engine on iOS, so this is something we will need to investigate. You are probably correct it isn’t using createPluginInstanceAsync.

1 Like


Bringing this old thread back; currently, AUv3 plugins still cannot be instantiated on iOS within a te::ExternalPlugin, as the instance needs to be created asynchronically.

I’m exploring two scenarios:

  • Assigning a custom createPluginInstance on PluginManager
  • Improving the current ExternalPlugin implementation on iOS

As JUCE’s AudioPluginFormat is using a WaitableEvent to block the main message thread until the instance is created, my initial idea of using a WaitableEvent as well within the createPluginInstance lambda on PluginManager will not work either.

Now diving into ExternalPlugin, the plugin instance is also blocking the initialization of the plugin until it returns, so I assume the best scenario would be to resume initialization once the instance is created, without blocking.

Any thoughts / pointers / ideas on how to implement this properly? That would be a great addition, but maybe someone has already achieved this – I might also be missing an easier way to do this, as I’m just starting to investigate the code and researching a bit.