Skip to content

Harmonic Mixing

reklawdbox scores transitions using the Camelot wheel for key compatibility, then extends it with BPM, energy, genre, brightness, and rhythm — six axes total.

All 24 musical keys mapped to a numbered wheel: 1-12 with A (minor) or B (major). Adjacent positions are harmonically compatible.

Camelotinner = A (minor)outer = B (major)1AG♯m2AE♭m3AB♭m4AFm5ACm6AGm7ADm8AAm9AEm10ABm11AF♯m12AC♯m1BB2BF♯3BD♭4BA♭5BE♭6BB♭7BF8BC9BG10BD11BA12BE
Adjacent (±1) = 0.9 Same number A↔B = 0.8 ±2 same letter = 0.45 Everything else = 0.1

Key transitions are scored 0-1 based on Camelot position:

Relationship Score Example What it sounds like
Same key 1.0 6A to 6A Perfect match
+/-1, same letter 0.9 6A to 7A Energy boost / drop
Same number, A↔B 0.8 6A to 6B Mood shift
+/-1, different letter 0.55 6A to 7B Diagonal move
+/-2, same letter 0.45 6A to 8A Extended reach
Everything else 0.1 Clash

The wheel wraps — 12A to 1A is one step, not eleven.

Key is just one of six axes. Each produces a 0-1 score, combined into a weighted average.

Axis What it measures
Key Camelot wheel distance
BPM Tempo difference between tracks
Energy Whether energy direction matches the set’s arc
Genre Same genre or related genre family
Brightness Timbral similarity (spectral centroid)
Rhythm Groove similarity (rhythm regularity)

Brightness and rhythm need Essentia. Without it, those axes are dropped and the remaining weights adjust automatically.

Different priority modes change which axes matter most:

Balanced
30%
20%
18%
17%
Harmonic
48%
18%
12%
Energy
12%
18%
42%
12%
Genre
18%
18%
12%
38%
KeyBPMEnergyGenreBrightnessRhythm

How much tempo difference is tolerable:

BPM difference Score Feel
Under 2% ~1.0 Seamless
2-4% ~0.8 Comfortable pitch adjust
4-6% ~0.5 Noticeable
6-9% ~0.3 Needs a creative transition
Over 9% Under 0.2 Jarring

When building a set, the agent shapes the energy arc across the sequence. Each position gets an energy phase, and transitions that match the expected direction score higher.

00.250.500.751.00%25%50%75%100%WarmupBuildPeakReleaseEnergySet progress
warmup_build_peak_release flat peak_only
Phase What it wants
Warmup Stable or slight rise
Build Rising energy
Peak High and stable
Release Dropping energy
  • warmup_build_peak_release (default) — the classic DJ arc
  • flat — everything at peak, for peak-time sets
  • peak_only — fast ramp, good for shorter sets or festival slots
  • custom — define the phase for each position yourself

When you ask the agent to score a single transition, it evaluates one pair across all six axes. When you ask it to build a set, it uses beam search from a seed track — exploring multiple paths in parallel and presenting the best candidates.

For the full scoring math, see the Transition Scoring reference.