Comments (2)
One thing to consider is that UMP Endpoint Configuration is not going to be "parsing bytes input as MIDI 1.0 bytestream and switch protocol internally" - because (unlike old approach with Set New Protocol) there will not be MIDI1 sysex bytestream inputs. UMP Endpoint Configuration is only sent as UMP, which means the UMP based connection is supposedly already established.
The expected MIDI2 device discovery mechanism is that MIDI-CI Discovery service will generate the list of capable MIDI devices that meets the requirements the CI Discovery Initiator filled. This assumes that the listed devices' ports can already handle UMPs, without protocol promotions (which are deprecated) and thus the protocol configuration is not done at their MIDI messaging level.
There is a super-hacky workaround to make it process UMP Endpoint Configurations over MIDI 1.0 bytestream though - send UMP Stream messages (Fn xx
messages) anyways, and detect them at AAPMidiProcessor level (or at Kotlin level), ignoring any possibility that they could be valid SysEx that targets those vendors that overlap IDs(!) It is brutal to them (MOOG etc.) but IIRC there is no conflicting Android app so far, so it would suffice until Google comes up with valid MIDI 2.0 support updates that covers MidiDeviceService
s.
from aap-core.
Actually the concerned conflicts ^ was based on the wrong assumption that the packets are sent in Big Endian. On Little Endian Android platforms (which I guess is mostly true for arm64) such a UMP will begin with a sequence of \0 for 12 bytes.
It is now confirmed to work with c737fe6 with compose-audio-controls demo app.
from aap-core.
Related Issues (20)
- Gradle/AGP brings in inconsistent builds which prevents androidaudioplugin-manager.aar from MavenLocal HOT 15
- add `opcode` to AAPXS SysEx8 packet format
- implement UMP request-response correlator for non-RT-safe async operations HOT 4
- State extension: provide batch parameter updates to reflect the changes back to UI
- significant MIDI event dropout HOT 4
- add "presets_updated" notification function in `aap_presets_host_extension_t` HOT 2
- index based extension URI table for AAPXS SysEx8 HOT 5
- AAPXS for host extension HOT 3
- Redesign presets extension API [BREAKING CHANGE] HOT 2
- Remove RT_SAFE and RT_UNSAFE annotations from host extension functions
- meta: AAPXS v2 HOT 1
- extension invocation on ACTIVE state freezes on *some* plugins HOT 5
- Design and implement extension "BOM" (bill of material)
- Determine the policy on how we indicate that the MIDI ports are used by plugin too, not just AAPXS etc.
- AudioPluginInterfaceCallback object is not transmitted to service if client and service are different apps HOT 4
- MIDI-CI integration HOT 2
- meta: AAP roadmap 2024 edition
- meta: tackle all those Gradle/AGP bugs and annoyances HOT 1
- libandroidaudioplugin.so causes freezes at Preset extension on plugins with `-fvectorize` in `-O2` optimization flag HOT 9
- replace ASAN support hacks with HWAsan support hacks in the overall sources 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.