From c5997163b58ae582a1143916165d35e189f0f872 Mon Sep 17 00:00:00 2001 From: type-two Date: Fri, 10 Jul 2026 01:14:39 +1000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20hand-tuned=20skin=20home=20keys?= =?UTF-8?q?=20=E2=80=94=2014=20deliberate,=20distinct=20moods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the auto-derived skin scale (which gave 3× C wholetone and a sparse hirajoshi default) with a curated SKIN_HOME map — a considered {root,scale} per cosmology, every pair unique so turning the wheel always changes the key. Verified: 14/14 distinct. Default (chakra) is now warm C minor pentatonic. chakra C min-pent · planes A lydian · tree D minor · lodge G major · ladder E phrygian · yggdrasil F# minor · lataif B dorian · wuxing F# pentatonic · tarot A minor · zodiac C mixolydian · futhark G dorian · wheelyear F major · artist C wholetone · bagua E min-pent. (Fallback to derived scale for any future skin.) Co-Authored-By: Claude Opus 4.8 --- viz/index.html | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/viz/index.html b/viz/index.html index f3cfc94..1ac3100 100644 --- a/viz/index.html +++ b/viz/index.html @@ -4305,8 +4305,28 @@ // Its home tonality (its first station's scale) becomes the global scale, so the // sequencer AND the ambient data-melodies re-harmonise when you change cosmology. let skinTunesWorld = true; + // Hand-tuned home key per Spirit — a deliberate, distinct mood for each cosmology + // (every {root,scale} pair is unique, so turning the wheel always changes the key). + const SKIN_HOME = { + chakra: { root: 0, name: "minor_pent" }, // C — warm, grounded, meditative + planes: { root: 9, name: "lydian" }, // A — airy, ascending (higher planes) + tree: { root: 2, name: "minor" }, // D — deep, solemn, mystical + lodge: { root: 7, name: "major" }, // G — noble, bright, geometric + ladder: { root: 4, name: "phrygian" }, // E — ancient, alchemical + yggdrasil: { root: 6, name: "minor" }, // F# — cold, epic, mythic + lataif: { root: 11, name: "dorian" }, // B — spiritual, warm-modal (Sufi) + wuxing: { root: 6, name: "pentatonic" }, // F# — the classic Chinese pentatonic + tarot: { root: 9, name: "minor" }, // A — mysterious, fateful + zodiac: { root: 0, name: "mixolydian" }, // C — cosmic, rolling, bright + futhark: { root: 7, name: "dorian" }, // G — old folk modal (runes) + wheelyear: { root: 5, name: "major" }, // F — pastoral, seasonal + artist: { root: 0, name: "wholetone" }, // C — pure colour, no tonic (Kandinsky) + bagua: { root: 4, name: "minor_pent" }, // E — Eastern pentatonic (I Ching) + }; function skinHomeScale() { - const st = activeSkin.stations && activeSkin.stations[0]; + const h = SKIN_HOME[activeSkin.key]; + if (h && SCALES[h.name]) return { root: h.root, name: h.name }; + const st = activeSkin.stations && activeSkin.stations[0]; // fallback for any future skin const sc = st && activeSkin.scaleOf(st.key); if (sc && SCALES[sc.scale]) return { root: ((sc.root % 12) + 12) % 12, name: sc.scale }; return null;