|
DSPark 1.6.1
Header-only audio DSP framework in pure C++20 — zero dependencies
|
Native VST3 backend: a complete plugin from one DSPark plugin class. More...
#include "../DSParkPlugin.h"#include "vst3_c_api.h"#include <atomic>#include <cstring>#include <new>
Go to the source code of this file.
Classes | |
| struct | dspark::plugin::vst3::Plugin< P > |
| struct | dspark::plugin::vst3::Factory< P > |
Namespaces | |
| namespace | dspark |
| Main namespace for the DSPark framework. | |
| namespace | dspark::plugin |
| namespace | dspark::plugin::vst3 |
Macros | |
| #define | DSPARK_PLUGIN_VST3_INCLUDED 1 |
| #define | DSPARK_VST3_EXPORT __attribute__((visibility("default"))) |
| #define | DSPARK_VST3_PLUGIN(PluginClass) |
| Declares the VST3 module entry points for one plugin class. Place once in exactly one translation unit, after the class definition. | |
Functions | |
| bool | dspark::plugin::vst3::tuidEqual (const Steinberg_TUID a, const Steinberg_TUID b) noexcept |
| void | dspark::plugin::vst3::asciiToString128 (const char *src, Steinberg_Vst_String128 dst) noexcept |
| void | dspark::plugin::vst3::copyAscii (const char *src, char *dst, size_t cap) noexcept |
| bool | dspark::plugin::vst3::streamRead (Steinberg_IBStream *s, void *dst, Steinberg_int32 bytes) noexcept |
| Reads the full requested range from an IBStream (hosts may chunk). | |
| bool | dspark::plugin::vst3::streamWrite (Steinberg_IBStream *s, const void *src, Steinberg_int32 bytes) noexcept |
| constexpr bool | dspark::plugin::vst3::isMidiProxyId (uint32_t id) noexcept |
| constexpr uint32_t | dspark::plugin::vst3::midiProxyId (int channel, int controller) noexcept |
| MidiEvent | dspark::plugin::vst3::midiProxyToEvent (uint32_t id, double normalized, int offset) noexcept |
| Proxy parameter (normalized) -> the framework-neutral MidiEvent. | |
Variables | |
| constexpr uint32_t | dspark::plugin::vst3::kBypassParamId = 0x42595053u |
| constexpr uint32_t | dspark::plugin::vst3::kProgramParamId = 0x5052474Du |
| constexpr int | dspark::plugin::vst3::kBypassRampSamples = 256 |
| constexpr Steinberg_int32 | dspark::plugin::vst3::kPresetProgramListId = 1 |
| constexpr uint32_t | dspark::plugin::vst3::kMidiProxyBase = 0x4D440000u |
| constexpr int | dspark::plugin::vst3::kMidiProxyControllers [4] = { 1, 64, 128, 129 } |
| constexpr int | dspark::plugin::vst3::kNumMidiProxies = 16 * 4 |
Native VST3 backend: a complete plugin from one DSPark plugin class.
Implements the VST3 COM ABI directly against Steinberg's official C API (vst3_c_api.h, vendored next to this header under Steinberg's permissive 2025 license) - no VST3 C++ SDK to download, no build system beyond your compiler:
cl /std:c++20 /O2 /LD myplugin.cpp /Fe:MyPlugin.vst3 (Windows) g++/clang++ -std=c++20 -O2 -fPIC -shared -o MyPlugin.so ... (Linux/macOS)
Design notes:
hasEditor = true, createView returns an IPlugView embedding the WebView editor (with content-scale support); otherwise hosts show their generic parameter UI. Definition in file DSParkVst3.h.
| #define DSPARK_PLUGIN_VST3_INCLUDED 1 |
Definition at line 63 of file DSParkVst3.h.
| #define DSPARK_VST3_EXPORT __attribute__((visibility("default"))) |
Definition at line 2036 of file DSParkVst3.h.
| #define DSPARK_VST3_PLUGIN | ( | PluginClass | ) |
Declares the VST3 module entry points for one plugin class. Place once in exactly one translation unit, after the class definition.
Definition at line 2043 of file DSParkVst3.h.