AUv3 hosting - iOS - three display problems!

Hi @reuk, thanks so much for checking.

Really looking forward to trying out your fixes :slight_smile:

Best wishes,

Pete

Hi @reuk

Just playing with Garage Band, which shows a user interface for (say) AUReverb2 on iPad.

Do you think that Garage Band is constructing its own UI for AUReverb2 (etc.) …?

Best wishes,

Pete

I think if the plugin has no editor you can use GenericAudioProcessorEditor?

@eyalamir wow, I didn’t even realise that existed!

So surely, createEditorIfNeeded() would instead return an instance of that instead?

Best to all,

Pete

For now, I can bodge this like this:

    if (processor.hasEditor() == false) {
      return new juce::GenericAudioProcessorEditor(processor);
    }

    if (auto* ui = processor.createEditorIfNeeded()) {
      return ui;
    }

Pete

I’m not sure createEditorIfNeeded() needs to default to the juce generic editor implementation, as many times you want to pass forward the fact it’s nullptr or some other invalid representation of the editor.

Anyway I think what you’ve done is correct.

Thanks @eyalamir ! Pete

Just thought I’d mention that in my Plug-in host window, when the close button is pressed, I’m finding I’m having to do this on iOS otherwise something hangs around that prevents me tapping-though the to user interface. Can’t see why, but just in case it helps somebody…

    setBounds(-5000, -5000, 100, 100);
    removeFromDesktop();
1 Like

I’ve merged the improvements to the AudioPluginHost now:

1 Like

@reuk thank you very much :slight_smile:

Pete

Sorry for hijacking this thread but are you able to get other plug-ins scanning and showing up?
(without first invoking GarageBand for example)

Maybe it’s the fact my iPad 7th gen uses A10 CPU?

Hi @ttg yes, no problem on that score!

So, for example, I see all the standard AUReverb2 etc. units (which I guess are installed with Garage Band).

Plus, I can see others I have installed, such as miRack.

Hoping that helps!

Pete

@ttg install the Free Wotja for iOS - which I wrote, and is Juce based! - and you should see the Wotja AUv3 as an instrument.

Hoping that helps!

Pete

Sadly also with Wotja it’s the same. unless another host was open earlier on my iPad 7th gen with 14.4, I can’t get any AUv3 to show up or scan properly. as in the issue above.

AUVerb2 isn’t a problem btw, try other freebie third part AUv3.

Nice app btw, it seems you’ve used a lot native UIViews?

Hi @ttg

Well, that is really weird then. I wish I knew what to suggest!!!

Unless, perhaps, your host app is missing permissions / not signed properly (just clutching at straws here).

Many thanks for your kind comment. Actually, no! :slight_smile:

Rather, Wotja’s UI sits on top of a “UIKit-like” layer I wrote (with a navigation model etc.) that in turn sits on top of Juce. It took a lot of work, but it means that Wotja feels pretty close to a native iOS (or macOS etc.) app, despite actually using Juce for all of its rendering!

IMO that is a big missing layer in Juce. I mean, there is nothing technically to stop any dev from creating their own layer, like I did, but it certainly took a lot of effort to create it, and then polish it!

Best wishes

Pete

Just to say that one thing that really bugs me about a lot of apps, is that so many of them seem to bring their own design language. We’ve worked pretty hard to keep ours very mainstream, i.e. as close to standard iOS vanilla app as possible. Wotja is hard enough to learn, without having to learn a different UI language :slight_smile:

My app is behaving the same when signed and not. Does your app has IAA entitlement? Or can be loaded as IAA plug-in?

So also the action sheets aren’t native iOS?

And your dialog boxes with text input?

Hi @ttg

Yes, the app does have IAA entitlement (that is for our AudioBus support).
The extension doesn’t of course. :slight_smile:
I’d be surprised if that were behind your problem though, TBH.

So what I’m doing is, using the services of juce::PluginDirectoryScanner
I’m actually doing each step of the scan as a separate operation in a background NSOperation queue instance, in case that is important.

The “formatToScan” that I’m passing-in is just default:
juce::AudioUnitPluginFormat formatToScan

Maybe… have you configured your Juce project to support AUv3 properly?
#define JUCE_MODULE_AVAILABLE_juce_audio_plugin_client 1
#define JUCE_MODULE_AVAILABLE_juce_audio_utils 1
#define JUCE_PLUGINHOST_AU 1

I think they’re the key ones.

Aha, yes, our action sheets are native iOS, good spot. So on iPhone/iPod, we use native action sheet menus, and on iPad we use native pop-up menus (which, frankly, are much more attractive than the Juce built-in ones - that required a bit of a Juce patch).

Message boxes (alerts) are also native - and yes indeed, text entry. The text entry VC is handled via a layout in a storyboard, and a bit of Swift - nothing fancy.

I had to work quite hard to get iOS (and Android) keyboard pop-ups to work well with Juce, in the context of screens that are otherwise “pure Juce”. If you were to look at one of the script editors in Wotja, you should be able to see how this works in practice. Required some modest patching to Juce. I’m quite pleased with the results of the work I put in, however!

Best,

Pete

1 Like

as I’ve wrote here - AUv3 not showing up in iOS simulator/device - #10 by ttg

IAA entitlements needed for proper AUv3 hosting. (at least on some devices)

Would be nice if juce team would add those when hosting AUv3 or at least allow to add the entitlement without IAA plugin support.

1 Like

Aha, good to know! :slight_smile: