Z zvuk
Public roadmap

What's next

An honest punch list of what would make zvuk better, ordered by impact. No promises on dates — this is intent, not a release schedule. PRs welcome on anything sized small.

Status
Shipped in v0.0.1
Runtime + lazy AudioContext, mixer + buses + click-free fades, FX chain (compressor / filter / reverb / ducker / pitch-preserving stretch), spatializer (2D + 3D), parameters, snapshots, concurrency policies, codec ladder, voice jitter, scheduler.
Not on this roadmap
Framework adapters (React/Vue/Svelte). Visual node-graph editor. WASM DSP. Native bridge for React Native or Electron-specific paths. HRTF spatializer beyond stock PannerNode HRTF. These remain out-of-scope for the foreseeable.
Tier 1

Highest impact

Hit immediately, missing today, small surface.

  1. Live spatializer control on Voice

    voice.spatializer.setPan / setPosition while playing. Today the option is set at spawn and frozen — moving sources need a re-attach. The SpatialPanner demo even has to fake it.

    related: /concepts/spatializer/
    small
  2. Voice pause / resume

    pause-on-menu, pause-on-blur, per-voice. Track the offset; resume from where it stopped. Currently we only have stop().

    related: /concepts/voice/
    small
  3. Live voice.playbackRate setter

    pitch is set in PlayOptions and frozen. Live ramps unlock tension/slow-mo without granular stretch.

    related: /concepts/voice/
    small
  4. Audio sprites

    one buffer, many named regions, one fetch. Match-3 cascades, UI variants, low-latency one-shots. ~80 lines.

    medium
  5. Stream source

    <audio> + MediaElementAudioSource for music files >30s. Don't decode 4-minute tracks into RAM. iOS works around its own decode bugs this way.

    medium
Tier 2

Quality of life

Pays back forever — across every page, every adopter.

  1. Auto-generated /api/ from TypeDoc

    Concept pages have hand-written API blocks; that drifts. TypeDoc → JSON → custom Astro content loader → MDX pages with consistent shape. Reference is always current.

    medium
  2. Pagefind search

    ⌘K modal in the nav, indexed at build time, no Algolia key. With 27+ pages, search starts mattering.

    small
  3. Loudness normalization on load

    loadSound(..., { normalize: true }) runs an RMS pass at decode and applies makeup gain so all sounds sit at the same perceived loudness. Removes a workflow tax every game-audio team currently pays in their DAW.

    medium
  4. Better error messages

    BusNotFoundError("sxf"; did you mean "sfx"?). Levenshtein on declared bus/sound names. Single-file change, big DX feel.

    related: /concepts/engine/
    small
  5. Realtime stretch via AudioWorklet

    Current StretchProcessor is offline-only. Worklet port unlocks live tempo modulation — boss intros that bend in real time.

    related: /fx/pitch/
    large
Tier 3

For "library people adopt"

Not just "library that works."

  1. Master limiter

    Headroom is a static gain; a brick-wall limiter on master prevents clipping when FX stack. DynamicsCompressorNode at ratio 20+, fast attack.

    related: /concepts/mixer/
    small
  2. Crossfade helper

    engine.crossfade("intro", "main", { ms: 1500 }) — common music-swap pattern. People will write this themselves five times before realising it should be a helper.

    small
  3. Examples directory

    Full deployable apps in /examples/: slot-machine, match-3, fps-footsteps. Way more convincing than 11 isolated demos. Linked from the landing.

    large
Tier 4

Polish

Can wait, but on the list.

  1. npx zvuk transcode raw/*.wav

    The ffmpeg loop from the asset-formats guide as a CLI. Cuts setup friction.

    related: /guides/asset-formats/
    small
  2. npx zvuk gen bank.json

    Typed sound names emitted from a manifest, so engine.sound("coin") is autocompleted.

    medium
  3. Bench suite

    Voice spawn rate, decode time, fade event drift. Wired to PR CI.

    medium
  4. Touch handling polish

    SpatialPanner is mouse-first; touch drag is rough on mobile.

    related: /concepts/spatializer/
    small
  5. Auto changelog page

    Render .changeset/*.md as /changelog/ at build time.

    small
  6. OG images

    Per-page social cards via astro-og-canvas.

    small
Contribute

Pick one and PR it

Items sized small are usually a single file plus a test. Items sized medium typically touch 2–4 files. Items sized large are worth opening an issue first to align on shape.

Open an issue