GrooveGrid started because no single tool did everything right.
The problem

Every piece of hardware and software in my setup did part of the job, but the workflow was scattered. Immediate sample mangling lived in one place, a visual sequencer in another, music-theory helpers somewhere else, and detailed sample editing in a separate utility. Moving an idea between them meant stopping the creative part to manage the plumbing.
Sample preparation was especially awkward. I wanted to record a long session, mark the moments worth keeping, preserve their musical context, and turn them into a reusable collection without bouncing every region one at a time or trapping those markers in a project.
A normal file browser can tell you where an audio file lives, but not which bars inside a two-hour recording are useful. I wanted a librarian built around musical material: searchable samples, portable bookmarks, collections, and reliable references even after files move.
Theory-aware and generative tools often felt bolted on. They could suggest notes or produce a pattern, but the result still had to be moved into the sequencer where the real editing happened.
I wanted one immediate grid where per-step sample choices, retriggers, chord awareness, Euclidean rhythms, and topographic pattern generation were first-class tools — visible, editable, and able to feed the same machines without an export/import detour.
The solution

GrooveGrid is the tool I built because it didn’t exist.
Per-step sample switching, slice sequencing, conditional triggers, and retriggers live in a visual grid where you can see everything at once. Retriggers work at the event level, so they apply to samples, synths, and sequenced external gear. Polyphonic voices are offsets from the root note, so moving the root keeps the chord shape intact.
A built-in sample editor where you chop recordings, bookmark regions, and export slices without leaving the app. Bookmarks travel with the audio file and live in a real relational database — not buried in a project file. Every sample is tracked by UUID and checksum, so references don’t break when you move or rename files. Locating samples is automatic — no filename guessing, no previewing candidates to figure out which one is right. The checksum match is definitive.
A library browser with tagging, full-text search, and collections. Not just a file tree.
Music theory baked into the sequencer — not an external MIDI device you plug in. Set a key, scale, chord quality, and chord degree per scene — or automate the degree per step from the emphasis track. Lock tracks to scale or chord quantization independently, so your bass holds the root while everything else follows the progression.
Euclidean generators and Atlas topographic pattern generation are first-class citizens. They generate steps directly on the grid. Stamp them into regular steps when you like what you hear.
Probability-based step triggers so the pattern evolves on every pass. Happy accidents by design.
Built-in effects and hosted VST3 effects share editable track, group, and master chains. The same project can run standalone or as a plugin in your DAW without giving up the focused groovebox workflow.
How it started
Before GrooveGrid existed, I was writing Node.js scripts to batch-export 128-sample packs — creating redundant copies of samples everywhere — and generating MIDI files to get procedural patterns into my sessions. It worked, but it was clunky and indirect. The tools I wanted didn’t exist, so I started building them.
GrooveGrid started in March 2025 as an Electron/React app. My background is in web development, so that was the fastest way to get the idea out of my head and into something I could use. It worked — until it didn’t. Audio latency, thread limitations, and the overhead of shipping a browser as a desktop app all caught up fast.
I tried Tauri next — Rust backend with a web frontend — but that had its own set of problems. So I went full native with C++ and JUCE. The UI, the audio engine, the sample editor — all rewritten. The concepts survived. The stacks didn’t.