The plugin crashes due to objectAtIndex trying to access index - 1 of that array
The fix could be to for RNBO::JuceAudioProcessor's _currentPresetIdx field to be initialised to 0 or a different value. I can verify setting the program to 0 (as well as patching JUCE bounds checking code above to consider lower bounds) fixes crashes in AUM for my iOS plugin.
All the best
The problem is on RNBO_JuceAudioProcessors.cpp line 246:
This is a duplicate of https://github.com/Cycling74/rnbo.example.juce/issues/18, since it should apply to this repository.
The problem is that the initial program being set to
-1
causes some iOS hosts to crash the plug-in when it is loaded.I'm copying all information that was linked above.
This is fine on most iOS hosts, but for AUM (https://apps.apple.com/us/app/aum-audio-mixer/id1055636344) which is a highly used host for iOS, the fact the initial program is set to -1 causes the plugin to crash.
The reason is that -1 is not a valid program index and JUCE AudioUnit code is not handling -1 as an input. See:
juce::JuceAudioUnitv3::FactoryPresets::getAtIndex
What AUM seems to do it:
Create the plugin filter; here the RNBO::JuceAudioProcessor constructor sets the current program to -1
Get the current preset by calling
juce::JuceAudioUnitv3::getCurrentPreset
At this point, we're calling
factoryPresets.getAtIndex (-1)
; see the implementation of this method does no lower bounds checkingThe fix could be to for RNBO::JuceAudioProcessor's
_currentPresetIdx
field to be initialised to 0 or a different value. I can verify setting the program to 0 (as well as patching JUCE bounds checking code above to consider lower bounds) fixes crashes in AUM for my iOS plugin.All the best
The problem is on
RNBO_JuceAudioProcessors.cpp
line 246:https://github.com/Cycling74/rnbo.adapter.juce/blob/main/RNBO_JuceAudioProcessor.cpp#L114