feat(vst): stand up VST3 instrument spike (S1) — skeleton, IPlugView↔LICE editor, REAPER bridge read
Vendor Steinberg VST3 SDK (v3.7.9_build_61); add reasampler_vst.vst3 as a second, additive build artifact with pure editor-geometry + bridge-marshal helpers under CTest.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
// reasampler_processor.h — the VST3 SingleComponentEffect skeleton (Phase S1). THIN
|
||||
// shell: an instrument that declares an event-input bus + a stereo audio-output bus,
|
||||
// sets up processing, and runs an empty (silent) process. Nothing plays yet — S4 wires
|
||||
// the pure sampler core into process(); S1 only proves REAPER hosts it.
|
||||
//
|
||||
// SingleComponentEffect is the SDK's combined processor+controller base — sanctioned
|
||||
// for a non-distributable, REAPER-only plugin under D5/D6 (verified: SDK class
|
||||
// reference). It gives us addAudioOutput/addEventInput and the IEditController seat, so
|
||||
// createView() can hand the host our IPlugView LICE editor.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "public.sdk/source/vst/vstsinglecomponenteffect.h"
|
||||
|
||||
#include "reaper_bridge.h"
|
||||
|
||||
namespace reasampler::vst {
|
||||
|
||||
class ReaSamplerProcessor : public Steinberg::Vst::SingleComponentEffect {
|
||||
public:
|
||||
ReaSamplerProcessor() = default;
|
||||
|
||||
// The factory create function (registered in vst_entry.cpp).
|
||||
static Steinberg::FUnknown* createInstance(void* /*context*/);
|
||||
|
||||
//--- from IComponent / IPluginBase -------------------------------------
|
||||
// Connects the REAPER bridge (context is REAPER's IHostApplication) and declares
|
||||
// the instrument bus topology.
|
||||
Steinberg::tresult PLUGIN_API initialize(Steinberg::FUnknown* context) override;
|
||||
Steinberg::tresult PLUGIN_API terminate() override;
|
||||
Steinberg::tresult PLUGIN_API setActive(Steinberg::TBool state) override;
|
||||
|
||||
//--- from IAudioProcessor ----------------------------------------------
|
||||
Steinberg::tresult PLUGIN_API setupProcessing(
|
||||
Steinberg::Vst::ProcessSetup& setup) override;
|
||||
// Empty in the spike: emits silence (S4 fills it).
|
||||
Steinberg::tresult PLUGIN_API process(
|
||||
Steinberg::Vst::ProcessData& data) override;
|
||||
|
||||
//--- from IEditController -----------------------------------------------
|
||||
// Hands the host our LICE IPlugView editor.
|
||||
Steinberg::IPlugView* PLUGIN_API createView(Steinberg::FIDString name) override;
|
||||
|
||||
private:
|
||||
ReaperBridge bridge_;
|
||||
};
|
||||
|
||||
} // namespace reasampler::vst
|
||||
Reference in New Issue
Block a user