Skip to content

Repository files navigation

music-apps

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.


The apps

Shreddy — practice the song you can't quite play yet

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.

Shreddy library

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

Shreddy practice

  • 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 playbackRate at 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:

Shreddy stem mixer

Deep practice — a dual-task Distraction overlay layers a read-aloud prompt over the passage:

Shreddy distraction overlay

Practice stats

Shreddy 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)

→ Shreddy README


LickBank — your personal lick library, sourced from YouTube

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.

LickBank library

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

LickBank — clip a lick from a video

  • Side-by-side YouTube embed + waveform timeline
  • Set start / end via Set to playhead or 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

→ LickBank README


ChordCraft — train your ear on real progressions

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.

ChordCraft practice

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

ChordCraft 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

→ ChordCraft README


Metronome — the clean one that doesn't drift on iPad

Web-Audio scheduled (not setInterval), so it stays in time even on iPad Safari, which is famously terrible at audio timing.

Metronome

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

→ Metronome README


SoundPath — level Helix presets from real recordings

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.

SoundPath

Supported features

  • Level a whole gig. Record every snapshot in a setlist and ship one .hls where 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 .wav per preset. Clipped takes are refused: a clipped chord measures quieter than it is, so the plan would push it further into the ceiling.

→ SoundPath README


Setlists — build a gig, then hand it to SoundPath

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

How they complement each other

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.


Running it

Install once at the root:

npm install

Recommended — the whole thing behind one URL

~/claude/run-all.sh hub    # all 6 apps + the reverse proxy → http://localhost:8080
~/claude/run-all.sh stop   # stop everything

Then 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.

Single-app dev (backend only)

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/setlists

These 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.


Packages

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.

Stack

  • 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

License

MIT. Take what you want.

Why this repo exists

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.

About

Guitar-practice web app monorepo: Shreddy, LickBank, ChordCraft, Metronome, SoundPath — Next.js 16 / React 19 / Tailwind v4

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages