Added VST SDK support.
This commit is contained in:
parent
a1482ec110
commit
8e09f58944
25 changed files with 850 additions and 23 deletions
91
examples/steinberg/README.md
Normal file
91
examples/steinberg/README.md
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# Official Steinberg SDK examples
|
||||
|
||||
These are optional integration examples. Normal `make` / `make test` uses the
|
||||
existing pinned C ABI headers and never downloads SDKs. Original example source
|
||||
is MIT-licensed like xtc. SDK code is compiled from an external checkout, not
|
||||
vendored or installed by these targets. C++ is confined to the SDK examples;
|
||||
`render.c` and the xtc host remain C99.
|
||||
|
||||
## VST3 effect and instrument (Linux)
|
||||
|
||||
Requirements: the normal C toolchain, C++17, CMake >= 3.25, and an official VST3
|
||||
SDK checkout with its submodules. SDK hosting utilities can require additional
|
||||
platform development libraries (the inspected SDK discovers X11/GTK). Dependencies
|
||||
are never installed automatically. Obtain the SDK explicitly, for example:
|
||||
|
||||
```sh
|
||||
git clone --recursive https://github.com/steinbergmedia/vst3sdk.git /your/path/vst3sdk
|
||||
```
|
||||
|
||||
Qualified SDK revision: `3cdf9ca5d1f5b1b21e0a86832aa4abe55607bd96`
|
||||
(3.8.1; MIT license). To reproduce this revision, checkout it and run
|
||||
`git submodule update --init --recursive`. Review the license of the actual SDK
|
||||
revision used; this example neither bundles SDK sources nor grants plugin or
|
||||
trademark distribution rights.
|
||||
|
||||
From the xtc repository root:
|
||||
|
||||
```sh
|
||||
make VST3_SDK_ROOT=/your/path/vst3sdk test-steinberg-sdk
|
||||
```
|
||||
|
||||
This builds the original `xtc-sdk-examples.vst3` bundle using Steinberg's factory,
|
||||
AudioEffect, controller and platform-entry implementations; runs the official
|
||||
validator; and runs xtc's gain/MIDI interoperability checks. Build output stays
|
||||
under `build/steinberg-sdk`; automatic plugin-directory links and installation
|
||||
are disabled. SDK source may emit its own compiler warnings.
|
||||
|
||||
The bundle contains:
|
||||
|
||||
| Factory index | Class | Behavior |
|
||||
| --- | --- | --- |
|
||||
| 0 | xtc SDK Half Gain | mono float32 input multiplied by 0.5 |
|
||||
| 1 | xtc SDK Sine | mono MIDI synth; 16 channels; note velocity; note-on/off offsets |
|
||||
| 2 | xtc SDK Controller | non-audio class; no editable parameters |
|
||||
|
||||
Both audio classes are zero-latency, stateless, default-configuration examples.
|
||||
These make good host compatibility checks; they are not production instruments.
|
||||
The sine example uses immediate note release and has no envelope or antialiasing.
|
||||
|
||||
Create a two-second WAV (one second of A4 followed by silence) through the actual
|
||||
xtc synth -> effect host path:
|
||||
|
||||
```sh
|
||||
./build/steinberg-render \
|
||||
"$PWD/build/steinberg-sdk/VST3/Release/xtc-sdk-examples.vst3" \
|
||||
/absolute/path/to/new-sdk-demo.wav
|
||||
```
|
||||
|
||||
The destination must not exist. This executable is built by `test-steinberg-sdk`.
|
||||
To use a different xtc build directory, pass `BUILD_DIR=...`; the SDK build then
|
||||
lives under that directory unless `STEINBERG_BUILD_DIR=...` is explicitly set.
|
||||
|
||||
The main app's existing plugin loader can use the bundle path through its C API;
|
||||
its file chooser may require selecting the inner `.so`. The effect loads as a
|
||||
track insert; the synth is available to the instrument descriptor workflow.
|
||||
See [the hosting contract](../../docs/STEINBERG.md) for remaining limitations.
|
||||
|
||||
## ASIO driver diagnostics (Windows, pending qualification)
|
||||
|
||||
Supply the official ASIO SDK separately. The source layout targets the inspected
|
||||
ASIO 2.3.3 SDK (`common/asio.cpp`, `host/asiodrivers.cpp`, `host/pc/asiolist.cpp`).
|
||||
Its Steinberg SDK license differs from the VST3 revision above; follow the
|
||||
license accompanying your SDK before redistribution. SDK source or binaries are
|
||||
not included in xtc packages. A current SDK may require adapting its source layout.
|
||||
|
||||
On native Windows with a matching MSVC toolchain and an installed ASIO driver:
|
||||
|
||||
```powershell
|
||||
cmake -S examples/steinberg -B build/asio-sdk -DXTC_BUILD_ASIO_EXAMPLE=ON -DXTC_ASIO_SDK_ROOT=C:/SDKs/asiosdk
|
||||
cmake --build build/asio-sdk --config Release --target xtc-asio-devices
|
||||
./build/asio-sdk/Release/xtc-asio-devices.exe
|
||||
./build/asio-sdk/Release/xtc-asio-devices.exe --driver "Exact installed driver name"
|
||||
```
|
||||
|
||||
The first invocation lists drivers registered for the executable's architecture.
|
||||
The second opens only the selected driver, queries its existing channel formats,
|
||||
sample rate, buffer constraints and latencies, then exits. It never calls
|
||||
ASIOStart, ASIOCreateBuffers, ASIOSetSampleRate or the driver's control panel.
|
||||
Linux configuration with this option deliberately fails with a platform message.
|
||||
Windows compilation and real driver execution have **not** been verified here.
|
||||
This is a diagnostic example, not audio playback/capture or an app backend.
|
||||
Loading…
Add table
Add a link
Reference in a new issue