Skip to content

Add audio analyzer block with waveform and vectorscope#410

Open
srperens wants to merge 8 commits intomainfrom
feature/audio-analyzer-block
Open

Add audio analyzer block with waveform and vectorscope#410
srperens wants to merge 8 commits intomainfrom
feature/audio-analyzer-block

Conversation

@srperens
Copy link
Collaborator

@srperens srperens commented Mar 6, 2026

Summary

  • Add new AudioAnalyzer block with real-time waveform and vectorscope visualization
  • Base64-encode analyzer data to reduce WebSocket throughput
  • Add full analyzer view in properties panel with egui_plot, zoom sliders, and legends
  • Add WebSocket throughput logging (KB/s and msgs/s)

Test plan

  • Verify waveform rendering with stereo and mono audio sources
  • Verify vectorscope displays correct L/R correlation
  • Check zoom sliders work in the full analyzer view
  • Confirm legend toggle works for showing/hiding channels
  • Verify WebSocket throughput is reasonable under load

🤖 Generated with Claude Code

Per Enstedt and others added 8 commits March 5, 2026 11:38
Adds a new analysis block (builtin.audioanalyzer) that provides
real-time waveform (oscilloscope) and vectorscope (Lissajous) display
for audio signals, using appsink for sample-level analysis with
JSON transport via StromEvent.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces Vec<i8> JSON arrays (~4 bytes/sample) with base64-encoded
strings (~1.33 bytes/sample) for waveform and vectorscope data,
reducing expected throughput from ~350 KB/s to ~120 KB/s.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…dering

- Add show_full() for larger waveform + vectorscope in property inspector
- Fix waveform quantization rounding so quiet signals remain visible
- Fix waveform gaps by pixel-binning data columns and connecting midpoints
- Pass audioanalyzer_data_store through to properties panel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace manual painter code with egui_plot for the properties panel view
- Add amplitude and bin-fraction sliders for waveform zoom control
- Add scale slider for vectorscope zoom control
- Show L/R legends with L min and R min hidden by default (toggleable)
- Hide reference lines from legends (zero lines, mono/phase diagonals)
- Fix i16 overflow panic in quantization by casting to i32
- Add egui_plot 0.34 dependency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix waveform legend so L min/R min can be toggled by the user
- Change loudness not-finite warning from warn to trace level

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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