Skip to content

VaporKey v0.5.1

Pre-release
Pre-release

Choose a tag to compare

@rocketbombs rocketbombs released this 13 May 11:37
fa3b8eb

VaporKey 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 Hz Timer gated by isShowing() (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
    AudioProcessorValueTreeState parameter 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 resets samplesToStep to 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) dt truncation while
    samplesToStep retained 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 to std::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.quarantine on the .vst3 after 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