Skip to content

Enrichment & Analysis

Input Sources Processing Outputs Downstream Audio Files track audio on disk Track Metadata artist, title, album stratum-dsp compiled in, always available Essentia optional Python subprocess Discogs via broker API Beatport HTML/JSON extraction BPMKeyRhythm Regularity DanceabilitySpectral CentroidLoudnessOnset RateDynamic Complexity GenreStyleLabelYearCatalog # GenreSub-genreBPMKeyLabel Genre Classification classify_tracks Set Building build_set harmonic compatibility, BPM, energy, genre affinity

Look up metadata from Discogs, Beatport, MusicBrainz, and Bandcamp. Results are cached — subsequent calls return instantly unless force_refresh is set.


Look up a single track on Discogs. Returns genre, style, label, year, catalog number, and release metadata.

ParameterTypeRequiredDescription
track_idstringTrack ID — auto-fills artist/title/album from library
artiststringArtist name (required if no track_id)
titlestringTrack title (required if no track_id)
albumstringAlbum/release title for more accurate matching
force_refreshbooleanBypass cache (default: false)

Look up a single track on Beatport. Returns genre, sub-genre, BPM, key, and label.

ParameterTypeRequiredDescription
track_idstringTrack ID — auto-fills artist/title from library
artiststringArtist name (required if no track_id)
titlestringTrack title (required if no track_id)
force_refreshbooleanBypass cache (default: false)

Look up a track on MusicBrainz for year/label data. Returns year from first-release-date and label from the best matching release. Results are cached.

ParameterTypeRequiredDescription
track_idstringTrack ID — auto-fills artist/title from library
artiststringArtist name (required if no track_id)
titlestringTrack title (required if no track_id)
force_refreshbooleanBypass cache (default: false)

Look up a track on Bandcamp for year/label/tags data. Searches Bandcamp, then fetches the detail page for structured metadata. Particularly effective for underground/independent electronic music. Results are cached.

ParameterTypeRequiredDescription
track_idstringTrack ID — auto-fills artist/title from library
artiststringArtist name (required if no track_id)
titlestringTrack title (required if no track_id)
force_refreshbooleanBypass cache (default: false)

Batch enrich tracks via Discogs/Beatport/Bandcamp. Accepts shared search filters to scope which tracks to enrich.

ParameterTypeRequiredDescription
track_idsstring[]Specific track IDs (highest priority selector)
playlist_idstringEnrich tracks in this playlist
max_tracksintegerMax tracks to enrich (default: 50)
offsetintegerSkip first N tracks in result set
providersstring[]Providers: "discogs", "beatport", "bandcamp" (default: ["discogs"])
skip_cachedbooleanSkip already-cached tracks (default: true)
force_refreshbooleanBypass cache entirely (default: false)
concurrencyintegerMax concurrent enrichments (default: 4, max: 8)

stratum-dsp (compiled in): BPM, key, rhythm regularity. Essentia (optional): danceability, spectral centroid, loudness, onset rate, dynamic complexity. Results cached per track per backend.


Analyze one track. Returns BPM, key, and (with Essentia) energy descriptors.

ParameterTypeRequiredDescription
track_idstringyesTrack ID
skip_cachedbooleanSkip if already cached (default: true)

Cache is keyed by file path and analysis schema version. A schema version bump invalidates stale entries.


Batch audio analysis. Accepts shared search filters to scope which tracks to analyze.

ParameterTypeRequiredDescription
track_idsstring[]Specific track IDs (highest priority selector)
playlist_idstringAnalyze tracks in this playlist
max_tracksintegerMax tracks to analyze (default: 20)
offsetintegerSkip first N tracks in result set
skip_cachedbooleanSkip already-cached tracks (default: true)
concurrencyintegerMax concurrent analyses (default: cpus - 2, min: 1, max: 4)

setup_essentia no params

Section titled “setup_essentia ”

Install or validate Essentia in a local Python venv. Creates a venv at ~/.local/share/reklawdbox/essentia-venv/ if needed. Activation takes effect immediately — no server restart needed.