Skip to content

Pool Discovery

Pool discovery finds groups of tracks that all work well together — tracks you can throw into a crate and improvise from, knowing any transition within the pool will sound good.

For the practical workflow, see Pool Building. This page explains the scoring model underneath.

A pool is an unordered set — pick any track next. A sequence (from Set Building) is a fixed order. Most DJs prep pools and read the room live.

Pool scoring asks “do these tracks belong in the same crate?” — not “should B follow A?”

  • score(A,B) always equals score(B,A)
  • No energy phases, genre streaks, or BPM drift penalties
  • Seven axes: BPM, energy, key, genre, timbral, brightness, rhythm
0.920.850.880.830.910.860.820.680.550.420.380.350.44ATrack ABTrack BCTrack CDTrack DETrack EFTrack F (weak)
High (≥0.8) Moderate (0.5–0.8) Low (<0.5) Weak member

Always available:

Axis What it measures
BPM How close the tempos are
Energy How similar the energy levels are
Key Harmonic compatibility (Camelot distance with detuning)
Genre Same genre (1.0), same family (0.7), or different (0.3)

With Essentia:

Axis What it measures
Timbral Sonic texture similarity — the discovery axis
Brightness Spectral centroid similarity
Rhythm Groove regularity similarity

Tracks without Essentia data are scored on the first four axes only, with weights adjusted automatically.

This is the discovery axis — “sounds like it belongs.” It compares tracks using a 34-dimensional audio fingerprint built from MFCCs, spectral contrast, brightness variation, and dissonance. Each dimension is normalized across your library so no single feature dominates.

This is what lets pool discovery find cross-genre connections: a deep house track and a downtempo track that happen to share a similar sonic texture.

PoolBalanced
25%
20%
18%
12%
10%
PoolTimbral
20%
15%
35%
10%
TransitionBalanced
20%
18%
30%
17%
BPMEnergyTimbralKeyGenreBrightnessRhythm
Axis Balanced Timbral
BPM 0.25 0.20
Energy 0.20 0.15
Timbral 0.18 0.35
Key 0.12 0.10
Genre 0.10 0.05
Brightness 0.08 0.08
Rhythm 0.07 0.07

Balanced (default) — BPM and energy lead. Timbral adds a discovery dimension without dominating.

Timbral — upweights sonic similarity for cross-genre discovery. “What in my library sounds like these, regardless of genre tags?”

With master tempo off, pitching a track to match BPM shifts its key — just like vinyl. A 3% BPM change shifts the key by about half a semitone.

Pool tools account for this using a reference BPM: all tracks’ effective keys are computed at that reference BPM. The agent can sweep reference BPMs to find the one that maximizes key compatibility across the pool.

Key compatibility degrades smoothly with pitch shift. Instead of hard Camelot boundaries, the score blends linearly between positions as detuning increases.

Sub-JNDNoticeableAmbiguous0.00.20.40.60.81.0010203040500.91 @ 10c0.78 @ 25c0.55 @ 50cKey scoreDetuning (cents)
Same-key example: bilinear interpolation blends between the native key (1.0) and the +1 semitone transposition (0.1 for a 7-position Camelot jump). Actual scores vary by starting key relationship.

When adding tracks to a pool, the agent uses iterative greedy expansion:

  1. Score all candidates against the current pool. Pick the best one.
  2. Add it to the pool. Re-score remaining candidates against the expanded pool.
  3. Repeat until done or quality drops below threshold.

Each addition is guaranteed compatible with the full pool at the time it’s added — including previous additions. This prevents the problem where multiple additions are each compatible with the seeds but not with each other.

Step 1: Score candidates against seed poolPoolS1S2S3C10.78← bestC20.62C30.33threshold 0.4Step 2: Add best, re-score against expanded poolPoolS1S2S3C1C20.71← bestC30.31Step 3: Add best, remaining below threshold — stopPoolS1S2S3C1C2C30.28
Each addition is scored against the full pool including prior additions. Candidates below the quality threshold are rejected.

Pools become chapters when you validate and lock them. A chapter can be:

  • Sequenced — fixed track order (you’ve tested the transitions)
  • Unordered — you trust the compatibility and will improvise order live

Bridges connect chapters — tracks compatible with both the end of one chapter and the start of the next. See Chapter Set Planning.