iOS AUv3 version of examples /PluginSamples/Arpeggiator


Just had a public online convo with Bram Bos about this on the FB group: “iPad Musician”.
Your thoughts? I’m dying to get going on this but don’t want to have to write forked-off JUCE Native objcC code for this…

"AudioBus3 was a significant game-changer for me - opening up huge new possibilities. And When Apple finally gets its arse in gear and enables MIDI Effect compatibility for AUv3s then things will REALLY take off…
Like · Reply · 19 mins
Bram Bos
Bram Bos Uhh… they did. Since iOS11.
Like · Reply · 15 mins
Daniel Stenning
Daniel Stenning i’m referencing all our PM convos on this…
Like · Reply · 13 mins
Bram Bos
Bram Bos Yes, but it’s not Apple’s fault that Juce doesn’t support it yet? AU MIDI (including effects) have now pretty much been proven to work, haven’t they? :slight_smile:
Like · Reply · 12 mins
Daniel Stenning
Daniel Stenning From Fabian at ROLI (JUCE) 18 days ago:
"Right now there is no “official” midi effect AUv3 support. You can, however, simply create an AUv3 Synth with both midi input and midi output (you’ll still have an audio bus - but just silence the output). The important thing is that you change the target to iOS 11.
Once we get some official response from Apple (we are in contact with them), we will add official support for this in JUCE."
Like · Reply · 11 mins
Daniel Stenning
Daniel Stenning yes Bram - its been proven to work - but so far - AUM for example - does not allow the kind of neat GUI we see in AudioBus3 - for sensibly “chaining” midi effect plugins. And it is - as i understand it because there is currently not a clean way of categorising or labelling/flagging what is actually JUST a pure MIDI effect AU like ROSETTA - as opposed to an actual synth AU that also processes and puts out MIDI.
Like · Reply · 8 mins · Edited
Daniel Stenning
Daniel Stenning And I take it that your current solution doesnt use the kAudioUnitType_MIDIProcessor flag right ?
Like · Reply · 7 mins
Bram Bos
Bram Bos Yes there is, and Jonatan and myself have had it working in an AUM beta version, but decided not to go ahead with it yet.

So none of these limitations are Apple’s fault. Hosts just have to adapt to the new format.
Like · Reply · 7 mins
Daniel Stenning
Daniel Stenning Before you do decide to go ahead - can you PM me your code examples - since I’m dying to get going with this for my own projects - even if i have to bypass an write my own code for this… although - TBH - id rather not. Because forking off the relevant JUCE code would be a pain.
Like · Reply · 4 mins · Edited
Daniel Stenning
Daniel Stenning OTOH… since I’m really focusing on 99% Apple as target - no more - I DO contemplate from time to time ditching JUCE and C++ ( for the most part ) and just going for a modern Swift solution and using maybe AudioKit … any thoughts ?
Like · Reply · 3 mins · Edited
Bram Bos
Bram Bos Look into ‘aumi’ versus ‘aumu’.
Like · Reply · 1 · 3 mins"


How about on iOS? I have been alerted that my JUCE based plugins don’t work in GarageBand (but they work fine in Beatmaker, in the Audiobus effect bus, etc.). Is there anything special I have to do to make them work with Apple’s apps? Like registering them or so?


So, right now, when you compile an AUv3 midi effect plug-in with JUCE it will create an AU which works perfectly as long as the host supports AUv3s with type kAudioUnitType_MIDIProcessor.



So isn’t it time that someone in ROLI updated the JUCE examples to include an iOS Build project for the Arpeggiator ? So far - on inspecting 5.2.1. I still only see MacOSX and VS branches there.

It would be helpful to just be able to see and examine a “reference” AUv3 midi effect plug-JUCE project.


FYI and for reference - ( reposted here on suggestion of Fabian )
Bram Bos - developer of many fine iOS apps - and the first iOS AUv3 MIDI plugins very recently updated a page on his site to reflect feedback from Apple.
You can read it here


Word of warning: an AUv3 with type kAudioUnitType_MIDIProcessor (that is to say, an aumf, as opposed to an aufx) won’t pass Review. While aumf is a recognized type in iOS, and some hosts can see it, Garageband ignores aumf AUs, and that is the principle test host the reviewers use in the final step. It will past TestFlight, which is largely automated, but not actual Review.

Until they change this, you need to render your MIDI effect as an instrument or aufx (leave the “MIDI input” box in ProJucer unchecked for effects.) Bram touches on this in his document, and it has not changed. You also need to target iOS 11. Note that it will work fine. AUv3 passes MIDI through, and if you have a Midi Message handler in your process block, it will work as normal whether or not the MIDI input is “activated” in ProJucer.


since WWDC2018 has there been any change in Apple’s position regarding kAudioUnitType_MIDIProcessor ?


There’s a lot in the store now (Bram’s Rozetta package being the notable one) so obviously they’re passing review now. Bram had a hell of a time getting the first release of Rozetta passed, but they’re in there now. Still not recognized by Garageband, though.


apparently a plugin can have double AU component descriptions, to support non-aumi-enabled hosts as well. I guess this is what Bram and others have had to do.

The recently launched ‘StepPolyArp Unit’ AUv3 is an AUMI apparently, but again maybe the developer of that ( Laurent ) had to use ‘aumi’ as the second decription to get past review.


It would be interesting if someone could confirm that kAudioUnitType_MIDIProcessor is now also officially passing review (without a second descriptor).


Hi, could someone document here what the current requirements and Projucer settings are for creating a MIDI generating Auv3 plugin? thx


Also, are there any tutorials/projects available for building/installing/debugging such plugins.



@fabian - hi, any comments on my previous couple of comments?


Seconded here.

I’m considering working on a MIDI FX plugin - am in half a mind to just go ahead regardless but would be so so much reassured if there were at the least one “reference” guideline blah blah MIDI FX plugin example in the JUCE-examples directory that I/we could refer to and use as a guideline. Not to mention reducing the chances for unnecessary branching/splintering, rolling-ones-own , mousetrap-alternative-bloat when there is no need.