atsushieno / aap-core

an Audio Plugin Format/Framework for Android
MIT License
91 stars 3 forks source link

implement realtime extension support: AAPXS SysEx8 #169

Closed atsushieno closed 1 year ago

atsushieno commented 1 year ago

As it has been written in several issues and documents (e.g. issue #73, issue #145, issue #158), current Binder-based extension() support does not cover realtime usage scenario and they should be covered as in MIDI2 system exclusive messages at process().

Now that we have refresh implementation for plugin manager with aap::MidiDestinationNode which is ready to be used in aap::PluginPlayer, it is time to actually implement it.

There are handful of blocks that need new code:

Unless it is going to be too complicated, it should be done before 0.7.8 release.

atsushieno commented 1 year ago

A few additional notes:

atsushieno commented 1 year ago

Unless it is going to be too complicated, it should be done before 0.7.8 release.

As issues #171 is post-0.7.8 work, the entire work is inherently moved to post-0.7.8 as well. Until then, we will have proof-of-concept setPresetIndex() call at aap::AudioPluginNode::setPresetIndex(int index) to conditionally generate AAPXS SysEx8 and send it.

atsushieno commented 1 year ago

Most of the work is now done in aapxs-v080 branch, but I noticed that binder-client-as-plugin's get_extension() requires public extension API implementation for each AAPXS. It also needs to be provided by each AAPXS developer.

It is possible to achieve that by TypedAAPXS implementation classes, but that requires AAPXSDispatcher and its instantiated shared memory buffers, while AAPXSDefinition itself is basically all statically resolved. We likely need to provide another way to instantiate the registry, kind of.

atsushieno commented 1 year ago

^ is resolved as get_plugin_extension_proxy() member function in AAPXSDefinition.

atsushieno commented 1 year ago

We can close this issue once aapxs-v080 branch is merged to main.

atsushieno commented 1 year ago

It is now merged into main.