Six web apps for guitarists who like to practice slowly, listen carefully, and own their tools.
I'm a guitar player. I built these because the off-the-shelf options either kept changing their pricing model, lost my data when the company pivoted, or just weren't quite right for how I actually practice. Everything here is local-first, iPad-ready, free, and yours to fork.
Together they cover a real practice loop: find something to learn → slow it down → train your ears → stay in time → dial in your sound → take it to a gig.
Find a song Pull a lick out
or a YouTube clip of any video
│ │
▼ ▼
Shreddy LickBank ───┐
practice the song drill the riff │
│ │ │
▼ ▼ ▼
Metronome ◄──── ChordCraft ──── SoundPath
stay in time train your ear shape your tone
│
▼
Setlists
build the gig, then
level it end to end
Six apps, one monorepo, one URL behind a local proxy. Use the ones you want.
Drop in any MP3 or paste a YouTube URL. Shreddy auto-detects sections (Intro, Verse, Chorus, Solo, etc.), BPM, and key. Then you slow it down without changing pitch and loop the hard four bars until your fingers know it.
Supported features
Library
- Upload MP3 / MP4 or import direct from any YouTube URL (yt-dlp under the hood)
- Auto-detected metadata: BPM, musical key, artist, album, genre, year
- Auto-detected song structure (Intro / Verse / Chorus / Bridge / Solo / Outro) via local SongFormer model — no cloud round-trip, ~30s per song
- Folders to group songs, pin favourites, search and sort by title / artist / date
Practice player
- Section timeline color-coded by detected sections — tap to loop, shift-tap to chain multiple sections
- Tempo control 0.1× → 1.2× without affecting pitch (ultra-slow 0.1×–0.4× via a server-side ffmpeg stretch, since iPad Safari clamps
playbackRateat 0.5×) - Pitch shifter ±12 semitones without affecting tempo (server-side ffmpeg, cached per song/pitch)
- Stem separation (Demucs) with a per-stem mixer — isolate or mute vocals / drums / bass / other
- A-B loop with custom markers anywhere in the song
- Deep-practice modes: Silent/mental-rehearsal toggle, rotating cue prompts, and a dual-task Distraction overlay
- Bar count per section, time signature display (4/4, 3/4, 6/8), section CSV export
- Share a clip of any section as a downloadable audio file
- Practice notes per song
- Built-in metronome synced to detected BPM
- Remembers position, tempo, pitch, selected section across reloads
- Optimized for iPad Safari — full-network mode (
--hostname 0.0.0.0) for couch practice
Stem mixer — isolate or mute vocals / drums / bass / other:
Deep practice — a dual-task Distraction overlay layers a read-aloud prompt over the passage:
Practice stats
- Today / week / streak / all-time practice time
- 7-day bar chart
- Top 5 most-practiced songs this week
- Per-section logs (loop counts + time spent)
You hear a great phrase in a YouTube cover or lesson and you know you'll forget it by tomorrow. LickBank fixes that. Paste a YouTube URL, set in/out points, save the clip with notes, organize by source and folder.
Supported features
Library
- Import any YouTube video as a source — automatic title, duration, channel
- Two views: all individual licks (grid of clip thumbnails) or grouped by source video
- Custom folders + drag-to-organize
- Search across lick names, source titles, channels
- Per-folder lick counts
Source detail + clipping
- Side-by-side YouTube embed + waveform timeline
- Set start / end via
Set to playheador arrow nudges (±1s) - Drag existing lick handles directly on the waveform to refine boundaries
- Lick metadata: name, notes, position relative to source
- Save and replay any clipped lick — instantly jumps to its position in the source
- iPad-friendly: source + waveform render side-by-side, sticky left column survives scroll
Pick a key. Pick a difficulty. Hit play. Name what you hear before the reveal. Sounds like a song, not piano flashcards — drums and bass are mixed in, the chords are voiced for guitar.
Supported features
Practice mode
- 20+ built-in progressions across Blues, Country, Folk, Jazz, Pop, Rock
- Genre filters + difficulty tags (beginner / intermediate)
- Pick any of the 12 keys
- Three chord vocabularies: Basic triads, 7ths, Extended
- BPM control 40 → 240
- Independent volume sliders for Chords, Bass, Drums
- Bass and Drums toggle on/off independently
- Guitar chord diagrams for every chord in the active progression
- Shuffle to randomize within your selected filters
Ear training
- Two modes: Progression Recognition + Interval Training
- Easy / Medium / Hard difficulty (2-3 chord → full diatonic → extended)
- Listen-and-identify with multiple-choice answers
- Score tracker
Web-Audio scheduled (not setInterval), so it stays in time even on iPad Safari, which is famously terrible at audio timing.
Supported features
- Big BPM readout, slider from 40 → 320 BPM
- Tap-tempo button
- Time signatures: 4/4, 3/4, 6/8
- Visual beat indicator dots, synced to playback
- Focus timer: Off / 1m / 2m / 5m / 10m / custom min:sec
- Volume control
- Dark / light mode toggle
- Web Audio scheduling — accurate even when the tab loses focus
For anyone running a Line 6 Helix LT. Two patches that look identical on paper can sit 30 dB apart in the room, because a modeller's loudness depends on the whole non-linear chain and its spectrum — you cannot read it off the preset. So SoundPath doesn't try. You play each snapshot once, it measures integrated loudness (ITU-R BS.1770) in the browser, and writes the correction to the path output block.
Supported features
- Level a whole gig. Record every snapshot in a setlist and ship one
.hlswhere every song sits at the same target. - Level one preset on its own. Same maths, one patch — for something from HelAIx or a generation, or a song that changed after the gig was recorded. Its readings can be handed back to the setlist.
- Every reading carries the level it was taken through, so re-recording one changed song is safe and the other twenty stay correct.
- Confirmed versions. A pass is frozen with its gains and stays rebuildable, so the file you took to a gig doesn't quietly change meaning next time you record.
- Role offsets — clean / rhythm / chorus / solo sit at chosen distances from one target, and a snapshot the output block can't reach is flagged rather than silently clamped.
- Live capture off the Helix's USB tap, or a
.wavper preset. Clipped takes are refused: a clipped chord measures quieter than it is, so the plan would push it further into the ceiling.
Assemble a setlist from Apple Music or a pasted list, match each song to a Helix patch and a practice video, and push the lot to SoundPath for levelling. Snapshot counts come back from SoundPath rather than being counted here, so the number next to a song is the number you actually have to record.
Supported features
- Import a gig from an Apple Music playlist or plain text; reorder by dragging (pointer events, so it works on the iPad)
- Match each song to a Helix preset from ToneCloud, a pasted link, or an upload
- Per-song links into Shreddy and LickBank for practice
- Edit in SoundPath hands the whole gig over; a single changed song can be opened there on its own
You're not meant to use all six at once. The point is they share enough scaffolding that a session flows naturally:
- Learning a new song? Shreddy slows it down, ChordCraft trains the ear for the progression, Metronome holds the click.
- Stuck on a riff? LickBank clips it from the original, Shreddy lets you slow-loop it inside its parent song.
- Tone not right? SoundPath dials it in for Helix users; Shreddy stays your practice surface.
- Playing out? Setlists builds the gig and hands it to SoundPath, which levels every song against one target so nothing jumps between songs.
Same look-and-feel across all of them. One proxy so a single URL on your LAN reaches every app from any device. Shared utilities (YouTube import, ffmpeg pitch, practice stats) so behavior is consistent.
Install once at the root:
npm install~/claude/run-all.sh hub # all 6 apps + the reverse proxy → http://localhost:8080
~/claude/run-all.sh stop # stop everythingThen open http://localhost:8080/ — the launcher landing, with every app at
/<slug> (/shreddy, /lickbank, …). Use this origin for normal use: the in-app
menu (the "All apps" launcher and app-to-app switching) links to bare paths like
/lickbank, so it only resolves on the single proxy origin (8080). See
proxy/README.md.
npm run dev:shreddy # http://localhost:3000/shreddy (backend only)
npm run dev:lickbank # http://localhost:3001/lickbank
npm run dev:chordcraft # http://localhost:3002/chordcraft
npm run dev:metronome # http://localhost:3003/metronome
npm run dev:soundpath # http://localhost:3004/soundpath
npm run dev:setlists # http://localhost:3006/setlistsThese run one app on its own port for isolated work. Each is mounted at /<slug> via
basePath, so cross-app links and the "All apps" launcher 404 on these direct ports —
they only work through the proxy on 8080. (run-all.sh also starts HelAIx on :3005 →
/helaix, which the dev:* scripts don't cover.)
If you want them reachable off your LAN — e.g. an iPad over cellular — point
ngrok at the proxy: ngrok http 8080.
| Package | Purpose |
|---|---|
packages/shared |
YouTube import, ffmpeg pitch, practice stats, basepath shim — shared by Shreddy + LickBank |
packages/ui |
Small set of shared components |
packages/gain-estimator |
Helix preset loudness math, alignment, apply pipeline — used by SoundPath. Block catalog vendored from HelAIx (MIT). |
packages/helix-builder |
Optional Python build tooling for regenerating preset skeletons. Not required at runtime. Depends on phelix (GPL v3) which is not bundled — see its README. |
- Next.js 16, React 19, TypeScript, Tailwind CSS v4
- SQLite via Prisma (Shreddy + LickBank)
- Python (librosa + SongFormer) for Shreddy's section detection — local, free, ~30 s/song
- ffmpeg for audio normalization, pitch shifting, slicing
- yt-dlp for YouTube ingestion
- Claude / Gemini / Ollama for the optional LLM flows in Shreddy
MIT. Take what you want.
I'm a guitar player who builds web apps. I started writing one for my own practice (Shreddy), then needed a place to clip licks (LickBank), then ear training (ChordCraft), then a metronome that didn't drift on iPad, then a way to wrangle my Helix LT presets (SoundPath), then somewhere to assemble a gig out of all of it (Setlists). Now they share enough scaffolding that they belong in one repo.
If any of this is useful to you, take it. Issues + PRs welcome but I run this on personal time, so responsiveness varies. Known gaps and forward-looking items live in OPEN.md.










