Skip to content

feat: refocus the Analyzer screen on music, add frequency-scale and s… - #43

Merged
veillette merged 1 commit into
mainfrom
analyzer-music-focus
Sep 18, 2026
Merged

veillette merged 1 commit into
mainfrom
analyzer-music-focus

Conversation

@veillette

Copy link
Copy Markdown
Collaborator

…peed controls

The Analyzer screen is for listening to music and instruments, so the voice-analysis displays it had borrowed from the Voice & Vowels screen no longer belong there:

  • spectrogram: drop the F0 and formant tracks
  • spectrum: drop the LPC envelope and the formant markers (the whole render path, since the Composer's only use of them was on synthesized partials)
  • readout: drop the voiced/unvoiced indicator, the F1-F4 table, HNR and CPP, leaving pitch, note + cents, and level
  • drop the standing-wave strip; StandingWaveNode moves to composer-screen/view, its only remaining user

The harmonic overlays stay — harmonic markers, allowed-harmonic bands and mode numbers all describe amplitude vs. frequency — and with them the boundary-model selector that feeds the allowed-harmonic shading.

New controls:

  • Frequency Scale (linear / logarithmic) for both the spectrogram's y axis and the spectrum's x axis. Charts plot a transformed coordinate (Hz, or log2 Hz) so bamboo's evenly spaced grid lands one line per octave, with ticks labelled back in Hz. ChartFrame.setXAxis()/setYAxis() retarget range, spacing and label format in place.
  • Scroll Speed (0.5x-4x): columns written per analyzed frame, carrying the fractional remainder so speeds below 1x write a column every few frames instead of rounding to a standstill.

Fixes: freezing the display kept the audio playing. isFrozenProperty moves to BaseAnalysisModel, where it both halts step() and folds into isMonitoringProperty, so the sound stops with the picture — on the Composer screen too, which had the same bug.

Also replaces ChartFrame's bamboo AxisLine (pinned to model value 0, which wanders off-chart and drags the node's bounds with it on any axis that excludes 0) with a line at the plotting area's left edge, and localizes the spectrogram's hardcoded y-axis title.

Description

Type of change

  • Bug fix
  • New feature
  • Documentation update
  • Refactoring
  • Build / CI change

Related issues

Fixes #
Related to #

Testing

  • npm run lint
  • npm run check
  • npm run build
  • npm test (if applicable)

How to test

  1. Step 1
  2. Step 2
  3. Expected result

Checklist

  • Self-review completed
  • Documentation updated if needed
  • No unrelated changes included

…peed controls

The Analyzer screen is for listening to music and instruments, so the
voice-analysis displays it had borrowed from the Voice & Vowels screen no
longer belong there:

- spectrogram: drop the F0 and formant tracks
- spectrum: drop the LPC envelope and the formant markers (the whole render
  path, since the Composer's only use of them was on synthesized partials)
- readout: drop the voiced/unvoiced indicator, the F1-F4 table, HNR and CPP,
  leaving pitch, note + cents, and level
- drop the standing-wave strip; StandingWaveNode moves to composer-screen/view,
  its only remaining user

The harmonic overlays stay — harmonic markers, allowed-harmonic bands and mode
numbers all describe amplitude vs. frequency — and with them the boundary-model
selector that feeds the allowed-harmonic shading.

New controls:

- Frequency Scale (linear / logarithmic) for both the spectrogram's y axis and
  the spectrum's x axis. Charts plot a transformed coordinate (Hz, or log2 Hz)
  so bamboo's evenly spaced grid lands one line per octave, with ticks labelled
  back in Hz. ChartFrame.setXAxis()/setYAxis() retarget range, spacing and label
  format in place.
- Scroll Speed (0.5x-4x): columns written per analyzed frame, carrying the
  fractional remainder so speeds below 1x write a column every few frames
  instead of rounding to a standstill.

Fixes: freezing the display kept the audio playing. isFrozenProperty moves to
BaseAnalysisModel, where it both halts step() and folds into
isMonitoringProperty, so the sound stops with the picture — on the Composer
screen too, which had the same bug.

Also replaces ChartFrame's bamboo AxisLine (pinned to model value 0, which
wanders off-chart and drags the node's bounds with it on any axis that excludes
0) with a line at the plotting area's left edge, and localizes the
spectrogram's hardcoded y-axis title.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@veillette
veillette merged commit fe0532f into main Sep 18, 2026
15 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant