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.
// 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
# 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.