aap-core v0.11.0, aap-lv2 v0.6.0, aap-juce v0.8.0 released #219
atsushieno
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Today I have tagged v0.11.0 on aap-core, v0.6.0 on aap-lv2, and v0.8.0 on aap-juce repos. We are going to release UAPMD v0.5.0 to support AAP v0.11.0 as well.
If everything goes well, this version and the related stuff will be released as AAP v1.0 Preview ecosystem.
AAP v0.10.0 was released two months ago. It had a lot of eye-candy stuff with the advanced plugin UI support, but not a few core features were not functional and did not integrate well with plugin host (namely UAPMD). This AAP v0.11.0 brings in a lot of them really functional with the reworked architecture so that the entire AAP ecosystem becomes really useful.
I also published some screenrecordings of AAP in action. For example:
https://www.youtube.com/watch?v=Er2E2LjYmdw
... it uses a UAPMD project that was created by importing some SMF, assigned plugins, saved, and then (the demo starts) loaded and played.
This month I also had a session talk at ADC Japan 2026. The slides are uploaded to SpeakerDeck. If you cannot wait for ADC recordings, you can watch my (kind of) replay on YouTube.
Overview of the changes
AudioPluginService gen.4 Protocol (Breaking Change)
We have made a lot of breaking ABI changes since the last version. That means, existing plugins and hosts for older versions are not usable with AAP v0.11.0 or later anymore. Technically, our
AudioPluginService'sandroid:namehas changed toorg.androidaudioplugin.AudioPluginService.V4which gen. 3 hosts don't query and gen. 3 plugins don't advertise.The actual ABI breakage is at the Binder API level (AIDL). There are changes in the fundamental extension and host extension messaging to become "asynchronous". With this change, extension functions such as States, Presets, and Parameters API got async-ified.
Host extension foundation got refresh implementation and similarly async-ified, but we don't have working host extension implementation yet (such as parameters metadata change notification).
We still haven't async-ified the extension API this time, but libandroidaudioplugin C++ API is async-ified as well. AAP-JUCE and UAPMD make use of this updated C++ API.
Fundamentals
AAP v0.11.0 realizes these features:
sampleRateparameter from instantiation toprepare()so that changing the sample rate does not have to involve instance destruction and recreation (which is a technical debt from LV2 API). #163<extension>elements, we can specify<extensions bom="0.12.0" />inaap_metadata.xml. #186MIDI-CI Property Exchange integration
We could finally integrate atsushieno/midicci on our Midi(Ump)DeviceServices. If a MIDI-CI client queries AllCtrlList, CtrlMapList, and ProgramList, they get responses from those AAP MIDI devices. You can actually build and run midicci-app from the repo to verify interoperability.
Support for CLAP hosting API
While it is not really tested a lot, we have a new module called aap-clap-hosting-helper that makes it possible to build AAP host using CLAP API. IF you write a CLAP host and get it running on Android, you can reuse your host code a lot. With this API, every
AudioPluginServiceis enumerated asclap_entry_t.AAP GUI extension is exposed as our own type.
There is an example host application that just lists installed "(pseudo) CLAP" plugins and shows its parameters and presets in CLAP manner.
Integration tests and androidaudioplugin-js-controller module
AAP repositories are split by nature, and thus testing its behavior has not been always practical. We finally created
aap-integration-testsrepository which is an AI-slop, testing foundation that downloads GitHub Actions artifacts for the registered repositories, runs multiple host apps, and performs automated testing on each host. On GitHub Actions we use Gradle Managed Device so far.To make integration testing practically possible, we have introduced a new AAP host controller module based on QuickJS, just like we do on UAPMD. Coding AI agents can also connect to the JS controller over adb connection and send instructions.
Those integration test items are mostly added using coding AI agents and human languages.
Stability fixes
Beta Was this translation helpful? Give feedback.
All reactions