From c4db230afff3f2802e58cdc56f807551d0c4801e Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:07:32 +0700 Subject: [PATCH 01/12] docs: synchronize README with complete v0.6.1 Rack feature set --- README.md | 55 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 56d7f64..288a00f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ [![CI](https://github.com/masarray/obs-vst3/actions/workflows/ci.yml/badge.svg)](https://github.com/masarray/obs-vst3/actions/workflows/ci.yml) [![GPL-3.0-or-later](https://img.shields.io/badge/license-GPL--3.0--or--later-22c55e)](LICENSE) -> **Public stable: v0.6.1** · Single VST3 Host + isolated serial VST3 Rack · automatic working-Rack recall · graphical Rack Editor · native vendor GUIs · presets · fail-dry recovery +> **Public stable: v0.6.1** · Single VST3 Host + isolated serial VST3 Rack · premium compact Rack Editor · Input Trim / Output Fader · LUFS-I + dBTP metering · automatic working-Rack recall · native vendor GUIs · presets · fail-dry recovery **Website:** https://masarray.github.io/obs-vst3/ **Downloads:** https://github.com/masarray/obs-vst3/releases/latest @@ -21,7 +21,7 @@ OBS Studio's built-in VST filter does not provide VST3 hosting. Many current stu OBS Safe VST3 Host adds two OBS-native workflows on Windows: - **VST 3.x Plug-in** — a simple one-effect filter for the common case. -- **VST3 Rack** — a separate isolated serial multi-effect chain with a dedicated graphical Rack Editor. +- **VST3 Rack** — a separate isolated serial multi-effect chain with a dedicated graphical Rack Editor and broadcast-oriented master console. Third-party VST3 runtime code, vendor editors and plug-in scanning are deliberately kept outside the OBS process. @@ -45,11 +45,32 @@ Every release also publishes `SHA256SUMS.txt` for integrity verification. ## What's new in v0.6.1 -v0.6.1 is a stable Rack reliability and recall update built from real OBS restart testing. +v0.6.1 is the complete stable Rack refinement and reliability release built on the v0.6.0 serial-Rack foundation. It combines a compact broadcast-oriented Rack surface, real master gain controls and metering, flicker-free topology presentation, durable working-Rack recall and safer VST3 state persistence. + +### Premium broadcast Rack surface + +- Compact single-row effect strips reduce repeated UI noise and keep plug-in names readable. +- The slot health LED doubles as the enable/bypass control. +- Clicking a plug-in name opens its native vendor editor. +- One compact slot-action control handles replace, insert, move and remove operations. +- The Rack scrollbar reserves its layout gutter so adding effects does not shift row width, while remaining visually hidden until scrolling is needed. +- Pending topology changes keep the last committed Rack snapshot visible instead of flashing whole controls or transient state text. +- The Rack helper carries an OBS-companion Windows icon for taskbar, Explorer and title-bar identity. + +### Real master controls and broadcast metering + +- **Input Trim** sits before the serial VST3 chain and defaults to transparent `0.0 dB`. +- **Output Fader** sits after the chain and also defaults to `0.0 dB`. +- Both controls use lock-free transport and bounded one-block gain ramps to reduce zipper/click artifacts. +- Output attenuation remains authoritative on fail-dry output, so a plug-in failure does not unexpectedly jump an intentionally reduced level back to full scale. +- Stereo input/output peak meters reflect the signal around the Rack master path. +- **LUFS-I** measures integrated loudness in an ITU-R BS.1770 / EBU R128-style gated measurement shape. +- **dBTP** tracks reconstructed true peak with 4× quarter-sample interpolation and session-max hold. +- LUFS-I and dBTP observe the final post-output-fader signal delivered to OBS. ### Durable working-Rack recall -The Rack now keeps its latest working chain automatically per OBS Rack filter. Named Rack presets remain available for reusable chains, but they are **not required** just to survive an OBS restart. +The Rack keeps its latest working chain automatically per OBS Rack filter. Named Rack presets remain available for reusable chains, but they are **not required** just to survive an OBS restart. - Rack topology, bypass state and VST3 component/controller state are saved to a per-Rack durable session. - OBS scene-collection serialization requests a bounded fresh state capture from the isolated Rack helper. @@ -63,7 +84,7 @@ The Rack now keeps its latest working chain automatically per OBS Rack filter. N - The realtime Rack path never waits on a control mutex; a capture conflict fails dry instead. - Slow saved chains restore **dry-first**, then publish the complete restored generation atomically when ready. - Save completion reports success/failure explicitly rather than turning completed failures into misleading timeouts. -- Split controller/processor VST3 plug-ins now forward native GUI edits and preset-wide parameter resyncs into processor state before capture, improving full DSP recall after restart. +- Split controller/processor VST3 plug-ins forward native GUI edits and preset-wide parameter resyncs into processor state before capture, improving full DSP recall after restart. ### Windows Rack/editor polish @@ -77,8 +98,10 @@ The Rack now keeps its latest working chain automatically per OBS Rack filter. N 3. Click **Open Rack**. 4. Add effects in the graphical Rack Editor. 5. Reorder, bypass or open each vendor UI as needed. -6. Close/reopen OBS normally; the latest working Rack is recalled automatically. -7. Use named Rack presets only when you want reusable named chains or deliberate snapshots. +6. Use **Input Trim** before the chain and **Output Fader** after the chain when level adjustment is needed. +7. Watch final-output **LUFS-I** and **dBTP** for broadcast-oriented level awareness. +8. Close/reopen OBS normally; the latest working Rack is recalled automatically. +9. Use named Rack presets only when you want reusable named chains or deliberate snapshots. The Rack remains a serial effects lane by design. It is not a free-form node graph. @@ -111,8 +134,11 @@ OBS Studio (obs64.exe) ▼ obs-safe-vst3-rack-host.exe │ - ├── graphical Rack Editor + ├── compact graphical Rack Editor + ├── Input Trim ├── VST3 A → VST3 B → ... + ├── Output Fader + ├── peak / LUFS-I / dBTP telemetry ├── vendor editor windows ├── durable working-session recall ├── named Rack presets @@ -128,8 +154,13 @@ obs-safe-vst3-rack-host.exe | VST3 audio effects | ✅ Supported | | Single VST3 filter | ✅ Stable | | Serial multi-effect VST3 Rack | ✅ Stable | -| Graphical isolated Rack Editor | ✅ Stable | +| Compact isolated Rack Editor | ✅ Stable | | Add / replace / remove / reorder / bypass | ✅ | +| Input Trim / Output Fader | ✅ Stable, real DSP controls | +| Stereo input/output peak meters | ✅ | +| LUFS-I integrated loudness | ✅ | +| dBTP reconstructed true peak | ✅ | +| Flicker-resistant topology transitions | ✅ | | Automatic working-Rack recall across OBS restarts | ✅ | | Native vendor editor | ✅ | | Installed plug-in discovery | ✅ | @@ -145,7 +176,11 @@ A specific third-party effect can still expose vendor-specific behavior. This pr ## Qualification and release discipline -The v0.6.1 runtime candidate was qualified on exact source head `ce5eb052c97076df735b95b55328f76e222475ee` before merge. P0/P1, R0, R1, R2, R3, main CI and Compatibility Test Build were green on that exact head. Compatibility qualification covered Windows tests, scanner smoke, supported OBS loader/ABI-floor checks, package construction, PE inspection, portable validation and canonical OBS-root installer smoke. +The v0.6.1 runtime candidate was qualified on exact source head `ce5eb052c97076df735b95b55328f76e222475ee` before merge. That head includes the premium Rack UX/master-metering work and the durable persistence/state-safety changes. P0/P1, R0, R1, R2, R3, main CI and Compatibility Test Build were green on that exact head. + +Rack UI/master work also carries deterministic contracts covering compact slot interaction, stable layout during topology changes, lock-free telemetry/control transport, Input Trim / Output Fader behavior, BS.1770-style integrated loudness structure and reconstructed true-peak reference cases. + +Compatibility qualification covered Windows tests, scanner smoke, supported OBS loader/ABI-floor checks, package construction, PE inspection, portable validation and canonical OBS-root installer smoke. Real OBS validation included repeated full OBS restarts while changing Rack/VST3 settings across sessions; the latest working chain and full VST3 DSP state restored successfully. The runtime candidate was merged as PR #109. The v0.6.1 release marker is a documentation/version descendant of that qualified runtime change. From 5ed185b4940d6a0ce83bdb715bc9568e57d5d97a Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:08:09 +0700 Subject: [PATCH 02/12] docs: complete v0.6.1 changelog with Rack UX and metering --- CHANGELOG.md | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d0b659..eac6fbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,39 @@ All notable public product changes are documented here. Release artifacts are pu ### Headline -**Durable working-Rack recall and safer split-component VST3 state persistence.** +**Premium broadcast Rack UX, real master controls and metering, durable working-Rack recall, and safer split-component VST3 state persistence.** -v0.6.1 is a stable reliability update for the v0.6 Rack line. It is based on repeated real OBS restart testing and keeps the current serial Rack product scope unchanged. +v0.6.1 is the complete stable refinement release for the v0.6 Rack line. It combines the compact broadcast-oriented Rack surface from PRs #105/#107/#108 with the durable recall and VST3 state-safety work from PR #109, while keeping the product intentionally serial rather than expanding into graph routing. + +### Broadcast Rack UX and master console + +- The Rack Editor now uses a compact, hardware-inspired, minimal-noise surface with one-row effect strips. +- Repetitive per-slot `ON` / `OPEN` labels were removed from the primary scan path. +- The slot health LED doubles as the enable/bypass control. +- Clicking the plug-in name opens its native vendor editor. +- One compact slot-action affordance handles replace, insert, move and remove operations. +- The Rack lane reserves its scrollbar gutter so adding VSTs does not change row width; the scrollbar is visually hidden until scrolling is required. +- Pending topology transitions keep the last committed Rack snapshot visible and interaction-disabled until the new authoritative topology commits, avoiding whole-control opacity flashes and transient `Pending...` noise. +- The master surface uses a focused Input / Output / Loudness hierarchy rather than a dense engineering dashboard. +- Rack and vendor editor windows carry the project OBS-companion icon instead of a generic Windows application icon. + +### Real DSP master controls + +- Session **Input Trim** and **Output Fader** are real DSP controls and both default to transparent `0.0 dB`. +- Input Trim is applied before the serial VST3 chain. +- Output Fader is applied after the chain. +- Both controls use lock-free atomic transport and one-block bounded linear gain ramps to reduce zipper/click artifacts. +- Double-click resets either fader exactly to `0.0 dB` without the same double-click dragging the control away from default. +- Output attenuation remains authoritative on fail-dry output so an unavailable plug-in wet result cannot unexpectedly restore full-scale level after the user deliberately attenuated or muted the Rack. + +### Broadcast metering + +- Stereo L/R input peaks are measured after Input Trim. +- Stereo L/R output peaks are measured after Output Fader. +- **LUFS-I** integrated loudness uses K-weighting and a gated ITU-R BS.1770 / EBU R128-style measurement shape with 400 ms / 75% overlap, -70 LUFS absolute gating and -10 LU relative gating. +- **dBTP** uses 4× quarter-sample reconstruction with a 33-tap windowed-sinc polyphase interpolator and session-max true-peak hold. +- LUFS-I and dBTP measure the final post-output-fader signal delivered to OBS, including fail-dry output. +- Meter/control telemetry remains bounded and lock-free; the audio path uses fixed storage rather than UI calls, mutexes, condition variables or dynamic audio-path allocation. ### Rack persistence @@ -56,6 +86,8 @@ The final v0.6.1 runtime candidate `ce5eb052c97076df735b95b55328f76e222475ee` pa - CI; - Compatibility Test Build. +The shipping Rack UX/master-metering work also carries deterministic contracts for compact slot interaction, layout containment/alignment, conditional scrollbar behavior, flicker-resistant topology transitions, lock-free control/telemetry transport, fader reset behavior, BS.1770-style loudness structure and reconstructed true-peak reference cases. A deterministic broadcast-meter test includes a -20 dBFS 1 kHz stereo reference near -20.04 LUFS, trailing-silence gating and an inter-sample true-peak reconstruction case. + Representative real OBS Rack validation changed commercial split-component VST3 settings across three successive OBS sessions and confirmed that the latest full DSP state—not only preset/controller metadata—returned after each restart. The **Single VST3 Host** was also validated through repeated full OBS close/reopen cycles with settings deliberately changed in each session. The most recent VST3 state returned after every restart, confirming that users do not need to reconfigure the Single Host after normal OBS restarts. @@ -71,8 +103,13 @@ Supported in this release: - VST3 audio effects; - mono/stereo Float32 processing; - Single Host and serial VST3 Rack; -- isolated graphical Rack Editor; +- compact isolated graphical Rack Editor; - native vendor UIs; +- per-session Input Trim and Output Fader; +- stereo input/output peak metering; +- LUFS-I integrated loudness metering; +- dBTP reconstructed true-peak metering; +- flicker-resistant topology presentation; - automatic working-Rack recall; - named Rack presets; - bounded fail-dry behavior. From d84e464cf35f6788a2810725773d25931a72a293 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:08:52 +0700 Subject: [PATCH 03/12] docs: synchronize landing page with complete v0.6.1 Rack release --- docs/index.html | 70 +++++++++++++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 25 deletions(-) diff --git a/docs/index.html b/docs/index.html index 595fc5e..8ccef68 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,20 +4,20 @@ - VST3 for OBS Studio — Safe Single Host + VST3 Rack - + VST3 for OBS Studio — Safe Single Host + Broadcast VST3 Rack + - - + + - + - + - + - +
-
Recommended installation · v0.6.1 stable

Install once. Use the Single Host or the VST3 Rack.

The Smart Installer validates your OBS root, installs the Single Host, Rack Host, scanner and locale files, remembers that target for later upgrades, and registers a normal Windows uninstaller.

-
Smart Installer

Recommended for nearly everyone

+
Recommended installation · latest stable

Install once. Use the Single Host or the VST3 Rack.

The Smart Installer validates your OBS root, installs the Single Host, Rack Host, scanner and locale files, remembers that target for later upgrades, and registers a normal Windows uninstaller.

+ +
Smart Installer

Recommended for nearly everyone

The download buttons on this page resolve the latest public stable release automatically. You do not need to open the GitHub Releases page first.

1

Close OBS

Stop streaming/recording and close OBS Studio before replacing plug-in binaries.

-
2

Run Setup

Download OBS-Safe-VST3-Host-v0.6.1-Setup-x64.exe only from this project's GitHub Releases page.

+
2

Run Setup

Download OBS-Safe-VST3-Host-Setup-x64.exe using the installer button above.

3

Select OBS root

Choose the folder containing bin\64bit\obs64.exe. Normal, custom and portable-mode roots use the same product layout.

-
Windows may show Unknown publisher because the current package is not commercially Authenticode-signed. Do not disable Defender or SmartScreen globally. Use the official Releases page and verify SHA256SUMS.txt if you want an additional integrity check.
+
Windows may show Unknown publisher because the current package is not commercially Authenticode-signed. Do not disable Defender or SmartScreen globally. The installer is served from this project's official GitHub release storage; verify SHA256SUMS.txt when you want an additional integrity check.
+
After installation

Choose the workflow that matches your chain

1FX

Single effect

Audio source → Filters → + → VST 3.x Plug-in. Select an installed VST3 effect, then open its vendor interface.

RACK

Multiple effects

Audio source → Filters → + → VST3 Rack. Open Rack, add effects, reorder/bypass them and open native vendor UIs when needed.

SAVE

Automatic recall

The latest working Rack is saved automatically for normal OBS restart continuity. Named presets remain independent reusable chains.

-
v0.6.1 Rack recall

No named preset is required just to survive an OBS restart.

Each VST3 Rack filter owns a durable working-session snapshot identified by its OBS source UUID. OBS save/close requests a bounded fresh state capture; the helper restores slow chains dry-first and publishes the complete restored generation only when it is coherent.

+ +
Stable Rack recall

No named preset is required just to survive an OBS restart.

Each VST3 Rack filter owns a durable working-session snapshot identified by its OBS source UUID. OBS save/close requests a bounded fresh state capture; the helper restores slow chains dry-first and publishes the complete restored generation only when it is coherent.

✓
Topology + bypass + VST3 state. The working chain is persisted as one coherent Rack session.
✓
Atomic + last-known-good. CRC-protected session writes preserve a recovery copy.
✓
DSP-safe capture. Realtime Rack processing does not wait on a control mutex while state is captured.
✓
Honest storage failure. If durable session storage cannot be established, the Rack remains dry and reports Needs Attention.
-
Portable package

Manual installation for advanced users

Download OBS-Safe-VST3-Host-v0.6.1-Windows-x64-Portable.zip and extract its contents directly into the OBS root.

+ +
Portable package

Manual installation for advanced users

Download OBS-Safe-VST3-Host-Windows-x64-Portable.zip and extract its contents directly into the OBS root.

obs-plugins\64bit\obs-safe-vst3.dll
OBS module
obs-safe-vst3-host.exe
Single Host helper
obs-safe-vst3-rack-host.exe
Rack runtime + graphical editor helper
obs-safe-vst3-scanner.exe
Isolated discovery scanner
README-FIRST.txt
Package quick start
UNINSTALL-MANUAL.cmd
Manual-package cleanup helper
-
-
Verify a download

Check SHA-256 when desired

Every release includes SHA256SUMS.txt. In PowerShell:

Get-FileHash .\OBS-Safe-VST3-Host-v0.6.1-Setup-x64.exe -Algorithm SHA256

Compare the resulting hash with the installer entry in the release's SHA256SUMS.txt.
+
+ +
Verify a download

Check SHA-256 when desired

Every public release includes SHA256SUMS.txt. In PowerShell, run Get-FileHash against the downloaded installer and compare it with the release checksum file.

+
Need help?

Keep troubleshooting reproducible

Confirm your Windows architecture, OBS version, exact VST3 vendor/version, whether Single Host or Rack is affected, and include relevant OBS logs when opening a GitHub issue.

-
Download only from the official GitHub repository. Crash isolation is not a malware sandbox; use VST3 plug-ins from vendors you trust.
+
Official public downloads are served from the repository's latest GitHub release assets. Crash isolation is not a malware sandbox; use VST3 plug-ins from vendors you trust.
From 3533c73d13b4105c5d56eceb483e250d142f157e Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:17:04 +0700 Subject: [PATCH 09/12] docs: synchronize compatibility page with latest stable download --- docs/compatibility.html | 51 +++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/docs/compatibility.html b/docs/compatibility.html index 313d3c4..9913589 100644 --- a/docs/compatibility.html +++ b/docs/compatibility.html @@ -3,65 +3,60 @@ - VST3 Compatibility — OBS Safe VST3 Host v0.6.1 - + VST3 Compatibility — OBS Safe VST3 Host + + - +
-
Compatibility · v0.6.1 stable

Broad VST3 effect support, with explicit boundaries.

The project targets conventional Windows x64 VST3 audio effects. Compatibility is evidence-based, not implemented as a hard-coded vendor whitelist, and no responsible host can guarantee every VST3 implementation.

-
Stable support matrix

What v0.6.1 is designed to support

+
Compatibility · latest stable

Broad VST3 effect support, with explicit boundaries.

The project targets conventional Windows x64 VST3 audio effects. Compatibility is evidence-based, not implemented as a hard-coded vendor whitelist, and no responsible host can guarantee every VST3 implementation.

+ +
Stable support matrix

What the current stable product is designed to support

Windows
x64 supported
OBS Studio
29.1+ compatibility floor; release qualification builds against pinned current OBS/libobs.
VST3 audio effects
Supported in the current mono/stereo Float32 scope.
Single VST3 Host
Stable
Serial VST3 Rack
Stable
Compact graphical Rack Editor
Supported in the isolated Rack helper.
-
Input Trim / Output Fader
Supported in v0.6.1 as real pre-chain/post-chain DSP controls.
+
Input Trim / Output Fader
Supported as real pre-chain/post-chain DSP controls.
Stereo input/output peak meters
Supported around the Rack master signal path.
LUFS-I integrated loudness
Supported on the final post-output-fader signal.
dBTP reconstructed true peak
Supported on the final post-output-fader signal.
-
Flicker-resistant topology presentation
Supported in v0.6.1
-
Automatic working-Rack recall
Supported in v0.6.1
+
Automatic working-Rack recall
Supported
Native vendor editors
Supported where the plug-in exposes a compatible native editor.
Named Rack presets
Supported independently from the automatic working session.
-
VST3 instruments / MIDI
Not in v0.6.1
-
Sidechain / free-form routing
Not in v0.6.1
-
Arbitrary multichannel / Float64 fallback
Not in v0.6.1
+
VST3 instruments / MIDI
Not currently supported
+
Sidechain / free-form routing
Not currently supported
+
Arbitrary multichannel / Float64 fallback
Not currently supported
macOS / Linux packages
Not currently shipped
-
Rack master signal path

The meters and faders describe the actual shipping Rack path.

v0.6.1 does not treat the master console as decorative UI. Input Trim, Output Fader and broadcast telemetry are attached to the generated shipping Rack helper while preserving the isolated-helper architecture.

+ +
Rack master signal path

The meters and faders describe the actual shipping Rack path.

The master console is not decorative UI. Input Trim, Output Fader and broadcast telemetry are attached to the generated shipping Rack helper while preserving the isolated-helper architecture.

IN

Input Trim before the chain

Input Trim defaults to 0.0 dB, is applied before the serial VST3 chain and uses bounded smoothed gain changes. The input L/R meters observe the post-trim signal.

OUT

Output Fader after the chain

Output Fader defaults to 0.0 dB and remains authoritative after the chain, including fail-dry output, so deliberate attenuation does not jump back to full level when a wet result is unavailable.

METER

Final-output loudness

Output L/R peaks, LUFS-I and dBTP observe the final post-output-fader audio delivered to OBS.

-
Metering contract

Broadcast metrics are bounded telemetry, not a claim of universal loudness compliance.

The implementation follows a deterministic broadcast-oriented measurement contract: integrated loudness uses K-weighting and gated ITU-R BS.1770 / EBU R128-style structure; true peak uses reconstructed inter-sample estimation. These meters help operators understand the Rack output, but final platform delivery targets and compliance remain the user's responsibility.

+ +
Metering contract

Broadcast metrics are bounded telemetry, not a claim of universal loudness compliance.

The implementation follows a deterministic broadcast-oriented measurement contract: integrated loudness uses K-weighting and gated ITU-R BS.1770 / EBU R128-style structure; true peak uses reconstructed inter-sample estimation. Final platform delivery targets and compliance remain the user's responsibility.

✓
LUFS-I structure. 400 ms windows with 75% overlap, -70 LUFS absolute gating and -10 LU relative gating.
✓
dBTP reconstruction. 4× quarter-sample reconstruction with a 33-tap windowed-sinc polyphase interpolator and session-max hold.
✓
Realtime boundary. Telemetry publication is atomic/lock-free and avoids UI calls, mutex waits and dynamic audio-path allocation.
-
✓
Reference coverage. Deterministic tests include a -20 dBFS 1 kHz stereo loudness reference, trailing-silence gating and an inter-sample true-peak case.
+
✓
Reference coverage. Deterministic tests cover loudness gating and inter-sample true-peak behavior.
+
Real-machine evidence

Representative commercial VST3 effects have been part of project qualification.

Across the stable Single Host line and Rack development, real-machine qualification has included effects from vendors such as:

iZotope Ozone / RXFabFilterWavesKlevgrandNeuro AudioProcess Audio
These names are qualification examples, not an allowlist or guarantee. A different plug-in version, licensing layer, editor implementation or VST3 lifecycle behavior can still expose a vendor-specific compatibility issue.
-
v0.6.1 persistence evidence

Recall testing covers the actual working Rack, not only reusable presets.

Real OBS validation changed settings in commercial split controller/processor VST3 effects across three successive OBS sessions. The latest working Rack and full DSP state restored on each restart, including cases where controller metadata alone would not have been sufficient.

+ +
Persistence evidence

Recall testing covers the actual working Rack, not only reusable presets.

Real OBS validation changed settings in commercial split controller/processor VST3 effects across successive OBS sessions. The latest working Rack and full DSP state restored on restart, including cases where controller metadata alone would not have been sufficient.

✓
DSP-safe capture frontier. State capture is coordinated away from concurrent vendor processing.
-
✓
Dry-first restore. Slow chains do not have to finish materializing before the Rack can remain safely available as dry/pass-through.
+
✓
Dry-first restore. Slow chains can remain safely available as dry/pass-through while materializing.
✓
Split-component synchronization. Native GUI edits and preset-wide parameter resyncs reach processor state before capture.
✓
Explicit storage failure. The product does not present a writable Rack as normally persistent when durable session storage is unavailable.
-
Rack behavior

v0.6.1 Rack scope is intentionally serial.

-
FX

Effects only

Normal audio effects are eligible. Explicit instrument-only classes are not exposed as today's insert-effect workflow.

-
2CH

Mono / stereo

The stable scope is mono/stereo Float32. Advanced bus layouts and Float64 are future work.

-
→

Serial lane

Rack slots process in a defined serial order. Sidechain, arbitrary graph routing and parallel patchbay behavior are deliberately outside v0.6.1.

-
-
When a plug-in is missing or unhealthy

Compatibility failure should remain understandable and bounded.

-
✓
Missing Rack plug-ins can remain placeholders. The saved Rack definition does not need to be destructively rewritten just because a VST3 is temporarily unavailable.
-
✓
Invalid preset loads do not replace the current working Rack.
-
✓
Unavailable wet results fall back to dry/pass-through audio under the product's bounded realtime policy, with the Rack Output Fader still applied.
-
✓
Scanning is isolated from OBS so normal candidate discovery does not intentionally load every third-party module into the broadcast process.
-
-
Report a compatibility problem

Good reports become better regression tests.

Include Windows version, OBS version, exact VST3 product/version, Single Host vs Rack, reproduction steps, expected/actual behavior and relevant OBS logs. Do not attach commercial plug-in binaries unless their license explicitly permits redistribution.

+ +
Download current stable

Install directly from the public site.

The installer button resolves the latest public release automatically and downloads the release asset directly.

Compatibility claims are intentionally conservative and evidence-based.
From f37e1615446243f787e536a2d2803020754bd132 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:17:28 +0700 Subject: [PATCH 10/12] docs: synchronize safety page with latest stable download --- docs/safety.html | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/docs/safety.html b/docs/safety.html index 15b242e..5e1433e 100644 --- a/docs/safety.html +++ b/docs/safety.html @@ -5,19 +5,20 @@ VST3 Safety in OBS — Isolation, Fail-Dry and Recovery - + + - +
-
Safety model · v0.6.1

A bad plug-in should not be allowed to become a bad broadcast.

VST3 plug-ins are native code. OBS Safe VST3 Host changes the failure boundary by keeping third-party VST3 DSP and vendor GUI code outside obs64.exe in both the Single Host and VST3 Rack workflows.

+
Safety model · latest stable

A bad plug-in should not be allowed to become a bad broadcast.

VST3 plug-ins are native code. OBS Safe VST3 Host changes the failure boundary by keeping third-party VST3 DSP and vendor GUI code outside obs64.exe in both the Single Host and VST3 Rack workflows.

The core boundary

OBS Studio (obs64.exe) @@ -46,11 +47,11 @@

What happens to audio when an isolated result is unavailable?

During a live show, losing an effect is preferable to intentionally stalling the broadcast audio callback.

Durable working-Rack recall

-

v0.6.1 gives each OBS VST3 Rack filter its own durable working-session state. This is separate from named reusable Rack presets: the user does not need to create a preset merely to preserve the Rack they were actively using before closing OBS.

+

Each OBS VST3 Rack filter has its own durable working-session state. This is separate from named reusable Rack presets: the user does not need to create a preset merely to preserve the Rack they were actively using before closing OBS.

The working session stores topology, bypass state and VST3 component/controller state using CRC-protected atomic writes with a last-known-good recovery path.

DSP-safe state capture

-

Vendor state capture is control-plane work, but third-party VST3 implementations are not all safe to call concurrently with realtime process(). v0.6.1 therefore establishes a bounded capture frontier before calling vendor getState.

+

Vendor state capture is control-plane work, but third-party VST3 implementations are not all safe to call concurrently with realtime process(). The Rack establishes a bounded capture frontier before calling vendor getState.

  • new Rack vendor processing calls fail dry while capture is active;
  • the control owner waits only for already-running vendor calls to leave;
  • @@ -60,21 +61,17 @@

    DSP-safe state capture

    Dry-first restore

    A saved Rack may contain third-party plug-ins whose open/state-restore time is slow or variable. The helper therefore becomes safely available with a dry/empty generation first. The saved chain materializes on the control owner and replaces the working generation only when the complete restored chain is coherent.

    -

    This avoids turning aggregate vendor restore time into an OBS/Rack startup deadline.

    Split controller/processor VST3 state

    -

    Some VST3 plug-ins keep their native editor/controller and processor as distinct components. A preset title can appear restored while the processor parameters are stale if controller edits never reach processor state. The Rack uses a bounded control-to-DSP bridge for native editor edits and supports controller-wide resync when a plug-in reports parameter values changed.

    +

    Some VST3 plug-ins keep their native editor/controller and processor as distinct components. The Rack uses a bounded control-to-DSP bridge for native editor edits and supports controller-wide resync when a plug-in reports parameter values changed.

    Before state capture, accepted controller edits must cross that processor frontier so the saved state represents the actual sound, not just controller metadata.

    Storage failure is not hidden

    -

    If the per-Rack durable storage path cannot be created or resolved, the product does not present a normal writable Rack as successfully persistent. It stays dry and reports Needs Attention. This prevents a storage failure from becoming silent state loss on the next restart.

    +

    If the per-Rack durable storage path cannot be created or resolved, the product does not present a normal writable Rack as successfully persistent. It stays dry and reports Needs Attention.

    Named presets remain independent

    Named Rack presets continue to provide reusable user-managed chains. Missing Rack plug-ins can remain pass-through placeholders, and a failed/corrupt preset load is not allowed to replace the current working Rack.

    -

    Bounded shutdown

    -

    v0.6.1 retains explicit Rack helper shutdown hardening so a hung isolated helper is not allowed to hold OBS shutdown indefinitely. This is part of the same product principle: an out-of-process VST3 failure must remain bounded at the OBS boundary.

    -

    Can this promise OBS will never crash?

    No. Windows, OBS itself, drivers, hardware faults and other native components remain outside this project's control. The defensible claim is architectural: third-party VST3 runtime and vendor UI code are deliberately kept outside the OBS process.

    @@ -82,18 +79,12 @@

    Crash isolation is not a malware sandbox

    The helper processes run with your Windows user permissions. A malicious VST3 can still use APIs and resources available to your account.

    Only install VST3 plug-ins from vendors you trust. Process isolation here is designed for crash/hang containment and bounded recovery—not for safely running untrusted malware.
    -

    Release confidence

    -

    The v0.6.1 runtime candidate passed the project's P0/P1, R0, R1, R2, R3, CI and Compatibility Test Build gates on one exact source head before merge. Real OBS testing then verified repeated restart recall using changed settings from commercial split-component VST3 effects.

    -

    The public Windows pipeline rebuilds against pinned OBS/libobs, runs automated tests and scanner smoke, validates the package and Smart Installer, and publishes SHA-256 checksums beside the binaries.

    -

    Automated tests cannot prove every commercial plug-in on every Windows machine, so compatibility claims remain conservative and real-machine evidence remains important.

    -

    Unsigned Windows package

    -

    The current package is not commercially Authenticode-signed. Windows may show Unknown publisher or a SmartScreen reputation warning.

    -

    Do not disable Windows security globally. Download only from the official GitHub Releases page and compare against SHA256SUMS.txt when you want an additional integrity check.

    -
    Get-FileHash .\OBS-Safe-VST3-Host-v0.6.1-Setup-x64.exe -Algorithm SHA256
    +

    The current package is not commercially Authenticode-signed. Windows may show Unknown publisher or a SmartScreen reputation warning. Do not disable Windows security globally.

    +

    Use the installer button below. It resolves the latest official public release automatically; SHA256SUMS.txt remains available for integrity verification.

    - +
- + From 303978931795ccac10ffbcd7961a7fac4ba657f8 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:17:50 +0700 Subject: [PATCH 11/12] docs: synchronize roadmap page with latest stable download --- docs/roadmap.html | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/roadmap.html b/docs/roadmap.html index 950a796..1752eda 100644 --- a/docs/roadmap.html +++ b/docs/roadmap.html @@ -7,21 +7,25 @@ + - +
-
Product roadmap · synchronized with v0.6.1

Stable Single Host. Durable serial Rack. Expand only without weakening the live-safety contract.

The roadmap is intentionally staged. New breadth matters only if realtime behavior, recovery, OBS integration, packaging and user workflow remain dependable enough for live use.

+
Product roadmap · public stable latest stable

Stable Single Host. Durable serial Rack. Expand only without weakening the live-safety contract.

The roadmap is intentionally staged. New breadth matters only if realtime behavior, recovery, OBS integration, packaging and user workflow remain dependable enough for live use.

+
Stage 1

Safe VST3 Single Host — stable

The focused one-effect filter remains the simplest way to use a modern VST3 effect in OBS.

1FX

Simple workflow

Installed discovery, one selected effect and direct access to its native vendor interface.

ISO

Isolation

VST3 runtime and scanner stay outside the OBS process, with state persistence and bounded recovery.

DRY

Fail-dry

A missing/late isolated wet result does not justify deliberately stalling OBS's realtime audio path.

-
Stage 2 · v0.6.1

Safe VST3 Rack — stable and durable

v0.6.0 introduced the public serial Rack; v0.6.1 hardens working-state recall and split-component VST3 state safety after repeated real OBS restart testing.

+ +
Stage 2 · current stable

Safe VST3 Rack — stable and durable

The public serial Rack provides a compact helper-owned editor, real master controls and metering, durable working-state recall and split-component VST3 state safety.

RACK

Serial chain

Multiple effects with stable slots, add/replace/remove/reorder and bypass.

-
GUI

Graphical editor

A dedicated helper-owned Rack Editor with native vendor-editor orchestration.

+
GUI

Graphical editor

A dedicated helper-owned Rack Editor with native vendor-editor orchestration and compact broadcast-oriented controls.

SAVE

Automatic recall + presets

The current working Rack survives normal OBS restarts automatically, while named presets remain independent reusable chains.

+
Current Rack reliability contract

Persistence must not weaken realtime safety.

✓
CRC-protected atomic working-session writes with last-known-good recovery.
✓
DSP-safe state capture without a realtime-required control mutex.
@@ -29,16 +33,18 @@
✓
Split controller/processor VST3 edits synchronized before state capture.
✓
Storage failure is surfaced as Needs Attention rather than silent nonpersistent operation.
-
Stage 3 · future

Routing, sidechain and advanced audio buses

Potential future work includes explicit routing, sidechain inputs, richer VST3 buses, parallel paths where justified, stronger multichannel handling and Float64 fallback. These are not v0.6.1 features.

+ +
Stage 3 · future

Routing, sidechain and advanced audio buses

Potential future work includes explicit routing, sidechain inputs, richer VST3 buses, parallel paths where justified, stronger multichannel handling and Float64 fallback.

Stage 4 · future

MIDI and VST3 instruments

Instrument hosting needs a real event/timing model—MIDI input, event buses, note/controller timing, sustain/pitch/modulation, state recovery and low-latency monitoring. It is intentionally separate from today's effects-only product scope.

Long-term

A professional OBS live-audio platform without becoming a DAW-sized default UI.

Potential directions include scene-aware presets, macro control, richer diagnostics, compatibility intelligence, signed releases, broader platform support and live-performance features—only when the underlying reliability model is preserved.

Roadmap items are direction, not guaranteed dates. The project intentionally prefers evidence-backed releases over shipping feature count.
+
Release gate

What “stable” should continue to mean

✓
Deterministic lifecycle/state and regression coverage.
✓
Bounded realtime and failure/recovery behavior.
✓
Windows packaging, installer and supported OBS qualification.
✓
Representative real-machine VST3 evidence.
✓
Public docs, scope claims and downloads synchronized with the shipped product.
-
+
Ambitious workflow, conservative guarantees.
From d43ad7d384bfe75e153bde981f5604232712c463 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Sun, 6 Sep 2026 16:18:37 +0700 Subject: [PATCH 12/12] docs: add stable direct-download links to README --- README.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 288a00f..b3dc073 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,19 @@ **Modern VST3 effects in OBS Studio, with third-party plug-in code kept outside `obs64.exe`.** -[![Stable v0.6.1](https://img.shields.io/badge/stable-v0.6.1-22c55e)](https://github.com/masarray/obs-vst3/releases/latest) -[![Windows x64](https://img.shields.io/badge/Windows-x64-0078D4?logo=windows11&logoColor=white)](https://github.com/masarray/obs-vst3/releases/latest) +[![Stable release](https://img.shields.io/github/v/release/masarray/obs-vst3?sort=semver&display_name=tag&label=stable&color=22c55e)](https://github.com/masarray/obs-vst3/releases/latest) +[![Windows x64](https://img.shields.io/badge/Windows-x64-0078D4?logo=windows11&logoColor=white)](https://github.com/masarray/obs-vst3/releases/latest/download/OBS-Safe-VST3-Host-Setup-x64.exe) [![OBS 29.1+](https://img.shields.io/badge/OBS-29.1%2B-302E31?logo=obsstudio&logoColor=white)](https://obsproject.com/) [![VST3 effects](https://img.shields.io/badge/VST3-effects%20%2B%20Rack-8b5cf6)](https://masarray.github.io/obs-vst3/compatibility.html) [![CI](https://github.com/masarray/obs-vst3/actions/workflows/ci.yml/badge.svg)](https://github.com/masarray/obs-vst3/actions/workflows/ci.yml) [![GPL-3.0-or-later](https://img.shields.io/badge/license-GPL--3.0--or--later-22c55e)](LICENSE) -> **Public stable: v0.6.1** · Single VST3 Host + isolated serial VST3 Rack · premium compact Rack Editor · Input Trim / Output Fader · LUFS-I + dBTP metering · automatic working-Rack recall · native vendor GUIs · presets · fail-dry recovery +> **Public stable** · Single VST3 Host + isolated serial VST3 Rack · premium compact Rack Editor · Input Trim / Output Fader · LUFS-I + dBTP metering · automatic working-Rack recall · native vendor GUIs · presets · fail-dry recovery **Website:** https://masarray.github.io/obs-vst3/ -**Downloads:** https://github.com/masarray/obs-vst3/releases/latest +**Direct installer:** https://github.com/masarray/obs-vst3/releases/latest/download/OBS-Safe-VST3-Host-Setup-x64.exe +**Portable ZIP:** https://github.com/masarray/obs-vst3/releases/latest/download/OBS-Safe-VST3-Host-Windows-x64-Portable.zip +**Release notes:** https://github.com/masarray/obs-vst3/releases/latest ## Why this project exists @@ -29,17 +31,17 @@ Third-party VST3 runtime code, vendor editors and plug-in scanning are deliberat ### Recommended — Smart Installer -Open the **[latest stable release](https://github.com/masarray/obs-vst3/releases/latest)** and download: +**[Download the latest stable Smart Installer directly](https://github.com/masarray/obs-vst3/releases/latest/download/OBS-Safe-VST3-Host-Setup-x64.exe)** -`OBS-Safe-VST3-Host-v0.6.1-Setup-x64.exe` +The stable URL above does not contain a version number. Release automation publishes it as an alias of the newest qualified installer, so documentation and landing pages do not need manual URL changes for every release. Close OBS, run the installer, select the OBS root containing `bin\64bit\obs64.exe`, then start OBS again. -For advanced/manual installation, use: +For advanced/manual installation: -`OBS-Safe-VST3-Host-v0.6.1-Windows-x64-Portable.zip` +**[Download the latest portable ZIP directly](https://github.com/masarray/obs-vst3/releases/latest/download/OBS-Safe-VST3-Host-Windows-x64-Portable.zip)** -Every release also publishes `SHA256SUMS.txt` for integrity verification. +Every release also publishes **[SHA256SUMS.txt](https://github.com/masarray/obs-vst3/releases/latest/download/SHA256SUMS.txt)** for integrity verification. **Guides:** [Install](https://masarray.github.io/obs-vst3/install.html) · [Compatibility](https://masarray.github.io/obs-vst3/compatibility.html) · [Safety model](https://masarray.github.io/obs-vst3/safety.html) · [Roadmap](https://masarray.github.io/obs-vst3/roadmap.html) @@ -147,7 +149,7 @@ obs-safe-vst3-rack-host.exe ## Current stable scope -| Capability | v0.6.1 | +| Capability | Current stable | |---|---| | Windows x64 | ✅ Supported | | OBS Studio 29.1+ | ✅ Supported compatibility floor | @@ -184,7 +186,7 @@ Compatibility qualification covered Windows tests, scanner smoke, supported OBS Real OBS validation included repeated full OBS restarts while changing Rack/VST3 settings across sessions; the latest working chain and full VST3 DSP state restored successfully. The runtime candidate was merged as PR #109. The v0.6.1 release marker is a documentation/version descendant of that qualified runtime change. -The public release workflow rebuilds against pinned OBS/libobs and publishes the Smart Installer, portable ZIP and SHA-256 checksums only after its package tests pass. +The public release workflow rebuilds against pinned OBS/libobs and publishes the Smart Installer, portable ZIP and SHA-256 checksums only after its package tests pass. A follow-up release workflow publishes versionless stable aliases for the installer and portable package, which are the URLs used by the website and README. See [CHANGELOG.md](CHANGELOG.md) for release-level notes and [docs/rack/CURRENT_STATUS.md](docs/rack/CURRENT_STATUS.md) for the engineering status ledger. @@ -205,7 +207,7 @@ Compatibility is evidence-based rather than implemented as a vendor whitelist. S Current Windows binaries are not commercially Authenticode-signed, so Windows can show **Unknown publisher** or a SmartScreen reputation warning. -Do not disable Defender or SmartScreen globally. Download only from this repository's Releases page and verify `SHA256SUMS.txt` when you want an additional integrity check. +Do not disable Defender or SmartScreen globally. Download only through the official repository/website links and verify `SHA256SUMS.txt` when you want an additional integrity check. ## Safety boundary