Comments (6)
related aap-juce issue atsushieno/aap-juce#5
from aap-core.
With related to this issue, we would need some premise on the scope of this AAP project.
Currently it targets Android 10 devices or later, which kind of implies that only modern devices are in scope. Although there would be cheap devices nowadays and the premise is getting vanished.
So, the README.md should clearly mention that it targets only "capable" devices that supports quality low latency. Even with that it is still unclear if we can achieve basic usability here. I would go for features implemented first though. Arbitrary third-party audio plugins with arbitrary hosts are still good (I believe AudioRoute-SDK already does that though, on its own way).
Google has the basic Android device capability guidelines called CDD (Compatibility Definition Document), which has been updated every time Google releases new versions. The latest (as of writing this) Android 10 CDD mentions Audio Latency (5.6). They are still far behind professional low latency audio requirements, but they are something.
from aap-core.
Thanks for the reference! Never heard of AudioRoute and it doesn't look like getting a lot of attention anyway. Also I figured out my latency issues were related to how the Oboe API is being used and the device. With FAUST effect builds I didn't manage to get below 500 ms audio RTT even though it uses Oboe but with the official Oboe samples I got 30 ms on my S5 Duos with AOSP Pie and 90 ms on a Huawei with LineageOS Q. I'll try to fix the Faust Android build target soon and submit a PR and am excited to try your AAP samples as well!
Anyway the Android CDD mentions of latency shouldn't be of any concern for AAP regarding the plugin format. It's mainly relevant for reference implementations of plugin hosts and recommendations for which platform to use if audio latency is important (which for some use cases of AAP it actually isn't).
from aap-core.
One of the major concern with related to the entire architecture of AAP was NdkBinder. I finally did simple and stupid performance measurement on those plugins I have imported from LV2 and JUCE. mda-lv2 was super fast, and JUCE-based synths are also good enough. I put some results on aap-juce README.
https://github.com/atsushieno/aap-juce#measuring-performance
As long as I measured the turn-around time for those plugins, the average time was like 300-400 microseconds. where synths cost like 1500 milliseconds (it would depend on the device, so only diffs / percentages matter). Not a small increase, but quite acceptable unless hosts keep many plugin connections (I would freeze non-active tracks especially on mobiles).
It would be still worth keeping this issue open (I haven't worked on entire code review), but it wouldn't be a blocking concern for now.
from aap-core.
The diagram on the last page of the "Binder Communication and Discovery" section on this ABS2013 material mentions blocking ioctl (at (4) and (13)). This is something inevitable on current Android platforms.
... Although it should be quite different from general Linux ioctl (it is binder_ioctl()
) the level of concern would be different. mutex_lock
and mutex_unlock
is indeed everywhere though.
from aap-core.
closning as per 27102e9.
from aap-core.
Related Issues (20)
- remove MIDI mapping feature from parameters extension and create MIDI mapping extension HOT 4
- AndroidAudioPlugin process() needs to take the actual frame count HOT 2
- Clarify what makes AAP API and app structure requirements for interoperability
- PluginPreview: MIDI playback test (kicked by "MIDI" button) often causes app crash HOT 3
- Performance degraded? HOT 2
- Provide custom ATrace for audio processing results (both plugin and host) HOT 2
- remove samples/aap-midi-device-service HOT 1
- GUI support implementation: remaining tasks HOT 4
- Custom command extension
- API mismatch in AIDL: `extension()` does not pass opcode but service expects it
- improve androidaudioplugin-samples-host-engine and androidaudioplugin-ui-compose HOT 4
- release 0.7.6 HOT 1
- update AAPXS documentation
- define AAP conformance profiles?
- evaluate SurfaceViewControlHost for GUI integration HOT 3
- meta: GUI support implementation (take 2.) HOT 3
- compose-ui: build generic plugin view and compact view HOT 2
- support dynamic parameter list from parameters extension, on PluginDetails and Web UI HOT 2
- update MidiDeviceService to use UMP Endpoints in June 2023 updates HOT 2
- MidiDeviceService: UMP is probably incorrectly downconverted to MIDI1 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aap-core.