// reasampler_vst.h — shared identity constants for the ReaSampler VST3 instrument // (Phase S). One place for the plugin's class UID, name, vendor, and version so the // processor, factory, and editor agree. // // A class UID is FOREVER-STABLE once shipped: a REAPER project that instantiates this // instrument records the UID, so changing it orphans every saved instance. Minted once; // do not regenerate. // // CHANNEL ISOLATION (S18, beta-in-isolation — the instrument-side companion to V4). Just // as V4 gave the extension a per-channel ext-state namespace / command-id family / dock // ident, S18 gives the VST3 instrument a per-channel PLUGIN IDENTITY: its class UID, its // on-disk filename, and its display name all fork by the ONE channel bit // (REASAMPLER_CHANNEL_IS_BETA, from version_generated.h). ONE class per binary — the bit // selects which UID compiles into the single DEF_CLASS2, so a beta build carries only the // beta identity and can never present the stable one (mirrors V4's fully-isolated-binary // philosophy). The two UIDs below are BOTH frozen forever; the filename + display name // derive from app_version's vstOutputName()/vstPluginName() (this header owns only the // binary UID identity — the string identity lives in the pure module). #pragma once #include "pluginterfaces/base/funknown.h" #include "reasampler_uid.h" // the FROZEN UID macros + channel selection (SDK-free values) namespace reasampler::vst { // Vendor identity (S-NAME-1, SETTLED 2026-07-26). Shared across channels — V4 kept the // lane-name prefix shared, so shared-where-V4-shares is the default (the channel is carried // by the UID + filename + display fork, not the vendor block). inline constexpr const char* kVendorName = "ReaSampler"; inline constexpr const char* kVendorUrl = "https://github.com/daniel-c-harvey/reasampler"; inline constexpr const char* kVendorEmail = "mailto:the.real.daniel.harvey@gmail.com"; // ----------------------------------------------------------------------------------------- // The two FOREVER-FROZEN VST3 class UIDs — one per channel — live in reasampler_uid.h // (SDK-free, so the extension's pure instrument_drop can render the .vstpreset class-ID // string from the SAME constants without pulling the VST3 SDK). A saved REAPER project // records the UID of the instance it instantiated and rebinds by it on reopen, so each is // a permanent commitment. The channel bit selects which one this binary's factory registers // — one class per binary, never both. The UID selection is the ONLY channel #ifdef in the // VST shell (an INLINE_UID needs literal brace-init tokens, so it cannot route through // app_version's runtime string accessors — reasampler_uid.h owns the binary UID fork, // app_version owns the string fork). // The runtime FUID for the class this binary registers — the channel-selected UID. static const Steinberg::FUID kReaSamplerProcessorUID(REASAMPLER_ACTIVE_UID_1, REASAMPLER_ACTIVE_UID_2, REASAMPLER_ACTIVE_UID_3, REASAMPLER_ACTIVE_UID_4); } // namespace reasampler::vst