From b79204793259e09ed107379baca9f84a7d0fbaf7 Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Sun, 9 Mar 2025 14:37:52 -0400 Subject: modify note list when changing keys --- key-picker.mjs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 key-picker.mjs (limited to 'key-picker.mjs') 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); +} -- cgit v1.2.3