add CAPI plugin export - #10
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: edf7cfef16
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if constexpr (!PluginType::isInstrument) | ||
| inputStream->buf_ptr[channel].actual_data_len = bytes; | ||
| out.buf_ptr[channel].actual_data_len = bytes; |
There was a problem hiding this comment.
Propagate input stream timing flags to effect outputs
When an effect receives an input stream with a valid timestamp or stream flags such as erasure/EOF, process() only updates the output buffers' lengths and never copies inputStream->timestamp or inputStream->flags into out. Because the output stream is a separate CAPI object, downstream modules consequently receive default or stale timing state even though this non-buffering effect consumes and produces the same frame; propagate the corresponding input stream fields for effects.
Useful? React with 👍 / 👎.
Summary
getParameters()ExampleEffect_CAPIandExampleInstrument_CAPIthroughFORMATS CAPIcapi/testsWhy
Singularity plugins currently export APP and VST3 targets but cannot be packaged as headless AudioReach CAPI modules. This introduces the adapter and build integration without creating separate DSP examples or duplicating parameter metadata.
The CMake refactor keeps format-specific SDK and target setup beside each format implementation while retaining shared desktop/UI initialization in
SingularityPlugin.cmake.Validation
ExampleEffect_CAPI,ExampleInstrument_CAPI, andSingularityCapiTests*_get_static_propertiesand*_initsymbolsRemaining platform validation
The CAPI code was host-built on macOS against the public AudioReach headers. A real Hexagon toolchain build, AudioReach module registration, and H2XML/AMDB integration remain target-platform integration steps. Linux and Windows desktop coverage is left to CI.