Summary
Widen the scale palette in js/theory.js. Modular Riffs ships 12 scales/modes; add a few more colours cheaply — Whole Tone, Gypsy / Hungarian Minor, and Phrygian Dominant to start — since they're just interval arrays.
Why it fits
Scales are pure data here (SCALES = { key: { name, intervals } }), and every note choice is already filtered to the scale's pitch classes, so new scales propagate to all four parts for free. These three open up exotic, cinematic, and Mediterranean/Middle-Eastern flavours the current church-mode + pentatonic set can't reach.
Proposed scope
Data (js/theory.js)
wholeTone — [0, 2, 4, 6, 8, 10]
gypsyMinor (Hungarian minor) — [0, 2, 3, 6, 7, 8, 11]
phrygianDominant — [0, 1, 4, 5, 7, 8, 10]
- (Optional later: a couple of wider-interval experimental scales.)
Validate chord building
- Chord stacking builds thirds within the scale (
js/theory.js). Confirm degenerate cases behave: Whole Tone has no diatonic 3rd/7th distinction (every triad is augmented) — make sure the stacker and the pentatonic special-case path don't choke, and that the arp still spells something musical.
- Spot-check roman-numeral instantiation and the borrowed-chord "lead borrows the chord's scale" logic against the new scales.
UI
- They appear automatically in the scale dropdown (data-driven), so mostly just labels.
Where
js/theory.js (data + chord-build sanity), quick check in js/generator.js (arp/pad over symmetric scales).
Done when
Open questions
- For Whole Tone, should chords fall back to a sensible default (aug triads / dom7♯5) rather than the generic third-stack?
Summary
Widen the scale palette in
js/theory.js. Modular Riffs ships 12 scales/modes; add a few more colours cheaply — Whole Tone, Gypsy / Hungarian Minor, and Phrygian Dominant to start — since they're just interval arrays.Why it fits
Scales are pure data here (
SCALES = { key: { name, intervals } }), and every note choice is already filtered to the scale's pitch classes, so new scales propagate to all four parts for free. These three open up exotic, cinematic, and Mediterranean/Middle-Eastern flavours the current church-mode + pentatonic set can't reach.Proposed scope
Data (
js/theory.js)wholeTone—[0, 2, 4, 6, 8, 10]gypsyMinor(Hungarian minor) —[0, 2, 3, 6, 7, 8, 11]phrygianDominant—[0, 1, 4, 5, 7, 8, 10]Validate chord building
js/theory.js). Confirm degenerate cases behave: Whole Tone has no diatonic 3rd/7th distinction (every triad is augmented) — make sure the stacker and the pentatonic special-case path don't choke, and that the arp still spells something musical.UI
Where
js/theory.js(data + chord-build sanity), quick check injs/generator.js(arp/pad over symmetric scales).Done when
Open questions