- NEW material 'giuliani': figures require a real voicing — the generator
assigns cycle positions (bass root + upper chord tones) to DISTINCT
strings with valid frets per bar; bars that cannot be voiced are skipped
(deterministic), clear error when nothing fits. Patterns: p-i-m, p-i-m-a,
p-a-m-i, a-i-m, p-i-m-a-m-i, p-m-a-m-i-m. Honors the chord pool, string
restrictions and the tuning; one figure per beat.
- 6/8 meter added (numerator 6) across score model, settings, generators;
meter selects now offer 4/4, 3/4, 6/8.
- Arpeggio category: Giuliani entries replaced with note-sequence
broken-chord figures (1-3-2-1, 1-3-2-5(8), 1-5-3-5(8), 1-2-3-5-3) —
pure pitch sequences, no voicing claims.
- Beam fix (root cause): setBeam now happens BEFORE voice.draw — VexFlow
decides flag vs beam at draw time; registering after drawing left both
flag and beam. Beams drawn after notes, flags suppressed correctly.
- MetronomeWidget rebuilt cleanly: ONE 'Click sound' checkbox (the earlier
restructure left duplicated option rows behind — neither worked). Widget
body always visible (dimmed when disarmed); toggle arms sound+pendulum.
- Click decision unified: 'sync to metronome' derives phrase clickSound
from the widget's sound checkbox (no separate phrase click option);
'at your pace' clicks when the metronome is armed.
- Chord selection: abwählbare Liste (arpeggioChordSelection) restricts
progression chords; first bar draws a random chord FROM THE SELECTION
(fixed first chord repeated the exercise identically).
- Scales: rhythm setting (quarters/eighths) shared with arpeggios;
drill id includes rhythm to invalidate cached scores.
- Beam fix: register Beam via note.setBeam so VexFlow suppresses flags
(eighths/16ths previously drew BOTH beam and flag).