VaporKey v0.5.1
Pre-releaseVaporKey v0.5.1 — prerelease
A point release on top of 0.5.0: three targeted fixes surfaced by the end-user
testing round on 0.5.0. No parameter, preset, or saved-state format changes —
existing 0.5.0 sessions load and sound identical.
Fixes that matter for live use
-
EQ curve no longer freezes after switching tabs. The 3-band EQ display
was driven by a 30 HzTimergated byisShowing()(added in the
multi-instance perf pass alongside the cached editor backdrop). On some
tab-switch sequences the timer didn't restart when the FX tab came back
into view, so dragging the L / M / H nodes updated the underlying
parameter but the curve drawn on top stayed stuck on its old shape until
a forced repaint. Replaced the polling timer with an
AudioProcessorValueTreeStateparameter listener on the four EQ ids; the
curve now repaints reactively the moment any value changes — drags, host
automation, preset loads, and undo — with no polling cost or visibility
race left to get wrong. Same pattern the X-MOD routing diagram already
uses. -
Arp first note lands on the press instead of up to a full step later.
The OFF → ON transition used to set the internal step countdown to a full
stepSamples, so the first note of a fresh phrase would fire "strictly
after the chord is registered" — in practice up to ~0.5 s at 1/4 + 120 BPM,
clearly perceptible as latency. The arp also let the grid free-tick through
silence, so even mid-session, releasing every key and pressing again would
land the new phrase's first note wherever the silent grid happened to be.
The transition now resetssamplesToStepto zero, and the
empty-held → non-empty-held edge inside the same arp cycle also resets the
grid, so fresh phrases always start on the press. Latched phrases are
unaffected. -
Arp step placement no longer drifts against the host beat. The
per-iteration cursor advance used(int) dttruncation while
samplesToStepretained full double precision, systematically pulling each
step's note placement 0..1 samples earlier than its real-time position.
The bias is one-directional and accumulates as steady drift — small per
step (sub-millisecond) but audible over long sessions (~6 ms after 1000
steps at 1/16 + 120 BPM). Switched the advance tostd::lround (dt), so
the rounding error is zero-mean instead of one-sided and drift no longer
accumulates; each step's note now lands within 0.5 sample of its
real-time position.
Compatibility
- 0.5.1 reads every 0.5.0 session and preset unchanged. No parameter,
preset format, or saved-state changes. - VST3 + Standalone, Windows / macOS (universal x86_64 + arm64) / Linux.
- macOS users:
xattr -dr com.apple.quarantineon the.vst3after copy.
The full diff against 0.5.0 is included below; the curated changelog lives
in CHANGELOG.md.
What's Changed
- perf(editor): unblock host UI thread under multi-instance load by @rocketbombs in #42
- docs(readme): embed v0.5.0 audio demo and link platform downloads by @rocketbombs in #43
- docs(readme): drop video embed, keep direct demo link by @rocketbombs in #44
- fix(ui,arp): EQ curve repaints reactively + arp first note lands on p… by @rocketbombs in #45
- release: v0.5.1 prerelease by @rocketbombs in #46
Full Changelog: v0.5.0...v0.5.1