The AAP Project has released AAP: Audio Plugin For Android version 1.0 Preview as a plugin ecosystem that contains the API, set of libraries, open source plugin ports from desktop, and a host sequencer called UAPMD.
AAP: The Audio Plugin Format for Android
Android lacks commonly used audio plugin format. On Windows and other desktops, VST plugins are popular. On macOS and iOS (including iPadOS) there is AudioUnit. On Linux LV2 is used, as well as VST2 (or compatibility) and VST3.
There is no such a format for Android. Audio Plugins For Android (AAP) is to fill this gap.
AAP aims to provide an inclusive standard for audio plugins, adopted to the Android applications ecosystem. The license is permissive (MIT). It is designed to be usable like other specific audio plugin formats like VST3, LV2, CLAP, and so on, as long as their features are supported in AAP. Note that those desktop formats are not designed to work on Android – AAP is more like AudioUnit v3 on iOS.
AAP Host and Plugin Apps on Google Play Store
For general non-developer users, AAP version 1.0 Preview comes with a handful of apps and some are available on Google Play Store.
UAPMD is the reference plugin host + sequencer implementation, which supports VST3/AU/LV2/CLAP on desktop, AAP on Android, AUv3 on iOS, and WebCLAP on the browsers. As a plugin host, you can query locally installed plugins, instantiate them either as an instrument or an effect, send MIDI messages including note on/off, get and set parameters, load presets, save and load its state. As a sequencer, you can save and load a music project, import audio clips and MIDI clips, assign plugins to each track, optionally make edits on the minimum pianoroll, and play it like a DAW does.
Others are plugins:
- AAP MDA-LV2: MDA plugins, ported from mda-lv2 plugin collection for LV2.
- AAP Dexed: Dexed FM synthesizer ported to AAP.
- AAP Surge XT: Surge synthesizer ported to AAP (without large assets).
- AAP Odin2: Odin2 synthesizer ported to AAP.
- AAP OPNplug-AE: OPNplug, an OPN emulator-based synthesizer, ported to AAP. It is part of the ADLplug project.
- AAP BYOD: BYOD, a neural-network-based distortion emulator plugin, ported to AAP.
- AAP Wavetable: the “Wavetable” synthesizer by SocaLabs, ported to AAP.
- AAP Audible Planets: Audible Planets synthesizer ported to AAP.
- AAP OB-Xf: OB-Xf, a fork of OB-Xd which is maintained by the Surge synth team, ported to AAP.
- AAP Vaporizer2: Vaporizer2 synthesizer, which was open sourced a while ago, ported to AAP.
There are handful of more plugin ports of open source LV2 or JUCE plugins on GitHub.
You can instantiate these plugins on UAPMD or any host apps that support AAP in the future. The plugin apps come up with its own simple host application written in the Android GUI manner (Jetpack Compose) for simple feature demonstration.
AAP Components for Developers
For developers, AAP version 1.0 Preview comes with a handful of components and packages that tries to prove it is useful and makes sense:
- LV2 bridge: while AAP itself does not come up with stable API that developers find comfortable to develop with, it provides LV2 plugin bridge (without GUI support).
- JUCE modules: similar to ‘aap-lv2’, AAP comes with JUCE modules so that any JUCE plugin developers can write code in JUCE manner, and only have to make it work with Android. ‘aap-juce’ also provides hosting implementation too.
- Plugin ports from desktop: AAP comes with a handful of open source LV2 and JUCE plugin ports, such as MDA-LV2, Dexed, Surge XT, and airwindows. AAP has 10+ up-to-date ports, and many of those are up at Google Play Store under the developer’s profile.
- UAPMD (a host/sequencer): see the description above.
- CLAP hosting helper: for those who want to write hosts in common API with a liberal license.
AAP (Core) itself is an open source project. You can find more details at: github.com/atsushieno/aap-core
UAPMD, a cross-platform, multi-track audio plugin host sequencer that works as virtual MIDI 2.0 devices
UAPMD (Ubiquitous Audio Plugin MIDI Device) is a cross-platform, multi-track audio plugin host sequencer that instantiates arbitrary audio plugins and exposes their control points as virtual MIDI 2.0 devices.
UAPMD as virtual MIDI 2.0 devices
With the UAPMD virtual devices, you can use arbitrary MIDI 2.0 client apps to:
- Play MIDI 2.0 instruments with 32-bit precision; use Assignable Controllers (NRPNs) to change plugin parameters in 32-bit values (velocity in 16-bit).
- Retrieve parameter list as Assignable Controllers and presets as Program List, as long as they are exposed via the plugin APIs. Thus you don’t have to remember which controller index maps to the parameter you want, or which program number maps to the tone you need.
- Save and load the plugin’s binary state (.vstpreset etc.), just like how you use them in a DAW.
The AAP Project built MIDIcci, a fully featured MIDI-CI library with MIDI 2.0 virtual (software) keyboard that leverages the full potential of this project: github.com/atsushieno/midicci/
UAPMD as a plugin host and sequencer
uapmd-app is a proof-of-concept sequencer application and its engine, uapmd-engine, is currently capable of:
- Managing a master track and multiple tracks, where:
- Each track has a linear list of audio plugins, and.
- Contains audio clips and MIDI clips together.
- Importing SMF into multiple tracks.
- Importing audio file into multiple tracks using STEM separator (demucs.cpp).
- Saving and loading them as a project.
- Full external control using JavaScript, along with MCP server.
UAPMD supports the following platforms:
- Linux desktop: VST3, LV2, CLAP.
- macOS: VST3, AU(v2/v3), LV2, CLAP.
- Windows: VST3, LV2, CLAP.
- Android: AAP.
- iOS: AUv3.
- Web browsers: WebCLAP.
UAPMD Availability
UAPMD is an open source project hosted at GitHub so far. Binary packages for Linux (.deb, and .rpm), and Windows are available on the Releases page: github.com/atsushieno/uapmd/releases
macOS users can get it using Homebrew (‘brew install atsushieno/oss/uapmd’).
The Android version is published at Google Play Store.
The Web browser edition is always published at GitHub Pages: atsushieno.github.io/uapmd
Read More