/teal-sea
teal-sea / zeta-labstate of record · compiled 28 Sep 2026 · revision e4945c4 · source

Library · hunts/chroma_hue/MISSION.md

Hunt #75: pitch classes against the colour wheel

711 words · 97 lines · source

Is there any mathematically nontrivial correspondence between the twelve chromatic pitch classes and the colour wheel, beyond the fact that both can be drawn on a circle? The operator's starting formulation was a bijection from Z_12 to twelve equally spaced hues, with rotations, reflections and alternative orderings allowed, and a standing instruction to prefer finding the premise wrong over making it look good. Write-up: docs/33-chroma-hue.md.

id: chroma_hue
question: Does any bijection from Z_12 to twelve hue classes preserve a relation, metric, symmetry or spectrum that is not already a consequence of Z_12 acting on a circle?
frontier: no prior claim in this tree; the literature has the DFT of pitch-class sets (Lewin, Quinn, Amiot) and the opponent-channel geometry of hue (CIELAB, OKLab), and no published bridge between them that survives a null model
proposed_attack: formalise the equivariance constraint, enumerate every bijection against a consonance objective with a random-permutation null, and measure whether the perceptual hue circle is even a metric 12-gon
dead_routes:
  - rotating an HSL wheel against the chromatic scale by eye, since HSL hue steps are not perceptually equal
  - Newton's seven-colour spectrum matched to the diatonic scale, which was fitted by construction
required_oracles:
  - exhaustive enumeration of all 12! bijections with f(0) fixed
  - published CIEDE2000 test pairs (Sharma, Wu, Dalal 2005)
  - the Clough-Douthett maximally even sets recomputed by enumeration
  - uniformly random permutations as the null distribution
kill_conditions:
  - a random bijection reaches the score of the best structured one
  - the best structured bijection is not invariant under the symmetries that motivated it
  - the perceptual hue circle fails to be a metric 12-gon at the level of its own adjacent-step spread
agents_may:
  - search
  - derive
  - code
  - attack
  - formalize
agents_may_not:
  - declare novelty
  - declare theorem status
  - promote their own claim

Files

filewhat it does
colorspace.pysRGB, CIELAB, OKLab/OKLCH, HSL, CIEDE2000, pinned to Sharma's 34 test pairs
pc.pyZ_n machinery: affine maps, DFT, three dissonance measures, circulant builders
probe_consonance.pyexhaustive search of all bijections against Spearman(hue distance, dissonance), with the random null; writes results_consonance.json
probe_perceptual.pyis the colour side a metric 12-gon: HSL, OKLCH fixed and full chroma, CIELAB; writes results_perceptual.json
probe_spectrum.pythe wave version: 12-TET steps of light frequency across the visible octave; writes results_spectrum.json
probe_fourier.pythe Fourier formulation checked by enumeration, and the dominant dissonance mode for n = 5..31; writes results_fourier.json
probe_round2.pymetamer counts, orbifold radius vs chroma, the CRT torus, bijection search with real CIEDE2000 geometry; writes results_round2.json
probe_cyclotomic.pythe cyclotomic ontology: Galois conjugacy of the two wheels, integrality of the norm, the ten norms and 84 unit classes; writes results_cyclotomic.json
make_figures.pythe four figures under figures/chroma_hue_*.png
make_figure_norm.pyfigures/chroma_hue_norm.png, the 224 set classes on ten hyperbolas

Tests: tests/test_chroma_hue.py. Everything is reproducible from the repo root with .venv/bin/python hunts/chroma_hue/probe_*.py (the exhaustive search takes about four minutes).

Scope

This hunt touches nothing in zeta/, ontology/ or harness/. It does not borrow the zeta battery because it makes no claim about zeta; its controls are the random-permutation null and the circulant structure of its own objective, both stated in the doc. Nothing here is evidence about RH or about anything in docs/08.

Run manifest

id: chroma_hue-2026-08-22-first
hunt: chroma_hue
started: 2026-08-22T18:40-05:00
finished: 2026-08-22T20:10-05:00
ran:
  - .venv/bin/python hunts/chroma_hue/probe_consonance.py
  - .venv/bin/python hunts/chroma_hue/probe_perceptual.py
  - .venv/bin/python hunts/chroma_hue/probe_spectrum.py
  - .venv/bin/python hunts/chroma_hue/probe_fourier.py
  - .venv/bin/python hunts/chroma_hue/probe_round2.py
  - .venv/bin/python hunts/chroma_hue/probe_cyclotomic.py
  - .venv/bin/python hunts/chroma_hue/make_figures.py
  - .venv/bin/python hunts/chroma_hue/make_figure_norm.py
  - .venv/bin/python -m pytest -q tests/test_chroma_hue.py
outcome: the only structure a note-to-hue bijection can carry is a character of Z_12, the circle of fifths is the unique argmax of every consonance objective over all 12! maps, the perceptual hue circle is not a 12-gon, and the round-two reformulation makes a colour wheel a complex place of Q(zeta_12) with chromatic times fifths saturation an integer norm taking ten values; verdict pretty but trivial
artifacts:
  - hunts/chroma_hue/results_consonance.json
  - hunts/chroma_hue/results_perceptual.json
  - hunts/chroma_hue/results_spectrum.json
  - hunts/chroma_hue/results_fourier.json
  - hunts/chroma_hue/results_round2.json
  - hunts/chroma_hue/results_cyclotomic.json
  - figures/chroma_hue_norm.png
  - figures/chroma_hue_wheels.png
  - figures/chroma_hue_consonance.png
  - figures/chroma_hue_perceptual.png
  - figures/chroma_hue_spectrum.png
  - docs/33-chroma-hue.md