Pipeline V5.2 — DSP + multi-pillar scoring + AI narration. Updated May 2026.
1. The pipeline at a glance
Every mix goes through a layered pipeline. Each layer produces measurable signals consumed by the next one. The final score is computed from objective measurements — not from a language model's opinion.
Audio file
→ Decoding (Web Audio API / FFmpeg)
→ Low-level DSP features (FFT, RMS, autocorrelation, chroma)
→ Event detection (transitions, drops, breaks, phrases)
→ Multi-pillar scoring (6 dimensions, 0–100)
→ Calibration & Bayesian fusion (technique 70% + perception 30%)
→ DJ DNA fingerprint matching (8-D cosine similarity)
→ LLM narration (coaching, NOT scoring)
→ Persisted report (DB is the source of truth)
2. Low-level audio features (pure DSP)
BPM detection — autocorrelation on the 60–180 BPM band, sliding window of 8 s, multi-peak picking with a "DJ sweet-spot" weighting around 120–135 BPM. Disambiguates double/half-time errors common in trance and techno.
Energy — RMS over 50 ms frames + short-term loudness in LUFS (ITU-R BS.1770). Used both for the energy curve and for transition handoff scoring.
Spectrum — 2048-pt FFT, log-spaced bands (sub / bass / low-mid / mid / high-mid / high) to evaluate EQ balance, mastering quality and EQ-swap cleanliness during transitions.
On top of the raw features, the engine localizes the structural events that define a DJ set:
Transitions — spectrum derivative + cross-correlation between pre/post windows. Each transition is scored on beat alignment, EQ swap quality, duration, and harmonic compatibility.
Phrases — bar-aligned segmentation via novelty curve, used for the phrase_alignment sub-score.
Peaks & breaks — variance of energy combined with spectral flatness; feeds the macro-arc analysis.
Spoken intros — DJ intro / host / MC opening detection, so the pipeline doesn't penalize a 30 s a-cappella as a flat warm-up.
4. The 6 scoring pillars
Every measurement is rolled up into 6 normalized pillars (0–100). The weight of each sub-score depends on the detected set type (warm-up, peak time, party peak, closing) and the duration bucket (micro / short / mid / long / extended).
Technique — beat alignment, tempo stability, EQ control, transition cleanliness.
Flow — phrase alignment, energy handoff, tension/release, continuity.
Bayesian confidence — each module reports its own confidence; low-confidence pillars are down-weighted in the fusion.
Integrity caps — bad mastering caps Selection; missing audio data on a transition scores 0 (no synthetic fallback).
Stochastic variance — re-analyzing the same mix yields a 5–7 point variance. This is expected behavior, not a bug: it reflects modeling uncertainty honestly.
6. DJ DNA fingerprint
Beyond the score, every mix gets an 8-dimensional fingerprint vector:
Energy curve shape
Transition density
BPM range
Harmonic complexity
Dynamic range
Surprise rate
Restraint
Peak strategy
Cosine similarity is computed against a reference dataset of professional DJs to surface the closest signature matches.
7. Where AI actually intervenes
The Large Language Model (Gemini 2.5 / GPT-5) never assigns a score. It receives the already-computed numbers and is responsible only for:
Narrating what happened in the mix in plain language
Generating the AI Coach explanations and drills
Localizing feedback in EN / FR / ES / IT / DE
This separation guarantees that two listens of the same report return consistent numerical results — the database overall_score is the single source of truth.