Skip to content

v2.6.0

Latest

Choose a tag to compare

@dy dy released this 10 Jul 16:50
· 26 commits to master since this release
  • live playback speed — a.playbackRate settable mid-playback, smooth tape-style ramp (player + worker)
  • audio(src, { worker: true }) — worker-hosted engine from the main entry
  • sliding stretch — stretch(t => f) / stretch({ t, v }): continuous tempo envelope, pitch preserved
  • shrink(gap?) — compress silent pauses to a target gap ≡ ffmpeg silenceremove, audacity truncate-silence
  • crossover(...freqs) — LR4 band split, allpass-flat sum ≡ ffmpeg acrossover
  • adjustable fade — fade(dur, { start, end, mid }): arbitrary levels, midpoint skew
  • per-block note events for streaming instruments; contract frames hook for length-changing plugins
  • registry 125 → 136: chroma/tonnetz stats, stretch-* ×9 (pvoc-lock/pghi/wsola/psola/sms/transient/hybrid/paul)
  • CLI: split --cue album.cue — cue-sheet tracks, {title} naming, tags; [ ] player speed keys
  • save/encode: empty range fails before touching the file (#27)
  • fix: unranged mix/write restarted at every block (source tiled)
  • decode: dual-mono wav/flac keep both channels; browser falls back to native WebAudio for unbundled codecs
  • OPFS budget auto-detects via storage.estimate()
  • audio.d.ts for every @audio/* plugin package, generated from manifest metadata
  • audio.plugins registry (audio.atoms stays as deprecated alias)

Full Changelog: v2.5.1...v2.6.0