Open Source · Experimental

Audio corpus analysis
in a terminal UI

Bounce is a cross-platform audio editor for exploring corpus analysis and resynthesis, powered by Electron and FluCoMa.

Bounce REPL bounceaudio.org
// Load a sample and analyse its onsets
const sample = sn.read("./drums/kick.wav")
const onsets = sample.onsets({ threshold: 0.3 })

// Render a waveform with slice markers
vis.waveform(sample).show()

// Run NMF decomposition and explore components
const nmf = sample.nmf({ components: 4 })
nmf.play(0)

Everything you need for
audio corpus work


🎛️

Terminal-First Interface

A full-featured REPL powered by xterm.js gives you scriptable, reproducible audio analysis workflows without leaving the keyboard.

🔬

FluCoMa Analysis

Onset detection, NMF decomposition, novelty slicing, and more — all exposed as composable REPL functions backed by the FluCoMa toolkit.

📊

Inline Visualisation

Waveforms, spectrograms, and slice markers render directly in the terminal canvas alongside your analysis output.

💾

Persistent Cache

SQLite-backed feature store means expensive analyses are computed once and retrieved instantly across sessions.

🎚️

Built-in Playback

Play full samples or individual NMF/onset components directly from the REPL using the miniaudio-backed engine.

🌍

Cross-Platform

Runs on macOS, Linux, and Windows. Pre-built native addons mean you spend time on audio, not on build systems.

Up and running in minutes


shell
# Clone with submodules
git clone --recursive https://github.com/briansorahan/bounce.git
cd bounce

# Build C++ dependencies first
npm run build:deps

# Install and rebuild native modules
npm install && npm run rebuild

# Build TypeScript and launch
npm run build:electron && npm run dev:electron

Requires Node.js v24+, a C++17 compiler, Python 3, and CMake 3.10+. See the README for platform-specific prerequisites.