Case study · chopshop

An open-source tool that turns a mess of recordings into an instrument.

chopshop takes a folder of raw field recordings, slices it into individual sounds, lets a zero-shot AI guess what each one is, puts a human in charge of the final call, and hands back a tagged library plus playable Ableton Drum Racks. It started as a way to sample the world with my two kids, an activity we call Sound Safari. Here's the whole thing.

Python · librosa · LAION-CLAP · stdlib web app · Ableton Live 11 · Git + Google Drive

01

A glorious mess in a single folder

The problem · Why I built it · Where it started

"There's nothing in a factory sample pack that sounds like your own kid knocking on a piece of driftwood. That was the whole reason to start."

I make electronic music in Ableton Live, and I wanted a library of sounds that didn't come from anywhere else. So I clipped a studio mic to an iPad, handed it to my 10-year-old, and told him to record anything that sounded interesting. His little brother, who's 7, immediately wanted in. Now I had two kids crouched over a storm drain, a screen door, a bowl of cereal, the dog, recording all of it like a couple of tiny field producers. That going-out-and-recording part is the bit we call a Sound Safari, and the kids are hooked on it.

The problem showed up about ten minutes later, when I copied the recordings off the iPad. Long takes. Forty sounds crammed into one file with random gaps. Compressed m4a junk. The classic pile of raw recordings in a single directory that every sampler knows and dreads. Chopping all of that apart by hand and naming it would eat a whole weekend, and I'd rather spend the weekend actually making music.

So I built chopshop, an open-source tool that does the tedious part. It takes the messy folder in one end and hands back a clean, categorized, Ableton-ready library out the other, with a human doing the one part that actually needs ears. It's the engine under our Sound Safari, but it's useful to anybody with a pile of recordings and a copy of Ableton, kids or no kids.

Before

A folder of long, messy recordings. Dozens of sounds buried in each file, nothing named, nothing sorted, and a full weekend of hand-chopping between me and a usable library.

After

One command slices everything, an AI proposes a category per sound, a kid keeps or fixes each one in a browser, and the result drops straight into Ableton as playable instruments.

02

Slice it, then let a model guess what it is

Onset detection · Zero-shot audio · Real-world labels

The first job is boring and mechanical: find every individual sound inside a long take. That's onset detection with librosa, finding the attack of each hit, then walking the tail until it drops into silence so a single knock doesn't drag two seconds of dead air behind it. Out comes a pile of clean little one-shots with short fades so nothing clicks.

The second job is the fun one. I wanted the tool to listen to each slice and guess what it is, and crucially, to guess in plain English about the real world, not in drum-machine terms. So it uses a zero-shot audio model, LAION-CLAP, that matches a sound against descriptions I write myself: "the sound of water splashing," "a metallic clang," "paper crinkling or tearing." No training, no labeling thousands of examples. I hand it the categories my kids actually record (water, metal, wood, glass, voice, animal, and so on) and it picks the best match per slice.

That's the right tool for sounds found in the world. A drum classifier wants to call everything a kick or a snare. CLAP will happily tell me that the thing my son recorded is closest to "a wooden knock," because I described the world in words instead of forcing it into a beat-maker's vocabulary.

2
stages: slice with librosa, then label with CLAP
20
real-world categories in the default kid vocabulary
0
training examples needed - it's zero-shot
cuda/mps/cpu
runs on whatever the machine has, a GPU just makes it faster

librosa onset detection · trailing-silence trim · LAION-CLAP zero-shot · batched inference · device auto-detect

03

The AI guesses. A 10-year-old decides.

Human-in-the-loop · Kid-friendly front end · The fun part

"Watching a 10-year-old overrule the computer because he knows that's the screen door and not 'metal' - that's the whole project, honestly."

I went back and forth on whether to just let the AI sort everything unattended. I'm glad I didn't. The model only guesses. Then a little web app opens in the browser, branded Sound Safari for the kids and built with nothing but the Python standard library so there's no install, and my 10-year-old goes through the sounds one at a time. Hit play, look at the waveform, tap the right emoji if the robot got it wrong, give it a fun name, keep it or toss it. Big buttons, spacebar to play, Enter to keep. He flies through it.

He can fix a bad cut, too. Drag across the waveform to keep just the good part, or join a slice back together with the next one if a sound got chopped in half. The decisions save themselves to disk as he goes, so he can stop any time and pick it back up later without losing his place.

This is the part I'd defend hardest. He's learning to trust his own ears over a confident machine, and the library comes out better for it, because a smaller pile of sounds he actually loved beats a huge pile of so-so ones the computer rubber-stamped. "My First Splash" is a real sound in the library now. He named it.

Before

Either I sort hundreds of clips by hand, or I trust an AI to auto-file everything and quietly accept whatever it gets wrong.

After

The AI does the tedious first pass, the kid makes the call on every sound in a browser, and the mislabels get caught by the human who can actually hear the difference.

Python http.server (zero dependencies) · waveform canvas · play / keep / recategorize / trim / merge · autosave

04

Getting it into Ableton the way an artist actually wants

Drum Racks · Open metadata · The fussy part

Getting sounds into a folder is easy. Getting them into Ableton Live 11 the way I'd actually want them took an evening I didn't expect to spend. The tool publishes a clean folder-per-category library you drop straight into Live's browser, and it bakes real metadata inside each WAV using open standards (BWF and RIFF INFO tags), so the labels travel with the sound even if you open it in Logic or Reaper. I didn't want this locked to Ableton forever.

Then it builds Drum Racks, one per category, so you drag "Water.adg" onto a track and every water sound my kids found is mapped across the pads, instantly playable. That adg format is just gzipped XML once you crack it open, which sounds simple right up until you learn Ableton stores the sample paths inside the rack. Build it on my desktop and the paths point at my C drive. Open it on a laptop and you get "media offline." Sad trombone.

So the racks now use relative paths that walk from the rack to the sample, which makes the whole library portable. Copy it, sync it, hand it to one of the boys on a different machine, and the racks still find their sounds. I'll be the first to admit I haven't yet confirmed every edge case loads perfectly in a fresh Live install, that's the next thing on the list, but the structure is right and it survives moving between computers, which was the hard part.

1
playable Drum Rack generated per category
BWF + INFO
open metadata standards embedded in every WAV
Relative
sample paths, so racks survive being copied or synced
Any DAW
the folder library works well beyond Ableton

Ableton .adg (gzipped XML) · ableton-device-creator (with a built-in fallback writer) · BWF bext + RIFF INFO tags

Behind it all

Code in Git, sounds in Drive, racks that travel

Backup · Sharing · Built to be handed around

The split that makes this work as a family project: the sounds live in a Google Drive folder, so they back up and everyone can share them without thinking about it, and the code lives in Git, because code wants version history and Drive will happily corrupt a file you saved mid-edit. One thing I learned the slightly annoying way is that you have to mark the Drive folder available offline, or Ableton tries to read zero-byte placeholder files and throws a fit. The working scratch files stay off Drive entirely so the sync client isn't fighting me while a kid is still trimming.

The whole thing is MIT licensed and documented end to end: an architecture writeup, a full command reference, a kids' guide written for the kids, and notes on the Ableton internals for anyone who wants to poke at the adg format themselves. Because somebody else out there has a pile of weird recordings and a copy of Ableton, and there's no reason for them to spend the weekend I almost spent.

Python · librosa · LAION-CLAP · soundfile · Ableton Live 11 · Git + GitHub · Google Drive · MIT licensed

Got a pile of weird recordings and a copy of Ableton?

Sound Safari is open source and free to grab. If you build something with it, especially if your kids make the sounds, I'd genuinely love to hear what a stranger's storm drain sounds like.