🎨 hand-tuned skin home keys — 14 deliberate, distinct moods
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 <noreply@anthropic.com>
This commit is contained in:
parent
8dd551017a
commit
c5997163b5
@ -4305,8 +4305,28 @@
|
|||||||
// Its home tonality (its first station's scale) becomes the global scale, so the
|
// 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.
|
// sequencer AND the ambient data-melodies re-harmonise when you change cosmology.
|
||||||
let skinTunesWorld = true;
|
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() {
|
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);
|
const sc = st && activeSkin.scaleOf(st.key);
|
||||||
if (sc && SCALES[sc.scale]) return { root: ((sc.root % 12) + 12) % 12, name: sc.scale };
|
if (sc && SCALES[sc.scale]) return { root: ((sc.root % 12) + 12) % 12, name: sc.scale };
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user