Releases: Vulpus-Labs/vxn-1
Release list
VXN 0.2.0
vxn-2 and VXN1b now ship as one release. Until now they versioned and released separately — vxn-2 on the bare semver tag, VXN1b on vxn-1b-<version>. From 0.2.0 they share a version and a release page; this one carries both products' binaries. (vxn-1b-0.2.0 is kept as a signpost and holds the same VXN1b builds.)
vxn-2
Mostly about operator level: the amplitude path was rebuilt around a single log-domain accumulator, and a series of long-standing deviations from the DX7 were found and fixed. Patches will sound different — in most cases markedly closer to the hardware.
Operator level, rebuilt
- One log-domain level accumulator for operator amplitude (0323). Level, key scaling, velocity and the EG now combine in one place, in the domain the hardware uses, instead of being multiplied together in linear space at three different points.
- Velocity is a signed level offset, not a multiplier (0324) — the DX7's behaviour. Velocity now shifts an operator up or down the level ladder, so it changes timbre and not merely loudness.
- The rendered-level ceiling was raised to give velocity its headroom (0325).
- The EG's L-values join the level ladder, knee and all, rather than running on a separate curve.
DX7 fidelity fixes
- The feedback ladder was 2× the hardware at every step. Feedback-heavy patches were substantially over-driven.
- Key level scaling barely did anything — the DX7's curve is now ported properly, so the control has its real range.
- The attack law is corrected, restoring the strike on percussive patches.
- Pitch EG and vibrato depth are calibrated against the hardware.
- Detune joins the note; ratio stays rational (0327).
Factory bank
Hand-designed rather than bulk-converted: 44 presets across 8 categories, including a new Brass category and two re-voiced brass ensembles, and Electric Boogaloo — an E.PIANO 1 with a stack chorus. The whole bank was re-levelled against the new level law, and the tool that levels it was fixed too (0326).
FX and web
- Phaser stereo spread with a faceplate ping-pong toggle (0280); phaser Stereo now sits between Feedback and Mix, where it belongs.
- Web user presets, state autosave and patch import/export (0159).
VXN1b
Faster
- The filter cook and the mod matrix are vectorised. Both were running scalar in the per-voice hot path; the matrix is evaluated for every voice on every control block, so it was the obvious next target after the kernels.
cross_mod_typeis read once per block rather than per sample — a runtime enum match inside the lane loop was defeating the vectoriser around it.
Shared DSP
VXN1b now uses the shared FdnReverb from the extracted vxn-core-dsp layer rather than its own copy. WetFade::reset was fixed to un-prime as part of the move: after a reset the wet mix now snaps to the incoming patch value instead of gliding from the old one, which had been audible as a brief swell on patch load.
Fixes
- Lighting a key must never cost the note. Visual key feedback shared a path with note handling; under load that could cost the note itself.
Object.hasOwndropped from the two JS handler tables — it excluded otherwise-capable older browsers from the web build for no gain.- The cross-language tables are now bound, or collapsed. The Rust and JS sides each carried a table that had to agree; they are now checked against each other rather than trusted to stay in step.
The parameter table is unchanged — still 185 host params, Layer 2's CLAP id still a Layer 1 id + 75. No automation re-checking needed; projects saved with 0.0.3 carry over as-is. README · parameter reference
Shared
- A shared
vxn-core-dsplayer was extracted (ADR 0002) so the two synths stop carrying two copies of the same kernels, with an asm-check codegen guard that fails the build if a hot loop stops vectorising. - Shared on-screen piano (shows the split, lights keys played from any source) and CPU meter.
rebuild()no longer resets every parameter (0296); the MIDI decoder is capability-aware (0294).
Windows VST3
0.1.1's Windows VST3s shipped hollow — /OPT:REF stripped the whole-archived engine straight back out, and the link reported success. That fix (/INCLUDE:clap_entry, plus the archive as a link input) is now in the tree, so these are the first Windows VST3s the workflow produces correctly on its own.
Downloads
| Product | Platform | CLAP | VST3 |
|---|---|---|---|
| vxn-2 | macOS (universal) | VXN2-macOS-universal.clap.zip |
VXN2-macOS-universal.vst3.zip |
| vxn-2 | Windows (x64) | VXN2-windows-x64.clap |
VXN2-windows-x64.vst3.zip |
| VXN1b | macOS (universal) | VXN1b-macOS-universal.clap.zip |
VXN1b-macOS-universal.vst3.zip |
| VXN1b | Windows (x64) | VXN1b-windows-x64.clap |
VXN1b-windows-x64.vst3.zip |
Unzip and drop into your plug-in folder:
- macOS CLAP —
~/Library/Audio/Plug-Ins/CLAP/ - macOS VST3 —
~/Library/Audio/Plug-Ins/VST3/ - Windows CLAP —
%LOCALAPPDATA%\Programs\Common\CLAP\ - Windows VST3 —
%LOCALAPPDATA%\Programs\Common\VST3\
The macOS builds are unsigned and unnotarised; Gatekeeper will need the usual right-click → Open, or xattr -dr com.apple.quarantine on the bundle.
Note
Existing vxn-2 patches will sound different. The level, velocity, feedback and key-scaling changes are corrections toward the hardware, but they are not backward-compatible voicings — a patch saved under 0.1.1 will not render identically here. The factory bank has been re-levelled to match; your own patches may want a pass. VXN1b patches are unaffected.
VXN1b 0.2.0 → superseded by VXN 0.2.0
→ Superseded by VXN 0.2.0
VXN1b and vxn-2 now ship as one release. From 0.2.0 the two products share a version and a release page, so there is no separate vxn-1b-* line any more.
Get VXN1b 0.2.0 from the VXN 0.2.0 release →
This release is kept, not deleted: its four assets are still attached and every existing download link still resolves. They are byte-identical to the VXN1b binaries on 0.2.0 — both tags point at the same commit (16cf179), so nothing is lost by using either. New links should point at 0.2.0.
The earlier vxn-1b-0.0.1 … vxn-1b-0.0.3 releases are untouched: they are real, independent releases from when VXN1b genuinely shipped on its own line.
The release notes for this version, and the vxn-2 half of the same release, are on VXN 0.2.0.
VXN1b 0.0.3
Third VXN1b release, and a substantial one: 49 commits on top of
0.0.2.
Browser port
VXN1b now runs in a browser. The same engine compiles to wasm and runs in an
AudioWorklet behind the same faceplate, with a main-thread controller over the
C-ABI opcode surface, IndexedDB persistence (autosave, patch import/export),
MIDI and computer-keyboard input, and a one-command servable bundle:
cargo run -p vxn1b-xtask -- web --serveAlso new
- Stack Pos mod-matrix source — a voice's position within its stack,
unscaled by the Spread knob, so it stays usable as a routing source
independent of how wide the stack is set. - On-screen piano and CPU meter, both shared components.
- Reset layer — restore the edit layer to the factory patch.
- BPM control for the web build.
Downloads
| Platform | CLAP | VST3 |
|---|---|---|
| macOS (universal, arm64 + x86_64) | VXN1b-macOS-universal.clap.zip |
VXN1b-macOS-universal.vst3.zip |
| Windows (x64) | VXN1b-windows-x64.clap |
VXN1b-windows-x64.vst3.zip |
Unzip and drop into your plug-in folder:
- macOS CLAP —
~/Library/Audio/Plug-Ins/CLAP/ - macOS VST3 —
~/Library/Audio/Plug-Ins/VST3/ - Windows CLAP —
%LOCALAPPDATA%\Programs\Common\CLAP\ - Windows VST3 —
%LOCALAPPDATA%\Programs\Common\VST3\
The macOS builds are unsigned and unnotarised; Gatekeeper will need the usual
right-click → Open, or xattr -dr com.apple.quarantine on the bundle.
Notes
- The parameter table grew: 185 host params, up from 181, from two new
per-layer Voice params. Existing automation is unaffected, but Layer 2's CLAP
ids have shifted (a Layer 1 id + 75, previously + 73) — re-check Layer 2
automation lanes in projects saved with 0.0.1 or 0.0.2. - README
and the parameter reference. clap-validatorclean on the macOS bundle (0 failed; 3 skips are the optional
preset-discovery draft factory).
VXN1b 0.0.2
Second VXN1b release. Fixes and one voicing feature on top of
0.0.1.
Changes
- Stack start-phase depth and lane distribution — control over where the
lanes of a stacked voice begin in their cycle, and how that spread is
distributed across the stack. - Per-frame pan re-cook keeps
level_comp— the level compensation was
being dropped when pan was re-cooked mid-frame. - Windows VST3 link fix, carried in source from the start of this tag.
0.0.1's Windows.vst3asset was repaired in place after release; this is
the first VXN1b tag that never contained the broken build.
Downloads
| Platform | CLAP | VST3 |
|---|---|---|
| macOS (universal, arm64 + x86_64) | VXN1b-macOS-universal.clap.zip |
VXN1b-macOS-universal.vst3.zip |
| Windows (x64) | VXN1b-windows-x64.clap |
VXN1b-windows-x64.vst3.zip |
Unzip and drop into your plug-in folder:
- macOS CLAP —
~/Library/Audio/Plug-Ins/CLAP/ - macOS VST3 —
~/Library/Audio/Plug-Ins/VST3/ - Windows CLAP —
%LOCALAPPDATA%\Programs\Common\CLAP\ - Windows VST3 —
%LOCALAPPDATA%\Programs\Common\VST3\
The macOS builds are unsigned and unnotarised; Gatekeeper will need the usual
right-click → Open, or xattr -dr com.apple.quarantine on the bundle.
Notes
- README
and the parameter reference.
The parameter table is unchanged from 0.0.1 — patches and automation carry over. clap-validatorclean on the macOS bundle (0 failed; 3 skips are the optional
preset-discovery draft factory).
VXN1b 0.0.1
First release of VXN1b — a sibling of VXN1, not a version of it. Same sound
engine; an entirely different modulation surface.
VXN1's fixed Pitch Mod / PWM Mod / Filter Mod / Mod Wheel / Pitch Wheel panels
are replaced by a 16-slot mod matrix per layer. Each slot is a
source → destination pair with a depth, a curve (linear, exponential,
logarithmic, bipolar), and a secondary scale source acting as a per-route VCA.
- Sources — Env 1/2, LFO 1/2, velocity, key, mod wheel, pitch wheel,
aftertouch, per-note random, stack spread. - Destinations — pitch, cross-mod sweep, cross-mod amount, PWM (both
oscillators or each alone), cutoff, resonance, HPF cutoff, amp, pan,
Env 1/2 time scale, Env 1/2 sustain, LFO 1 rate.
A patch is two independent layers, each with its own matrix, playing
together or split. The DSP is VXN1's vxn-dsp crate used directly rather than
copy-adapted, so it is the same code: 2 oscillators + sub + noise, hard-sync /
PM / ring cross-modulation, a 4-pole ZDF ladder with switchable HPF, two ADSRs,
two LFOs, and the chorus / phaser / delay / reverb / dynamics chain.
VXN1b installs alongside VXN1 under its own plugin id (labs.vulpus.vxn1b);
neither reads the other's presets.
Downloads
| Platform | CLAP | VST3 |
|---|---|---|
| macOS (universal, arm64 + x86_64) | VXN1b-macOS-universal.clap.zip |
VXN1b-macOS-universal.vst3.zip |
| Windows (x64) | VXN1b-windows-x64.clap |
VXN1b-windows-x64.vst3.zip |
Unzip and drop into your plug-in folder:
- macOS CLAP —
~/Library/Audio/Plug-Ins/CLAP/ - macOS VST3 —
~/Library/Audio/Plug-Ins/VST3/ - Windows CLAP —
%LOCALAPPDATA%\Programs\Common\CLAP\ - Windows VST3 —
%LOCALAPPDATA%\Programs\Common\VST3\
The macOS builds are unsigned and unnotarised; Gatekeeper will need the usual
right-click → Open, or xattr -dr com.apple.quarantine on the bundle.
Notes
- Documentation: README
and the full parameter reference
(181 host parameters: 73 per layer × 2, plus 35 globals). - VXN1b versions independently of the shared
0.xline that VXN1 and VXN2 ride,
and tagsvxn-1b-<version>. clap-validatoris clean on the macOS bundle (18 passed, 0 failed; the 3
skips are the optional preset-discovery draft factory). It does flag
scan-timeabove its 100 ms budget on a cold first load — VXN1 does the same,
and it warms to well under budget on subsequent scans.
vxn-1 + vxn-2 0.1.1
Highlights
- vxn-2 now ships a VST3 alongside the CLAP (macOS universal + Windows x64), via the clap-wrapper pipeline ported from vxn-1 (0170). VST3-only hosts are now supported.
Artifacts
- macOS (universal):
VXN1CLAP+VST3,VXN2CLAP+VST3 - Windows (x64):
VXN1CLAP+VST3,VXN2CLAP+VST3 - vxn-1 manual (PDF)
Built and attached automatically by the release workflow.
2026-08-24 — Windows VST3 assets replaced. The VXN1-windows-x64.vst3.zip
and VXN2-windows-x64.vst3.zip originally attached here contained no engine and
would not have loaded in a host: the Rust staticlib was whole-archived into the
module and then stripped straight back out by /OPT:REF, because nothing
references the CLAP entry point at link time. The link reported success, so it
went unnoticed.
Both zips have been rebuilt from this exact tag plus that one link fix
(/INCLUDE:clap_entry, plus adding the archive as a link input) and re-uploaded.
No other source change is in them, and the tag is unmoved. The CLAP builds and
both macOS VST3s were never affected — macOS does not dead-strip by default,
which is why only Windows was hollow.
vxn-1 + vxn-2 0.1.0
Release build of vxn-1 (CLAP + VST3) and vxn-2 (CLAP), macOS-universal and Windows x64. Binaries are attached by CI once the build jobs finish.
vxn-1
- Tiered poly voice-steal — released tails sacrificed before held notes.
- Toggle declick — FX-bypass and OS-change crossfades to kill switching clicks (E035).
vxn-2
- EG-rate mod-matrix destinations — per-lane amp + pitch envelopes with decorrelation.
- Key scaling — full-keyboard reach with true exponential curve.
- DX7-calibrated EG: measured decay/release rates, qrate mod-4 downward factor, two-operator feedback fix for algos 4 & 6.
- Factory bank groom — full names, −6 dBFS peak-level pass, held-voice silence on preset load.
Artifacts
| Plugin | macOS (universal) | Windows (x64) |
|---|---|---|
| vxn-1 | CLAP + VST3 | CLAP + VST3 |
| vxn-2 | CLAP | CLAP |
Plus the vxn-1 manual PDF.
macOS bundles are zipped with ditto — unzip and drop into ~/Library/Audio/Plug-Ins/{CLAP,VST3}/.
VXN1 0.0.8
What's new
- Manual: full mdBook manual added, source-audited for accuracy, available as PDF (attached to this release) and online at https://vulpus-labs.github.io/vxn-1/.
- Docs CI: GitHub Pages + PDF artifact pipeline.
Engine / DSP
No engine changes since 0.0.7 — this release is the documentation milestone.
Artifacts
VXN1-macOS-universal.clap.zip— macOS universal (arm64 + x86_64) CLAP bundle.VXN1-windows-x64.clap— Windows x64 CLAP plugin.vxn1-manual.pdf— the manual.
VXN1 0.0.7
Changes since 0.0.6
- Per-voice stereo spread (E019) + perf follow-ups
- Block-level silent-osc skip; dropped ad-hoc denormal sanitisation
- Jovian Presets bank removed — TAL J-8 community-port provenance made it a poor factory fit
- Factory bank: Bass / Brass / Keys / Lead / Pad / Performance / Strings
Binaries (macOS universal + Windows x64) attached below once the release workflow finishes.
VXN1 0.0.6
Fixes
- Windows: editor now opens inside hosts installed under
C:\Program Files\(Reaper et al.). WebView2's default user-data folder lived next to the host exe and required admin write, returningE_ACCESSDENIED(0x80070005); it is now redirected to%LOCALAPPDATA%\VulpusLabs\VXN1\WebView2.
Install
macOS
- Download
VXN1-macOS-universal.clap.zipand unzip it. - Move
VXN1.clapinto~/Library/Audio/Plug-Ins/CLAP/(create the folder if needed). - De-quarantine — Safari / browsers tag downloads with
com.apple.quarantine; unsigned plugins fail to load until that's stripped. In Terminal:If macOS still blocks it ("cannot be opened because the developer cannot be verified"), open System Settings → Privacy & Security, scroll to the bottom, and click Allow Anyway next to the VXN1 entry, then reopen your host.xattr -dr com.apple.quarantine ~/Library/Audio/Plug-Ins/CLAP/VXN1.clap
Windows
- Download
VXN1-windows-x64.clap. - Copy it into
%CommonProgramFiles%\CLAP\(typicallyC:\Program Files\Common Files\CLAP\).