Back to work

Audio software · live · active development

Resample Lab

Turn one sound into a sample pack in the browser.

Resample Lab takes an audio file and renders eight related sounds across ambiences, one-shots, loops, oddities, and granular textures. Processing stays inside a Web Worker, and the result downloads as a ZIP of WAV files.

Overview

Problem

Moving files between plugins and export dialogs slowed down the part of resampling I enjoyed. I wanted one quick place to push a source sound into new material, reproduce the result, and keep the audio on my machine.

Approach

The app provides a small set of presets, a chaos control, and output-length modes. Every render is deterministic, so the same source and settings follow the same DSP path.

Build

What I built

I wrote the TypeScript signal-processing pipeline around Float32Array buffers and moved the expensive work into a browser worker. It includes WSOLA stretching, granular synthesis, filters, tape profiles, delays, reverbs, bit reduction, loop detection, a finishing rack, WAV encoding, and ZIP assembly. I also built a render-audit workflow and browser tests for the full upload and download path.

Engineering focus

The implementation handles long-running DSP away from the UI thread, deterministic parameter mapping, deadline and NaN guards, stereo and mono input, static Next.js export, file decoding, and in-browser packaging.

Details

Built with

TypeScript, Web Audio, Web Workers

Status

live · active development

Year

2026

Next

I'll profile the slowest presets on larger inputs, expand the listening-test set, and improve the transforms based on what I use in music sessions.