Open Crate Codes
1.0.0 draft

Open Crate Codes spec

How DJ software and scripts read and write Open Crate Codes tags. The genre list itself is in occ.toml (and occ.json); this page is the rules around it.

Must, should and may are used in the sense of RFC 2119: must is a requirement, should is a strong recommendation with room for good reasons, may is optional.

1. Scope

An Open Crate Codes tag records two things about a track: its genre, optionally narrowed to a style, and its energy within that genre. Optional labels record yes-or-no facts such as "has a vocal" or "from the 1990s".

2. Fields

FieldHoldsStatus
AlbumThe tag, e.g. 09 DNB.LIQ E4 Drum & Bass (Liquid)Required
GenreThe genre's name without the style, e.g. Drum & BassShould
CommentLabels as hashtags, e.g. #vocal #1990s, plus any other textMay
Track colourThe energy colour, in apps that store oneMay

Album is used because every DJ app reads, shows, sorts and filters it, and it travels with the file and with USB exports. That keeps Genre clean for browsing by genre on players.

The cost: Album usually holds the release title. Writers should keep the original value, in their own database or by putting it back when the user clears the tag.

3. The Album tag

tag     = family " " code [ "." style ] [ " E" level ] " " name
family  = 2 digits         ; 01–89 public, 90–99 private
code    = 3 letters A–Z    ; private: X + 1–3 of A–Z, 0–9
style   = 3 letters A–Z    ; private: as for codes
level   = 1 digit          ; 1–5; unrated has no energy part
name    = display text     ; genre name, then (style name)

As a regular expression:

^(\d{2}) ([A-Z0-9]{2,4})(?:\.([A-Z0-9]{2,4}))?(?: E(\d))? (.+)$
TagMeans
09 DNB.LIQ E4 Drum & Bass (Liquid)Drum & Bass, Liquid style, energy 4
05 THS E3 Tech HouseTech House, no style, energy 3
07 TPK.PST Peak Time / Driving Techno (Psy-Techno)Psy-Techno, unrated
91 XAB E2 Sunday EditsA private genre in a private family

4. Reading

5. Writing

6. Codes and families

7. Energy

Energy ranks a track within its own genre. E5 is the most intense end of that genre, not an absolute level: a Deep House E5 is calmer than a Hard Techno E1, and both are right.

LevelNameMeaningColour
E1OpenerThe quietest end of its genre: sparse, long intro, little tension.#1E2BEA Blue
E2Warm-upSteady and rolling, below the genre's usual drive.#6EF0E4 Aqua
E3WorkhorseThe genre's normal full groove.#67F04A Green
E4LiftAbove the genre's norm: a bigger drop, riff, vocal or build.#F5A63A Orange
E5Peak weaponThe genre's most intense: anthem hooks, the biggest drops.#E8382C Red

8. Labels

Labels go in the Comment field as hashtags. Tags are lowercase. A track has at most one label from each group.

GroupLabelsMeaning
Vocals#vocal #inst #acapellaA vocal carries it; no lead vocal; vocal only
None#tool #editMade for mixing (loops, drums, intros, FX); a DJ edit, bootleg or rework
Lyrics#clean #explicitRadio-safe; has explicit lyrics
Decade#1920s to #2020sWhen the song is from: the original, not the remix

An edit keeps the genre of the music it edits, and adds #edit. An acapella keeps its genre, and adds #acapella. Neither is a genre of its own.

9. Searching

Smart playlists and searches should include the family number with the code. On its own, a code also finds untagged tracks whose release title contains it, like MIN in "Mind".

To findAlbum contains
A genre, with or without a style09 DNB
One style09 DNB.LIQ
A genre at one energy09 DNB and E5, both required

Energy on its own (E5) is only safe combined with a genre condition. Codes are capitals, so it doesn't matter whether an app's search ignores case.

10. Working with other tools

Open Crate Codes uses Album, Genre and hashtags in Comment. Other tools write to some of the same fields, so a few settings matter.

Mixed In Key

Mixed In Key measures key, BPM and an energy level from 1 to 10 across all music. That's a different question from this standard's energy, which is judged within a genre. Keep both, and must not convert one into the other.

Auto-taggers

Rekordbox

Library managers

Tools that sync a library between DJ apps, such as Lexicon, carry Album over with the rest of a track's details, so tags survive a move from one app to another. Check that any metadata clean-up feature leaves Album alone.

11. Versions

The data files carry a version, numbered as semantic versions. Every change is listed in CHANGELOG.md.

ChangeExamples
Patch (1.0.x)Definitions, reference tracks, crosswalk, BPM ranges
Minor (1.x.0)New genres, styles or labels; renamed genres or styles; deprecations
Major (x.0.0)Removing a code, changing what a code means, moving a genre to another family, renumbering a family, changing the tag format

Tags written under any 1.x version read correctly under every later 1.x version.

12. Checklist for app makers

Reading

Writing

Showing

13. License

The data files (occ.toml, occ.json) are public domain under CC0 1.0. Use the codes in any product, free or paid, without asking. This spec and the site's text are CC BY 4.0.