Skip to content

add VST3 program list data - #13

Merged
erikgrahn13 merged 1 commit into
mainfrom
codex/vst3-program-list-data
Jul 30, 2026
Merged

add VST3 program list data#13
erikgrahn13 merged 1 commit into
mainfrom
codex/vst3-program-list-data

Conversation

@erikgrahn13

Copy link
Copy Markdown
Owner

Summary

  • add adapter-neutral built-in program collections with VST3-specific unit and program-list bindings
  • implement IUnitInfo and IProgramListData across the controller and processor
  • persist normal component state, selected programs, and modified program slots without generating preset files
  • add opaque program payload support, validation, lifecycle-safe processor state handoff, documentation, examples, and CI coverage

Why

Singularity previously exposed ordinary processor parameter state, but did not provide a complete framework API for VST3 built-in program lists or program-list data. Plug-in developers now have a format-neutral model for built-in programs while the VST3 adapter owns the VST3-specific mapping and transport.

The processor state handoff also needed explicit lifecycle cleanup so a state queued immediately before termination could not survive a later reinitialization.

Developer impact

Developers can define stable ProgramCollection and BuiltInProgram entries, optionally attach opaque payload bytes, and map collections to VST3 units. Host-managed .vstpreset files remain host/installer concerns; Singularity does not generate preset files.

Plug-ins that do not define VST3 program-list bindings do not expose IProgramListData.

Validation

  • full Debug and Release builds
  • Steinberg VST3 validator: 47/47 for ExampleEffect and ExampleInstrument
  • program-data test suites repeated in Debug and Release
  • terminate/reinitialize lifecycle regression coverage
  • git diff --check

@erikgrahn13
erikgrahn13 marked this pull request as ready for review July 30, 2026 13:52
@erikgrahn13
erikgrahn13 merged commit 6319d01 into main Jul 30, 2026
4 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9e7a2a2820

ℹ️ 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".

Comment thread vst3/vst3processor.h
Comment on lines +147 to +150
const auto applyParameters =
pending == RuntimeProgramBank::kNoPendingProgram ||
RuntimeProgramBank::appliesParameters(pending);
applyProgram(*bank, selected, applyParameters);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve edited parameters during processing reconfiguration

When a host calls setupProcessing again after a block-size, sample-rate, or process-mode change, there is normally no pending program, so this condition sets applyParameters to true and reloads the selected program's factory snapshot. Any parameter edits or automation values accumulated since the program was selected are therefore overwritten merely by reconfiguring audio processing; distinguish initial setup from reconfiguration and reapply only the payload on later setup calls.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant