
DEADCA7 Open Music Database Specification
AlphaTheta (Pioneer), Algoriddim, and Native Instruments lock up DJ music
libraries in proprietary formats like OneLibrary.
Audio tags can hold metadata such as title, artist, and BPM. A DJ library also
needs structured beat grids, cues, phrases, waveforms, playlists, and records
of where each track came from. DEADCA7 brings those relationships together in
one inspectable database format.
We therefore propose a new open format and specification for managing catalogs
of DJ music.
Version
The current schema version is 1, recorded in SQLite PRAGMA user_version. Future
stable changes will use forward migrations.
Engine
Database files use SQLite. SQLite is broadly available,
easy to inspect, and supported by most programming languages and operating
systems.
File Extension and Layout
DEADCA7 uses .cdb catalog database files. A .cdb file can represent a full
music catalog, including tracks and playlists, and track-local metadata and
binary data associated with a single audio file.
A central catalog database can describe an entire music library. A track-local
catalog database can sit next to an audio file and describe that track’s
metadata; analysis, artwork, and waveform data; and original analysis files.
For example, under the default ~/Music/DEADCA7 application home:
dbs/main.cdb
tracks/01.mp3
tracks/01.mp3.cdb
tracks/02.flac
tracks/02.flac.cdb
Data can flow up from device-compatible files, track-local catalogs, and source
catalogs into a central catalog during import. It can also flow back down from a
central catalog into track-local catalogs and device-compatible exports.
Audio bytes stay in separate files. A standalone track sidecar carries that
track’s metadata, complete analysis history, and artwork; it does not carry
the whole library’s playlists or archived source databases. Device exports
are projections and cannot preserve every provider-specific field.
Schema
Catalogs, Tracks, and Playlists
catalogs
| Field | Description |
|---|---|
created_at |
Catalog creation timestamp. |
id |
Local integer identifier; 0 is reserved for the main row. |
kind |
Catalog kind, such as main, collection, or sidecar. |
name |
Catalog name. |
revision |
Database mutation token, populated only on the main row. |
source_audio_path |
Audio path for a track-local source, when applicable. |
source_audio_sha256 |
Source audio digest, when available. |
source_uri |
Durable source identity used for resync, when applicable. |
updated_at |
Catalog update timestamp. |
uuid |
Unique catalog identifier. |
catalog_files
| Field | Description |
|---|---|
catalog_uuid |
Catalog that owns this source database snapshot. |
data |
Archived source file bytes. |
id |
Local integer file identifier. |
imported_at |
Import timestamp. |
kind |
Source file kind. |
path |
Source file path. |
sha256 |
SHA-256 of the archived bytes. |
size_bytes |
Source file size in bytes. |
These rows preserve source databases such as export.pdb, exportExt.pdb,
and exportLibrary.db. A catalog can retain multiple versions of a file;
catalog_uuid, kind, path, and sha256 identify a unique version.
tracks
| Field | Description |
|---|---|
album_id |
Album row for the track, when known. |
artist_id |
Primary artist row for the track, when known. |
artwork_revision |
Mutation token for accepted artwork changes. |
audio_revision |
Mutation token for accepted audio changes. |
bitrate |
Encoded audio bitrate reported by the source. |
color |
Track color tag. |
comment |
Freeform track comment tag. |
composer_id |
Composer artist row, when known. |
content_revision |
Mutation token for track metadata and dependent content. |
date_added |
Source date the track was added. |
disc_number |
Disc number within a multi-disc release. |
duration |
Track duration in seconds. |
file_name |
Canonical audio file basename. |
file_path |
Canonical audio path, referencing original or managed audio. |
file_size |
Audio file size in bytes. |
genre |
Track genre tag. |
isrc |
Canonical ISRC, when promoted from source metadata. |
key |
Musical key stored as a Camelot value. |
mix_name |
Mix, subtitle, or version tag. |
original_artist_id |
Original artist row, when known. |
play_count |
Source play count. |
rating |
Source rating value. |
record_label |
Track record label tag. |
release_date |
Release date tag. |
remixer_id |
Remixer artist row, when known. |
sample_depth |
Audio sample depth in bits. |
sample_rate |
Audio sample rate in hertz. |
tempo |
BPM multiplied by 100. |
title |
Track title. |
track_number |
Track number within the release. |
uuid |
Canonical track identifier and primary key. |
year |
Release year. |
The revision fields are local mutation tokens, not content hashes. Portable
sidecars clear them so a receiving catalog can establish its own revisions.
artists
| Field | Description |
|---|---|
id |
Local integer artist identifier. |
name |
Artist name. |
albums
| Field | Description |
|---|---|
artist_id |
Album artist row, when known. |
id |
Local integer album identifier. |
name |
Album name. |
artwork_files
| Field | Description |
|---|---|
data |
Embedded artwork bytes, when copied into the catalog. |
file_index |
Source artwork slot or stable ordering index for the track. |
kind |
Artwork role, such as small, large, or thumbnail. |
mime |
Artwork MIME type. |
path |
Source artwork file path. |
provider |
Import provider that produced this artwork row. |
sha256 |
SHA-256 hash of the artwork bytes, when available. |
track_uuid |
Canonical track that owns this artwork file. |
catalog_tracks
| Field | Description |
|---|---|
added_at |
Source catalog timestamp for when the track was added. |
album |
Source album name. |
album_artist |
Source album artist name. |
artist |
Source primary artist name. |
audio_fingerprint |
Optional decoded-audio fingerprint captured from the source observation. |
audio_sha256 |
Optional decoded-audio hash captured from the source observation. |
bitrate |
Source audio bitrate. |
catalog_uuid |
Catalog that observed this track. |
color |
Source color tag. |
comment |
Source comment tag. |
composer |
Source composer name. |
disc_number |
Source disc number. |
duration |
Source duration in seconds. |
external_ids |
JSON object of provider identifiers, such as content_id and master_content_id. |
file_match_key |
Five-element JSON array used for file matching, or NULL for incomplete observations. |
file_name |
Source file basename. |
file_path |
Source file path. |
file_sha256 |
Optional container file hash captured from the source observation. |
file_size |
Source file size in bytes. |
file_uri |
Source file URI as observed in the catalog. |
genre |
Source genre tag. |
isrc |
Source-observed ISRC, when available. |
key |
Source musical key normalized to Camelot notation. |
mix_name |
Source mix or version tag. |
observed_at |
Timestamp for when this catalog observation was captured. |
original_artist |
Source original artist name. |
play_count |
Source play count. |
provider |
Import provider that produced this observation. |
rating |
Source rating. |
record_label |
Source record label. |
release_date |
Source release date. |
remixer |
Source remixer name. |
sample_depth |
Source sample depth in bits. |
sample_rate |
Source sample rate in hertz. |
tempo |
Source BPM multiplied by 100. |
title |
Source track title. |
track_number |
Source track number. |
track_uuid |
Canonical track this source observation resolves to. |
uuid |
Stable catalog-track observation identifier. |
year |
Source release year. |
Several source observations can point to the same canonical track. Their
original tags, file facts, and provider identifiers remain on catalog_tracks.
catalog_playlists
| Field | Description |
|---|---|
catalog_uuid |
Catalog that owns this playlist node. |
kind |
Node type, either folder or playlist. |
name |
Playlist or folder name. |
parent_uuid |
Parent folder in the same catalog, when nested. |
position |
Sort position within the parent folder. |
uuid |
Stable playlist or folder identifier. |
catalog_playlist_tracks
| Field | Description |
|---|---|
catalog_track_uuid |
Observed catalog track included in the playlist. |
catalog_uuid |
Catalog that owns both the playlist and observed track. |
playlist_uuid |
Playlist that contains this entry. |
position |
Sort position inside the playlist. |
Analysis
analyses
| Field | Description |
|---|---|
audio_path |
Audio path associated with the analysis. |
date |
Analysis timestamp. |
id |
Local integer analysis identifier and primary key. |
provider |
Analysis provider, such as deadca7. |
selected |
0 or 1; at most one analysis per track can be selected. |
track_uuid |
Canonical track that owns this analysis. |
uuid |
Unique analysis identifier. |
version |
Provider’s analysis version, independent of the database schema version. |
Exports prefer the selected analysis, falling back to the latest matching
analysis when none is selected. Original analysis files and generated artifacts
belong in analysis_files; parsed cues, phrases, and waveforms use their own
tables.
beats
| Field | Description |
|---|---|
analysis_id |
Analysis identifier and primary key: one beat-grid row per analysis. |
beats_json |
JSON array containing the analysis’s beat tuples. |
Catalog Tables
catalogs: The reserved main row, named collections, and sources such as
Rekordbox.app, USB exports, and track-local catalogs.catalog_files: Archived source database bytes and file versions.artists: Normalized artist names referenced by canonical track metadata.albums: Normalized album names and optional album artists referenced by
canonical track metadata.tracks: Canonical track metadata shared across source catalogs and duplicate
source rows.artwork_files: Track-owned artwork payloads or file references.analyses: Analysis runs for canonical tracks. The selected row is preferred
for exports.analysis_files: Source or output files associated with an analysis.beats: One JSON beat grid per analysis.cues: Cue and loop entries for an analysis.phrases: Phrase and structure segments for an analysis.vbr_info: Variable bitrate metadata for an analysis.waveforms: Waveform payloads for an analysis.catalog_tracks: Observed source-catalog tracks or files inside a catalog,
linked to canonical tracks.catalog_playlists: Playlist and folder tree nodes for one catalog.catalog_playlist_tracks: Ordered playlist entries pointing at observed
catalog tracks.activities: Planned, applied, and undone catalog workflow operations.activity_changes: Row-level changes recorded for workflow audit and undo.
Goose also maintains goose_db_version. Managed destinations can add
dc_store, dc_files, and dc_pending for file ownership and recovery.
Those operational tables have their own format contract; see the
filesystem specification.
Relationships
activity_changes.activity_uuid->activities.uuidalbums.artist_id->artists.idanalyses.track_uuid->tracks.uuidanalysis_files.analysis_id->analyses.idartwork_files.track_uuid->tracks.uuidbeats.analysis_id->analyses.idcatalog_files.catalog_uuid->catalogs.uuidcatalog_playlist_tracks.catalog_uuid, catalog_track_uuid->
catalog_tracks.catalog_uuid, uuidcatalog_playlist_tracks.catalog_uuid, playlist_uuid->
catalog_playlists.catalog_uuid, uuidcatalog_playlists.catalog_uuid->catalogs.uuidcatalog_playlists.catalog_uuid, parent_uuid->
catalog_playlists.catalog_uuid, uuidcatalog_tracks.catalog_uuid->catalogs.uuidcatalog_tracks.track_uuid->tracks.uuidcues.analysis_id->analyses.idphrases.analysis_id->analyses.idtracks.album_id->albums.idtracks.artist_id->artists.idtracks.composer_id->artists.idtracks.original_artist_id->artists.idtracks.remixer_id->artists.idvbr_info.analysis_id->analyses.idwaveforms.analysis_id->analyses.id