diff options
author | Brian Cully <bjc@spork.org> | 2025-03-09 14:37:52 -0400 |
---|---|---|
committer | Brian Cully <bjc@spork.org> | 2025-03-09 14:52:08 -0400 |
commit | b79204793259e09ed107379baca9f84a7d0fbaf7 (patch) | |
tree | 3a5c4d6e24274a4860b34ee61bbc334a7032d308 /key-picker.mjs | |
parent | d69720d09760d153bb2059e57da3a4ed6c59e142 (diff) | |
download | chords-b79204793259e09ed107379baca9f84a7d0fbaf7.tar.gz chords-b79204793259e09ed107379baca9f84a7d0fbaf7.zip |
modify note list when changing keys
Diffstat (limited to 'key-picker.mjs')
-rw-r--r-- | key-picker.mjs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/key-picker.mjs b/key-picker.mjs new file mode 100644 index 0000000..bd6482a --- /dev/null +++ b/key-picker.mjs @@ -0,0 +1,30 @@ +import { MajorScale, MinorScale, chromaticScale } from "./scale.mjs"; + +function scaleFrom(tonic, diatonic) { + switch (diatonic) { + case 'major': + return MajorScale(tonic); + case 'minor': + return MinorScale(tonic); + default: + throw new Error('how this happen') + } +} + +function formChanged(form) { + const formData = new FormData(form); + const scale = scaleFrom(formData.get('tonic'), formData.get('diatonic')); + ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh'].forEach((c, i) => { + Array.from(form.getElementsByClassName(c)).forEach(elt => elt.innerText = scale[i]); + }); +} + +function handleFormChanged(e) { + formChanged(e.target.form); +} + +export default function KeyPicker(form) { + console.debug('KeyPicker()', form); + form.onchange = handleFormChanged; + formChanged(form); +} |