VaporKey v0.5
Pre-release
Pre-release
VaporKey v0.5.0 — prerelease
This is the first cut of the 0.5 line. It carries forward every preset and
parameter from 0.4.x (the legacy 0..9 wavetable indices stay frozen), but the
synth engine, FX chain, and factory content all grew substantially. Expect
sharper highs, denser tails, and a much bigger usable preset bank out of the
gate.
Highlights
- 23 factory wavetables, six categories. The previous 9-shape bank grew
to 23 (Sync, RingMod, Wavefold, Vowels, Choir, Whisper, Organ, Pluck,
Sawteeth, Even/Odd, Tine, Mallet, FM Stack, Bitcrush) surfaced through a
new multi-column popup picker grouped by Analog / Vocal / Harmonic /
Inharmonic / Digital / Special. - Cross-oscillator modulation (X-MOD). Each oscillator can now use any
other oscillator (or none) as an FM source, ring modulator, or amplitude
modulator. Lives below the per-osc strips on the OSC page with a small
node-and-arrow diagram of the active routing. - Dattorro plate reverb. Replaces JUCE's FreeVerb with a 1997 Dattorro
topology — denser, smoother tail, structural stereo de-correlation. Same
reverb_size/reverb_dampparameter ids and ranges, so every existing
preset still loads. - 4× oversampled distortion. The soft / hard / fold / bit stages now run
through a polyphase-IIR halfband oversampler so hard-clip and wavefolder
harmonics no longer alias hard back into the audible range. Cost is paid
only when distortion is engaged. - Antiderivative-anti-aliased per-voice saturation. The pre-filter drive
and post-filter analog saturation inWTVoicenow use first-order ADAA on
fastTanh. Cheap enough to keep all 16 voices in budget, quietly cleaner
on aggressive drives. - 170 factory presets + two-pane browser. The 57-preset starter bank
grew to 170 patches across Bass, Lead, Pad, Pluck, Keys, Bell, FX, and
Arp, every original preset preserved by name and content. The Master
page's preset combo became a vertical category sidebar with a live name
search; "Showing N / M" chip in the header keeps the filtered size
visible. - Mod wheel and channel aftertouch as first-class mod sources with
destination + amount controls on the Mod page (carried over from 0.4.1).
Fixes that matter for live use
- Arp toggle no longer leaves a stuck note droning when you switch the
arp on/off while a key is already held. - Mono + legato now actually glides instead of silently retriggering
on a fresh voice. - Multi-instance host freezes caused by audio-thread heap allocations
insideprocessArpeggiator, the EQ coefficient builder, and the held /
latched arp arrays. - Mono bus output no longer aliases the right channel pointer over
the left buffer, which had been doubling gain and scrambling cross-channel
routing. - Preset switching holds the audio callback lock across silence, FX
reset, and the APVTS state swap, so there's no longer a click on
session reload.
Build & CI
- Windows builds switched to Ninja to escape the MSBuild + JUCE
/MP
parallelism stack that had been periodically OOM-killing cl.exe on the
4-core windows-2022 runners. - New
VaporKeyTeststarget — unit + audio-regression suite covering
the synth engine, arpeggiator, FX chain, wavetable mip-mapping, .wav
import, parameter registry, factory presets, state save/restore, and an
end-to-end CPU-budget / click-free preset-switch check. CI runs it on
Linux between the preset linter and the per-platform pluginval pass. - Standalone
.exe/.app/ Linux binary now built and uploaded on
every platform (was VST3-only previously).
Compatibility
- 0.5 reads every 0.4.x preset and saved-state blob. The legacy 0..9
wavetable shape indices are frozen. New shapes occupy indices 10+. - VST3 + Standalone, Windows / macOS (universal x86_64 + arm64) / Linux.
- macOS users:
xattr -dr com.apple.quarantineon the.vst3after copy.
The full diff against 0.4.2 is included below; the curated changelog lives
in CHANGELOG.md.
What's Changed
- Expand README with detailed feature documentation by @rocketbombs in #1
- Add arpeggiator and drag-and-drop custom wavetables by @rocketbombs in #2
- Claude/add synth features s3 agq by @rocketbombs in #3
- Polish README for v0.3 release by @rocketbombs in #5
- Move presets to JSON, soften reverb, fix focus & preset-switch burst by @rocketbombs in #6
- Visual overhaul: audio-reactive meter/scope, interactive EQ, polish by @rocketbombs in #7
- Rewrite README for in-development status by @rocketbombs in #8
- Claude/fix vst bugs 3b xxk by @rocketbombs in #9
- Claude/review codebase j62 j9 by @rocketbombs in #10
- Run updateMacroSums after filterMidi so MIDI mod is current by @rocketbombs in #11
- Split processor into Parameters/SynthEngine/Arp/Fx/PresetStore/WavetableImport by @rocketbombs in #12
- Split editor into Widgets/ and Pages/ subdirectories by @rocketbombs in #14
- Expand and reorganize README with detailed feature docs by @rocketbombs in #15
- Drive parameter layout and cache from a single registry by @rocketbombs in #16
- Expose parameter registry and add preset linter by @rocketbombs in #17
- Tighten build flags and guard parameter enum/names parity by @rocketbombs in #18
- Fix mono bus aliasing, tighten preset-switch lock, retire wavetables by @rocketbombs in #19
- Add VaporKeyTests validation suite by @rocketbombs in #20
- Fix VaporKeyTests build under JUCE 8 by @rocketbombs in #22
- Fix six failing validation tests across arp, wavetable, and import paths by @rocketbombs in #23
- ci: scope Linux build to VaporKey_All to avoid OOM by @rocketbombs in #25
- Build only necessary targets in CI and require standalone artifacts by @rocketbombs in #26
- Fix mono+legato silently retriggering on a fresh voice by @rocketbombs in #27
- Add 4x oversampled distortion, ADAA voice sat, Dattorro plate reverb by @rocketbombs in #28
- Expand wavetable bank to 23 shapes with categorised selector by @rocketbombs in #29
- Add cross-oscillator FM / ring / amplitude modulation by @rocketbombs in #30
- Fix MSVC ICE in WavetableLibrary constructor by @rocketbombs in #31
- Move wavetable shape generators to their own translation unit by @rocketbombs in #32
- ci: deduplicate triggers, drop LTO link, cap build parallelism by @rocketbombs in #33
- ci: switch MSVC to /Z7 to fix D8040, harden workflow by @rocketbombs in #34
- ci: cap MSVC /MP to /MP2, fix pluginval URL pattern for tagged releases by @rocketbombs in #35
- Remove /MP compiler flag to prevent OOM in parallel CI builds by @rocketbombs in #36
- ci(windows): exempt Defender + drop --parallel to 1 to fix recurring D8040 by @rocketbombs in #37
- Add cross-oscillator modulation (X-MOD) and expand wavetable library by @rocketbombs in #38
- feat: 170-preset factory bank + two-pane preset browser by @rocketbombs in #39
- fix(arp): silence pass-through held notes on OFF -> ON, revive on ON … by @rocketbombs in #40
- release: v0.5.0 prerelease by @rocketbombs in #41
New Contributors
- @rocketbombs made their first contribution in #1
Full Changelog: https://github.com/rocketbombs/VaporKey/commits/v0.5.0