feat(vst): S18 VST3 channel isolation — beta ReaSampler 9000 pairs with beta extension only

Fork the VST3 class UID (beta UID minted+frozen), on-disk name, and display
name by the one channel bit via app_version; couple UID selection to the
channel at compile time so a refactor can't split identity from data.
This commit is contained in:
2026-07-26 23:54:10 -04:00
parent 0e9ef05c75
commit fe55a9a96e
8 changed files with 193 additions and 36 deletions
+27
View File
@@ -104,6 +104,33 @@ const std::string& binaryName();
const std::string& dockTitle();
const std::string& dockIdent();
// --- VST3 instrument identity (S18, beta-in-isolation) ------------------------------
//
// The ReaSampler 9000 VST3 instrument forks its plugin identity per channel exactly as the
// extension forks its binary/dock idents above — one channel per binary, all derived from
// the ONE channel bit here, so the VST shell carries no #ifdef fork. These are the VST's
// analogues of binaryName()/dockTitle(): the on-disk module name and the human-facing name.
//
// vstOutputName() — the CMake OUTPUT_NAME base for the .vst3 module. Stable:
// "reasampler_9000" (byte-identical to pre-S18). Beta:
// "reasampler_9000_beta". Mirrors the CMake target's OUTPUT_NAME (the
// authoritative artifact name); exposed here so the one derivation lives
// in this module. FOREVER-STABLE per channel — the on-disk filename a
// REAPER project's saved instance path may reference.
// vstPluginName() — the factory display name (FX browser), editor title band, and S6
// embed-strip label. Stable: "ReaSampler 9000". Beta:
// "ReaSampler 9000 beta". Sourced from here, never a literal in
// reasampler_vst.h / vst_entry.cpp / the editor / the embed strip.
//
// NOTE: the VST3 CLASS UID is NOT here — a UID is not a string derivation but a compile-time
// FUID/INLINE_UID constant the factory needs in brace-init form; it lives in reasampler_vst.h,
// channel-selected by the same REASAMPLER_CHANNEL_IS_BETA bit. This module owns the string
// identity; reasampler_vst.h owns the binary UID identity. The version display the factory
// stamps into PClassInfo2 reuses appVersion() (it already renders "-beta" on beta) — no
// separate VST version accessor.
const std::string& vstOutputName();
const std::string& vstPluginName();
// --- Channel-qualified action id / name builders ------------------------------------
//
// The two composition helpers every action-registering shell (main.cpp, actions.cpp)