Repository navigation
Guidonica 2026.10.2
·
10 commits
to main
since this release
Sing against a drone on any note and at Baroque or modern pitch, and read early music in half-note meters, from 2/2 alla breve to 12/4.
Added
- Half-note time signatures for early music. A Half-note beat switch in Settings → Staff and in the welcome guide turns 4/4, 3/4, 2/4, 6/8, 9/8 and 12/8 into 4/2, 3/2, 2/2 (alla breve), 6/4, 9/4 and 12/4, with half-note clicks, breves and the breve rest (ADR 0090).
- A drone to sing against: a steady shruti box or pad on any note, with its own volume, in Settings → Practice. Mute silences it too, and it sounds through the count-in so you hear the tonic before the first note. Exercise links carry the drone note (ADR 0092).
- Common-time and alla breve signs: Settings → Staff can write 4/4 as C and 2/2 as ¢ (ADR 0093).
- Tune the drone to A = 415, 430, 442 or 466 Hz besides 440, for Baroque, Classical or Renaissance pitch, in Settings → Practice. Exercise links carry it (ADR 0094).
- Press D to turn the drone on and off.
Changed
- The Compound pulse setting is now called Pulse and also works in half-note meters: the click follows the beat or each subdivision (ADR 0090).
Fixed
- Scrolling notation is smooth on high-refresh displays and in Firefox, where it could stutter (ADR 0089).
- Scrolling no longer hitches on each metronome click or when a new bar is drawn, on displays up to 144 Hz (ADR 0091).
- Guidonica opens with its default settings instead of failing to start when Firefox or Safari blocks site data (ADR 0096).
- On a wide screen, Settings now open beside the staff on the first visit, however fast the fonts load (ADR 0096).
- Scrolling is smooth in Firefox with fingerprinting protection on, and in Tor and Mullvad Browser (ADR 0096).
Internal
- ADR 0089 documents the frame-locked audio clock;
SPEC.md§5 andAGENTS.md§1 describe it. - ADR 0090 documents the half-note beat meters. Meters gain a
beatGroup(metric beats per felt beat), thecompoundPulsesetting becomespulse(beatordivision; old settings and links still load), and the beat lights group bybeatGroup. - ADR 0091 documents jank-free beat and measure frames: compositor-only beat lights, VexFlow measures rendered in idle callbacks, an idempotent
syncUI, and cached canvas gradients and dark-mode query;SPEC.md§3 and §5 andAGENTS.md§1 describe it. - ADR 0092 documents the drone, including why the tanpura timbre was retired (its pluck cycle ignored the tempo):
src/audio/drone.tsvoices on a drone bus beside the click's master gain, thedroneNote,droneSoundanddroneVolumesettings and the additivedrone=link parameter;SPEC.md§5 and §6,AGENTS.md§1 and §2 and the README describe it. - ADR 0093 documents the C and ¢ signs:
timeSignatureSpecspells 4/4 and 2/2 for VexFlow when the newmeterSignssetting is on, display only, left out of links;SPEC.md§2 and §6 and the README describe it. - ADR 0094 documents the drone tuning: the
referencePitchsetting (REFERENCE_PITCHES),droneFrequency(pc, a4),MetronomeEngine.setReferencePitchand the additivea4=link parameter;SPEC.md§5 and §6 and the README describe it. - ADR 0094 §5 records the D shortcut:
applyDroneNoteserves the drone select and the key, and the last note lives in memory only. - ADR 0095: a zero-latency soft clipper on the output keeps click plus drone below full scale (
src/audio/output.ts). AGENTS.mdbundle figures follow the build: ~135 kB of gzipped JS (~41.5 kB app code), ~6.4 kB per extra language.- ADR 0096 documents cross-engine support: Chromium 105+, Firefox 115 ESR+ and Safari / iOS 16+, verified in Blink, Gecko and WebKit, with feature-detected fallbacks only; README §17 and
SPEC.md§6 state the baseline. build.targetinvite.config.tsis the support baseline (chrome105,firefox115,safari16) instead of Vite's implicit default; app JS shrinks from 41.6 to 40.8 kB gzipped, andAGENTS.mdfollows (~134 kB of gzipped JS).- The run-guidonica driver takes
--browser chromium|firefox|webkitand--setup [engine…];chromium.mjsgainsfindBrowser(engine).
Full changes: v2026.10.1...v2026.10.2