◂ All projects

Audio Stitcher

  • TypeScript
  • Next.js
  • Web Audio API
  • ffmpeg.wasm
  • essentia.js

Upload a few audio clips and it stitches them into one seamless mix, with the beat-matching, crossfades, and loudness mastering all running right in your browser through WebAssembly.

This started because I wanted to stitch song clips into one clean mix without wrestling with a full DAW. You upload clips with start and stop times, hit stitch for a first-pass mix, then refine every seam in the editor. The cool part is that all the signal processing runs client-side in WebAssembly: it detects tempo and key with essentia.js, beat-matches the clips with a pitch-preserving stretch, and masters the whole thing to a clean loudness target with ffmpeg.wasm. The seam engine is actually a byte-identical TypeScript port of a Python engine I wrote first, with a parity test to prove the two produce the exact same output.