Dev Log
Algorithm Music
AI-Driven Mastering — Technical Log
Engineering diary for aimastering.dev — documenting design decisions, implementation details, and iteration on dynamic mastering architecture, the 3-model consensus system, and DSP internals.
Posts
Roadmap
Implementation priorities confirmed in #001. Status updated on completion.
P1next
- —3-model MAGI consensus system (GPT-5.4 / Claude Opus 4.6 / Gemini Pro 3.1, fixed roles + per-field weights)
- —consensus_arbiter.py (weighted median, risk max, do_not_damage union, contradiction detection, minutes generation)
P2planned
- —control_layer.py (formplan targets → per-section DSP parameter mapping)
- —DSP engine: section-adaptive processing (replace single global params with per-section params)
P3planned
- —DSP fix: _split_4bands → complementary Linkwitz-Riley crossover (+8 to +12)
- —DSP fix: TP Limiter → stereo-linked (+6 to +9)
- —DSP fix: final safety pass → oversampled true peak (+3 to +5)
P4backlog
- —post_verification.py (auto re-analysis after mastering → diff against targets → report)
- —DSP fix: TPDF dither naming correction (remove or rename HF shaping)
CCMClaude Code Memory
Memory entries registered in Claude Code (claude.ai/code).
| key | value |
|---|---|
| project_identity | aimastering.dev — AI-driven dynamic mastering service. Solo development by ishij. |
| architecture_v2 | Analysis AI → 3-model MAGI consensus (GPT-5.4 Engineer / Claude Opus 4.6 Structure Guard / Gemini Pro 3.1 Form Analyst) → Rule-based Arbiter → mastering_consensus_bundle_v1 → control_layer → Dynamic DSP Render → post_verification |
| ai_output_contract | AI does not output DSP knob values directly. It outputs a time-varying target specification (dynamic_mastering_formplan_v2); control_layer converts that into DSP parameters. |
| analysis_schema | dynamic_mastering_formplan_v2: track_identity / whole_track_metrics / whole_track_targets / whole_track_deltas / macro_form (structure + per-section numbers, targets, protected elements) / transition_logic / global_mastering_strategy / problems / confidence |
| consensus_rules | Numeric fields: weighted median. Risk fields: max or upper-median. do_not_damage: union. Minority opinions: preserved in unresolved_tensions. If Claude flags flattening, defer to the suppression side. |
| field_weights | macro_form: GPT 0.20 / Claude 0.30 / Gemini 0.50. whole_track_targets: GPT 0.55 / Claude 0.20 / Gemini 0.25. section_targets: GPT 0.40 / Claude 0.20 / Gemini 0.40. transition_logic: GPT 0.20 / Claude 0.35 / Gemini 0.45. failure_conditions: GPT 0.30 / Claude 0.50 / Gemini 0.20. |
| dsp_known_issues | _split_4bands is non-complementary (needs LR crossover replacement). TP Limiter is non-stereo-linked. Final safety pass does not use oversampled TP. TPDF dither naming mismatch. |
| next_implementation | P1: consensus_arbiter.py + 3-model MAGI. P2: control_layer.py + section-adaptive DSP. P3: LR crossover / stereo-linked limiter / oversampled TP. P4: post_verification / dither fix. |