diff options
| author | Brian Cully <bjc@spork.org> | 2025-07-26 14:55:53 -0400 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-07-26 14:55:53 -0400 |
| commit | 2a9b6ef0be04b5b5cacc47922e19c05d190d6ade (patch) | |
| tree | e07e9648891b065cb8c12cea563386a9b92264c7 /main.mjs | |
| parent | 18b63657328a619a638688e5a85c9c1da2b196c1 (diff) | |
| download | chords-2a9b6ef0be04b5b5cacc47922e19c05d190d6ade.tar.gz chords-2a9b6ef0be04b5b5cacc47922e19c05d190d6ade.zip | |
first stab at fretboard player.
need to handle actual chord positions so everything isn't in 4, but
otherwise works?
Diffstat (limited to 'main.mjs')
| -rw-r--r-- | main.mjs | 29 |
1 files changed, 27 insertions, 2 deletions
@@ -2,22 +2,47 @@ import Fretboard from './fretboard.mjs'; import History from './history.mjs'; import KeyPicker from './key-picker.mjs'; import String from './string.mjs'; +import Player from './player.mjs'; +import { Note, toCents } from './scale.mjs'; function init() { console.debug('init()', this); String.register(); Fretboard.register(); - // KeyPicker.register(); - // History.register(); + KeyPicker.register(); + History.register(); + + let player = undefined; // todo: maybe just attach the listener to document? document.querySelectorAll(Fretboard.name).forEach(f => { f.addEventListener(f.saveEvent, e => { document.querySelectorAll(History.name).forEach(h => { + console.debug('h is', h, 'e is', e.detail); h.add(e.detail); }); }); + + f.addEventListener(f.playEvent, e => { + console.debug('got playEvent', e, e.detail.notes); + const a = Note.fromString('A'); + if (player) { + player.stop(); + } + player = new Player(e.detail.notes.filter(n => n !== 'x').map(n => { + // smoosh everything into 4 right now + return toCents([a, 4], [Note.fromString(n), 4]); + })); + player.start(); + }); + + f.addEventListener(f.stopEvent, e => { + console.debug('got stopEvent', e); + if (player) { + player.stop(); + } + }); }); } document.addEventListener('DOMContentLoaded', init); |
