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.

Camelot inner = A (minor) outer = B (major) 1A G♯m 2A E♭m 3A B♭m 4A Fm 5A Cm 6A Gm 7A Dm 8A Am 9A Em 10A Bm 11A F♯m 12A C♯m 1B B 2B F♯ 3B D♭ 4B A♭ 5B E♭ 6B B♭ 7B F 8B C 9B G 10B D 11B A 12B E
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:

RelationshipScoreExampleWhat it sounds like
Same key1.06A to 6APerfect match
+/-1, same letter0.96A to 7AEnergy boost / drop
Same number, A↔B0.86A to 6BMood shift
+/-1, different letter0.556A to 7BDiagonal move
+/-2, same letter0.456A to 8AExtended reach
Everything else0.1Clash

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.

AxisWhat it measures
KeyCamelot wheel distance
BPMTempo difference between tracks
EnergyWhether energy direction matches the set’s arc
GenreSame genre or related genre family
BrightnessTimbral similarity (spectral centroid)
RhythmGroove 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%
Key BPM Energy Genre Brightness Rhythm

How much tempo difference is tolerable:

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

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.0 0% 25% 50% 75% 100% Warmup Build Peak Release Energy Set progress
warmup_build_peak_release flat peak_only
PhaseWhat it wants
WarmupStable or slight rise
BuildRising energy
PeakHigh and stable
ReleaseDropping 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.