2,500 tracks, 250 mixes, 166 mood tags: we built a free focus-music library and kept the receipts
Focus music is a solved problem if you like handing your attention to an algorithm that also sells ads. We wanted the opposite: a library where every track exists because someone wrote a recipe for it, and the recipe is kept. The Dracon music library is 2,500 tracks organized into 250 curated collections we call cooks — and because the whole thing is a data file, we can tell you exactly what is in it. No hidden catalog, no rented mood playlists, no eight-hour piano loop pretending to be new every night. Each cook is 10 tracks at a specific headspace, and the 2,500-track count is 250 × 10, not an estimate.
Update (2026-08-23): this article was first published 2026-07-31 against 100 cooks and 1,000 tracks with 82 mood tags; cookbook.json now holds 250 cooks and 2,500 tracks with 166 distinct mood tags (updatedAt 2026-08-23T17:45:24.952Z). Headline numbers below reflect the current 250; original figures are noted inline where the catalog has moved so the early analysis remains reproducible.
What's actually in the library
| Metric | Value | What it means |
|---|---|---|
| Tracks | 2,500 | 250 cooks × 10 tracks, every audio key exists under audio/{cookId}/ |
| Cooks (curated collections) | 250 | each with a written prompt, genre, BPM, key, structure, and mood tags |
| Distinct mood tags | 166 | from ambient and dreamy to intense, mechanical, and nocturnal — up from 82 at 100 cooks |
| Instrumental cooks | 89 (35.6%) | no vocal at all; the rest split into gibberish-anime (63), English (51), English-lyrics (33), Japanese (8) |
| Distinct genre labels | 230 | largest cluster is futurecore at 5 cooks; almost one genre per cook by design |
| Most common key | F minor (30 cooks) | followed by E minor (26), A minor (24), D minor (22) — no one planned it |
| Largest BPM band | 151-240 BPM (63 cooks) | the fast end now outweighs the slow; the focus shelf lives at 40-100 BPM |
The cooks have names like Late Night Lo-Fi, Deep Focus Pulse, Cloud Garden, Neon Drive, Iron Cathedral, Stratosphere, Vesper Hall, and Rain Diary — each one a 10-track run at a specific headspace. About one third of the library is fully instrumental, which is the third most people leave on while working, and another quarter speaks in gibberish-anime or invented phonetics so you get a voice with no words to follow. The slowest cook is Held Note, For Hours at no tempo at all, then Stratosphere at 40 BPM; the fastest push past 200. The library view shows all 250 at once with cover art, BPM, key, and mood chips, and the cooks index is the denser, filter-friendly version of the same data if you want to jump by tempo or tag rather than cover.
The receipts: every track keeps its recipe
Each of the 2,500 tracks was generated with its full parameters stored. A real example from the library — the opening track of Late Night Lo-Fi: 'Lo-fi hip hop instrumental, mellow late-night study vibe, dusty vinyl samples, warm rhodes piano chords, muted thumb bass, soft brushed drum loops with vinyl crackle, tape saturation, jazzy chords moving slowly, intimate headphone mix' at 75 BPM in F minor, structure loop-2bars-loop-2bars, instrumental true. That is not marketing copy; it is the actual generation record written to cookbook.json as generationParams. It means the library is auditable and reproducible — when we say 'dark ambient for deep work', we can show you the recipes behind that claim, and you can read the prompt that made the snare sit behind the rhodes instead of on top of it.
We use the recipe in three places. First, before any audio is generated, a human writes the prompt, genre, mood array, instrument list, tempo label, BPM, key, and structure for the cook. The 10 track titles are drafted against that recipe so the titles match the headspace, not the other way around. Second, during generation, web/music/scripts/build-cookbook.mjs calls the music model with those fields as arguments — --prompt, --genre, --mood, --instruments, --bpm, --key, --structure, --instrumental — and stores the returned audioKey and coverKey alongside the recipe that produced them. Third, after generation, the player reads the same JSON: the cook page at music/cook/{slug} renders the prompt, BPM, key, mood chips, and the 10 tracks from the same object the build script wrote. There is no second database, no CMS copy, no drift. If a cook says 75 BPM in F minor, the JSON says so and the player shows it.
The 10-track rule, and why it matters
Every cook holds exactly 10 tracks. Not 9, not 14: at 100 cooks the minimum, maximum, and average were all 10, and at 250 they still are. We enforce this in build-cookbook.mjs — a cook is only considered complete when its 10 audio keys exist under web/music/out/audio/{cookId}/ and its 10 song entries are written to the songs array. The player expects 10. The cover art expects 10. The search index expects 10. That constraint is why we can say 2,500 tracks without hand-waving: count the cooks (250), multiply by 10, and you match the 2,500 song entries in cookbook.json. It also makes listening predictable: a cook is 35 to 55 minutes depending on track lengths (typically 90-130 seconds per track), which is a work block, a commute, or a wind-down, and you learn to trust that a cook will not end after three tracks at the point you were settling in.
The other half of the rule is genre spread. At 250 cooks there are 230 distinct genre labels — almost one per cook — with the biggest cluster at 5 (futurecore) and most clusters at 1 or 2. Dark ambient shows up 3 times (including Iron Cathedral and Catacombs Lit Only by Phone), lo-fi hip hop twice, synthwave twice, metalcore twice, and so on. We keep it that way on purpose. When a new cook is commissioned we check the genre frequency table and brief against uncovered space, so the library grows outward rather than repeating its own center. That is why even cooks that share a tempo can feel completely different: Deep Focus Pulse (minimal ambient at 60 BPM, C minor) and Vesper Hall (chamber classical at 60 BPM, D minor) sit at the same BPM and have no genre overlap, so one is a pulse that refuses to develop and the other is a cello that cannot help but develop.
How curation actually works
A cook starts as a one-paragraph brief. Example brief for Stratosphere: 'Space ambient, long evolving synthesizer pads, deep sub-bass rumbles, granular texture from field recordings, no rhythm, 40 BPM, E minor, sacred + dreamy + ambient.' The brief is turned into a recipe record with 8-12 instrument tags, a tempo label (slow, very slow, moderate, fast, etc.), and a structure tag like loop-2bars-loop-2bars or intro-verse-chorus. The writer then drafts 10 titles and a one-sentence description for the cook ('The view from 80km up') before any audio exists, so the cook has an identity to live up to. Only then does the generation loop run, one track at a time, with the same prompt and genre plus a title-specific variation, and the result is auditioned. If a track leans too busy, the prompt is narrowed and it is regenerated; the final audioKey overwrites the draft. The cover prompt is written in parallel — a single glowing amber candle in a black void for Late Night Lo-Fi, an empty concert hall at dusk for Vesper Hall — and generated as a 1:1 square, scored, and kept as coverKey.
That process is slow, which is why the library took months to reach 250 and why we do not add cooks faster than we can audition them. The alternative — generating 10,000 tracks against random prompts and clustering afterward — would be cheaper and would produce a larger catalog faster, but it would not produce a library you can reason about. Our bet is that a listener who can read the recipe and decide 'this 40 BPM E-minor space ambient with no rhythm is exactly what my evening needs' will keep listening longer than a listener who is told 'we think you will like this' by a recommender. The numbers suggest that bet is paying: the slow end (40-100 BPM, instrumental) has grown from 23 cooks at 100 to 31 cooks at 250 because listeners kept reaching for it, so we kept commissioning there even as the median tempo rose to 130.
How to use it
Open the player, pick a cook that matches the headspace you need, and press play. No account, no ads, no algorithm deciding you have had enough focus for one day. For work, start with the three cooks that actually carry the focus mood — Late Night Lo-Fi for a warm room, Deep Focus Pulse for a clocklike 60 BPM pulse, Pixel Cathedral if you focus better with a little joy at 132 BPM — or filter the library view for instrumental and BPM at or under 100 (31 cooks) and try Stratosphere at 40 BPM, Iron Cathedral at 50, or Rain Diary at 70. For wind-down, the same slow shelf is the sleep shelf we use ourselves; see our sleep picks for seven honestly described candidates from that shelf. The cooks index lets you jump straight to any of the 250 by slug, and every cook page keeps its recipe on file so you can decide with your eyes before you listen with your ears. It is free because it is ours: the marginal cost of you listening to a track we already generated is zero, and charging for zero felt silly.