← projects

CrateDigger.

A desktop metadata manager for DJs — automatic track identification, BPM / key.

open-sourcing soonmacOS & Windows2025solo project

What it is.

CrateDigger is a cross-platform desktop application (macOS & Windows) that helps DJs clean up, analyze, and organize large music libraries. It was built and shipped as a commercial freemium product, and is now being prepared for open source.

The problem.

I've been DJing and I wanted to find a way to automate the tedious prep work with organization. I decided to build this to help me but I thought if I had this issue that other DJs might have it too. We can get our tracks from dozens of sources — purchases, promos, rips, downloads. The result is a mess. Sometimes artist/title tags are missing, inconsistent formatting (“feat.” vs “ft.” vs “featuring”) and duplicate files with different names. Preparing a library by hand takes hours and has to be redone every time new music comes in. CrateDigger semi automates that prep workflow so DJs can spend their time mixing instead of tagging.

What it does.

  • Auto-tagging. identifies unknown tracks by their audio content and writes artist, title, album, year, and genre straight back to the file tags.
  • BPM detection. accurate, offline tempo analysis with precise sub-decimal BPM for tight beatgrid alignment.
  • Key detection. detects musical key and scale (Camelot / harmonic-mixing friendly) so DJs can mix in key.
  • Duplicate finder. uses audio fingerprints — not filenames — to catch duplicates even when names and metadata differ completely.
  • Batch rename. renames files from their metadata using templates like “Artist - Title.mp3,” with Clean/Explicit tagging.
  • Tag standardization. one-click normalization of inconsistent formatting (feat. vs ft. vs featuring) across an entire library.
  • Library health dashboard. an at-a-glance report of missing BPM, incomplete tags, and low-quality files, with actionable insights.
  • Audio quality scanner. surfaces low-bitrate files so DJs can replace them before they end up in a set.
  • Folder watch. monitors folders and auto-imports and analyzes new music as it arrives.

Supported formats: MP3, FLAC, M4A/AAC, WAV, AIFF, OGG.

How it works.

CrateDigger is a local-first desktop app backed by a thin, secrets-safe cloud layer. Because the heavy audio analysis runs on-device, it works offline and keeps a user's library private — the cloud is only touched for identification, auth, and billing.

 DESKTOP  (local · offline)     CLOUD  (Supabase edge)        EXTERNAL
 
 BPM · key · beatgrid    ─┐    acrcloud-identify             ACRCloud  (150M+ tracks)
 fingerprint + dedup     ─┤ →  acoustid-lookup        →    MusicBrainz  (enrich)
 tag read + write        ─┤    
 local SQLite cache      ─┘    
  • BPM detection. layers multiple engines for accuracy — librosa for baseline beat tracking, Essentia for professional-grade tempo estimation, and an optional BeatNet CRNN neural model (PyTorch) for the hardest tracks, with Demucs source separation to isolate percussion when a mix is too dense to grid reliably.
  • Key detection. Essentia with a librosa fallback, producing root note + scale.
  • Fingerprinting. done locally with Chromaprint/AcoustID, comparing acoustic fingerprints rather than filenames.
  • Track identification. auto-tagging sends a short audio sample to ACRCloud (150M+ tracks, including remixes and DJ edits) through a Supabase Edge Function — so the ACRCloud API secrets never live in the desktop binary. Recognized metadata is then enriched via MusicBrainz.
  • Local-first data & sync. every result — BPM, key, fingerprints, metadata, waveforms, cue points, loops, beatgrid tweaks, batch history — is cached in a local SQLite database so nothing is ever recomputed, and Supabase handles auth and cross-device sync of that cache.

Tech stack.

ApplicationPython · PyQt6 + Fluent Widgets (native Windows/macOS UI) · SQLite (local cache)
Audio analysislibrosa · NumPy · soundfile · Essentia · BeatNet CRNN (PyTorch) · Demucs · Chromaprint / pyacoustid · Mutagen · Pillow
Cloud & servicesSupabase (Postgres · Auth · Deno/TS Edge Functions) · ACRCloud · MusicBrainz
Build & distributionNuitka → PyInstaller → codesign + notarization (macOS) · Inno Setup (Windows) · GitHub Actions CI/CD

Engineering highlights.

  • Offline-first & privacy-respecting. all heavy audio analysis runs on-device; the cloud is only touched for identification, auth, and billing, so it works with no network connection and keeps a user's library private.
  • Secrets never ship in the binary. third-party API keys (ACRCloud, Polar) live exclusively in server-side Edge Functions, called through authenticated Supabase functions.
  • Graceful degradation. optional heavy dependencies (Essentia, PyTorch/BeatNet, Demucs) are detected at runtime and cleanly fall back — so the app still runs where they aren't available (e.g. Essentia is excluded on Intel-Mac builds under Rosetta).
  • Community caching. individual auto-tag lookups become a shared resource, cutting per-user cost and latency as the user base grows.
  • Signed, notarized, cross-platform. an automated three-stage build pipeline ships signed and notarized macOS (Apple Silicon) and Windows builds.

From product to open source and more.

CrateDigger shipped as freemium: the analysis tools (BPM, key, duplicates, health, rename, standardization) were free with a monthly auto-tag allowance, while a Pro tier unlocked unlimited auto-tagging and Folder Watch — with billing handled through Polar.sh. I'm now preparing it for open source so the tool can keep living beyond the commercial run. CrateDigger will become a suite of tools for DJs and music producers.

github — coming soonback to projects