Skip to content

Releases

openmeters 1.18.0

Choose a tag to compare

@github-actions github-actions released this 14 Nov 04:28
d821c5b

What Changed?

New Features

  • LUFS-I and LRA are now available within the loudness meter. Double click the visual to reset the measurement.
  • Configuration hot-reloading is now supported. Config/theme file edits are immediately reflected within the running session.

Fixes

  • Lots of minor bug fixes, a panic with ASan caused by pipewire-rs.

Changelog

d821c5b fix(spectrogram): collapse the cursor-left arm for clippy 1.95
801120b chore: bump version, update to latest version of iced_exwlshell
0edcf31 refactor(visuals): reuse point buffers and geometry helpers, name gestures
873aeea refactor(ui): lend visual slots to pages, own bar outputs in the app
6fa98d0 refactor(persistence): bound visual options and width bases, make settings Copy
40909f9 refactor(persistence): read files through one lossy path, type theme names
a1ce4ff refactor(visuals): let states load their own palettes
8795f22 refactor(render): drop the replace-blend pipeline, test mirrored shader constants
8ae84f4 refactor(oscilloscope): name period misses, blend traces into the incoming buffer
db56f7c refactor(audio): share the windowed FFT, prepare processors on first use
82ab2e9 refactor(dsp): give every band splitter the cascaded topology
e96176d refactor(dsp): keep running means in single precision, size windows in seconds
0fe1ca0 refactor(dsp): keep downmixed frames finite
7d17327 refactor(pipewire): own capture views, pool packet buffers, bind globals once
5020465 refactor(dsp): carry channel positions as a ChannelLayout
0e403b4 refactor(ui): share settings slider helpers, simplify config page
1b02f36 refactor(registry): derive visual kind from content
56ceec2 refactor(visuals): scale palette alpha, share render helpers
58899b6 refactor(visuals): share hop queue, drop redundant format resets
b84001b refactor(persistence): derive lossy readers from settings structs
08a8c12 refactor(pipewire): keep stream status on the writer, bound live test tools
f32e51c refactor(pipewire): index ports by id, share retry backoff
97f9e4b refactor(dsp): add SampleRate::frames, drop AudioFormat generation arg
d0bdb85 refactor: use one name per channel constant and type
a4de2ae docs: actually update the gif...
e6b24d2 docs: update README with new GIF, better links, other notes
635697b feat(loudness): LUFS-I and LRA
5482057 fix(spectrum): respect peak palette alpha
aa2c2d4 fix(pipewire): keep last sample rate
cd68a0e fix(persistence): reject non-object files
a010e8a feat: hot-reloading of configurations and themes
f859439 fix(pipewire): use-after-free
575d004 refactor: try to validate and enforce once

openmeters 1.17.1

Choose a tag to compare

@github-actions github-actions released this 03 Nov 17:20
fad3d89

What Changed?

Lots and lots of bug fixes and internal improvements.

Changelog

fad3d89 chore: update deps, bump version
ca8b8d0 docs: fix typos
faea294 refactor: cleanups, fixes
9d7cd0a fix(stereometer): read zero correlation over digital silence
8315946 refactor(waveform): inline unnecessary things, cleanup
53b980c fix(waveform): prevent single pixel snaps when paused
095e153 refactor(oscilloscope): inline unnecessary helpers
cdbe779 fix(oscilloscope): compare fractional zero crossings for the capture span
0cfee6c fix(oscilloscope): also refine the best interior peak of the coarse search
bd65b96 fix(oscilloscope): learn template at its fractional offset
ca69eb2 fix(oscilloscope): wait for a full search span before locking
493dda6 fix(oscilloscope): compare interpolated NSDF peaks when picking the period
4454840 refactor(spectrogram): inline unnecessary helpers
e34cedc fix(spectrogram): zoom and pan fixes
29ab6bf fix(spectrogram): clamp the accumulation texture to the device limit
aaba007 fix(visuals): prune cached geometry in the pipeline's trim
f2cfb34 fix(spectrogram): free the GPU history once the visual's history is gone
4b90c50 fix(visuals): drop a visual's audio when it is disabled
2dd23a6 fix(spectrogram): retain pending GPU uploads until a frame prepares them
90b2d47 fix(spectrogram): reworkings, DC fixes
e93934a refactor(spectrum): inline single-use helpers
9cd94e4 fix(spectrum): draw the secondary trace's bar marks from each bar's maximum
e214b2e fix(spectrum): locate the peak label through the window's response
004c56b fix(spectrum): treat a zero FFT size as unset
65ec6f6 fix(spectrum): keep averaging state in f64 so slow averages settle
6504a40 fix(spectrum): analyze only the newest window when not averaging
35bde7e fix(spectrum,spectrogram): estimate DC over a longer history
aff6601 refactor(util): compute FFT windows on demand instead of caching them
64c2047 refactor(loudness): inline per-block state setup and simplify peak math
46cca29 fix(loudness): hold and decay peak markers in audio time
3f2c7bc fix(loudness): keep the 48 kHz K-weighting response at other sample rates
918a39b refactor(util): move the Kaiser window into the shared window module
32c39c5 refactor(dsp): drop a redundant clamp and tighten channel tests
6e5cd66 fix(waveform): average band colors over at least one column
568edf4 refactor(dsp): start running means full of silence
b711440 refactor(meter): inline batch sizing and simplify pause handling
2e2cfcc refactor(persistence): tidy loading and share the test settings loader
41d7fc1 fix(ui): keep a theme's name and author when saving over it
158b778 fix(theme): recreate a custom theme that is missing on update
426aa22 fix(theme): load themes field by field to prevent invalidating entire thing
b676361 fix(theme): read background and palettes only from the active theme
2b0ad74 fix(persistence): debounce settings saves per file
073e31b fix(persistence): ignore an empty or relative XDG_CONFIG_HOME
7bfa944 fix(persistence): sync settings to disk before replacing them
e376e4e fix(persistence): write settings through symlinks
45986cf refactor(pipewire): drop redundant stream flags, status writes, fallbacks
5ea54b8 fix(pipewire): list virtual sinks and sources as capture devices
331f6de fix(pipewire): identify streams by application name, then node name
998e97f fix(pipewire): recognize FLC, FRC and RC channel positions
837a924 refactor(pipewire): return the capped layout from port_layout
c6ac992 fix(pipewire): widen the idle watchdog
45f30c5 fix(pipewire): re-anchor continuous packets when the device clock drifts
adf4ba4 fix(pipewire): drop skipped quiet audio
98f5a44 fix(pipewire): close the lost wakeup between a ring push and the reader's sleep
18c15b3 fix(pipewire): notice links removed by others and back off re-creating them
bd5c0cf fix(pipewire): reset the stream retry backoff only once a stream proves itself
cd50cf7 fix(pipewire): keep the session on relatively harmless "unknown resource" errors
b0eb9d8 fix(util): honor width and alignment when formatting notes (padding)
8a798d0 fix(util): format durations that round to 60s as minutes
572b554 docs: reword configuration section in readme
f18aba6 docs: add stable AUR package to README's install section
c67a91f refactor(spectrogram): cleanup
c18a94c refactor(oscilloscope): dead code removal, cleanups
319a85d refactor(oscilloscope): dead code removal

openmeters 1.17.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:39
e6d90ff

What Changed?

Many new features, UI changes, optimizations, and bug fixes:

  • Visual configuration pages now sort some controls via collapsible cards. Click to expand or contract them.
  • The color picker for all palette stops has been redesigned to be more user-friendly. Hex values can be copied and pasted directly from within the UI.
  • The oscilloscope now spans the full window height to match the waveform.
  • The oscilloscope's fill is now a fade, which improves readability in stacked mode and in general looks more aesthetically pleasing.
  • The spectrum analyzer's range is now equivalent to the spectrogram's.
  • The spectrum may now also be rotated in all unique directions, same as the spectrogram.
  • Spectrogram rendering was redesigned, reducing work approximately five-fold in all cases.
  • Block driven events were replaced with audio driven events for consistency across frame rates (see below).

What Broke?

Because block-driven values were replaced and naming needed to be updated, oscilloscope persistence will fail to load. If you use it, set a value again within the GUI.

Changelog

e6d90ff chore: bump deps and version
ad964f1 refactor: various cleanups
d8b2410 refactor(spectrogram): inline single-use helpers where it doesn't hurt quality
7b51b19 refactor(oscilloscope): index trace buffers and triggers uniformly
1e10278 refactor(visuals): keep slot metadata on registry entries
2f35412 refactor(ui): pass settings to open_main_window and share settings-window teardown
7897ab7 refactor(persistence): add ThemeStore::load_or_warn
f118b78 refactor(pipewire): read node properties directly and reuse application merging
081d7f3 refactor(pipewire): derive initial capture format from the policy plan
183dda4 refactor(dsp): take the first two channels when none map to stereo
72c596a fix(oscilloscope): remove period smoothing constant and behavior
22d244f fix: discard denormals, prevent slow processing from freezing UI
b072893 fix: make block-driven events audio-driven so that they are consistent across framerates, etc.
45bc076 docs: clarify AI policy within contributing guidelines
2690be5 perf(spectrogram): optimizations for small window sizes, etc.
04f67e3 perf(spectrogram): scroll reassigned accumulation in pace
1e928d6 refactor: minor cleanups
f532b5b feat(spectrum): add color spread and ramp in place of legacy 'color floor' setting
a4c86ad feat(oscilloscope): fade crossings over zero instead of the flat fill
16d28be feat(spectrum): rotation, equivalent to what the spectrogram has
fb62b9a refactor(visuals): inline single-use locals and fold duplicated helpers
0b79e3b refactor(ui): build optional controls inline and extract small helpers
7558f3d refactor(persistence): default lossy settings in place and simplify map parsing
3671a63 refactor(pipewire): pass shared handles by reference and reuse helpers
9be1930 fix(spectrogram): drop pending sample skip on sample-rate change
20bfe53 refactor: minor cleanup
28eb17f feat(ui): collapsible cards in configuration pages
3f1a0c2 feat(spectrum): make floor the same as spectrogram, that being 1Hz
d19a300 fix(ui): save palette edits only when they change the saved palette
a6d9785 feat(ui): better color picker
3345c89 feat(spectrogram): better pan controls for laptops

openmeters 1.16.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 05:42
fd7abd4

What Changed?

  • Not a lot. This minor release focuses on hardening and platform support, with some minor performance and other visual differences.
  • OpenMeters is now over a year old! Thank you all for sticking around.

Changelog

fd7abd4 fix: formatting
f839af3 chore: update version
868405d docs: comment clarifying overflow
06985c9 fix: use .midpoint() to avoid overflow.
1dbb141 fix: test formatting, 1.95 lint
e34e504 fix(ui): keep bar mode alive across output loss
445d411 feat: waveform RMS history should clip out of view
61d83fd chore: update lockfile
ba0421e docs: clarify transparency support in readme
133992a feat: add OpenGL and software rendering support
88c68fd feat(spectrogram): selectable source
fdbe425 perf(spectrogram): avoid rounding calls in classic path
593871b fix: avoid unrelated changes causing theme rewrites.
c488209 fix(lints): 1.99 clippy warnings
e66dfdd refactor: `fetch_update` -> `try_update`
3151db6 fix(tests): assert complete output not just count
1daebd6 fix: refresh cached visuals and harden persistence
de92d8c perf(spectrogram): modest memory optimization, share accumulation pipeline spec
424162f refactor: some minor optimizations and removes visuals-to-ui inverse dependency
e1ce6dc fix(release): improper handling of build-only releases when prior builds failed/aborted, updated docs

openmeters 1.15.2-2

Choose a tag to compare

@github-actions github-actions released this 25 Sep 19:33
c3f27eb

Changelog

c3f27eb fix(release): install PipeWire runtime dependencies for tests
9d1b776 chore: bump version
edc7589 chore: update lockfile
5b8e077 fix(loudness): keep rms and conversions in f64 to avoid potential overflow
e44d17c refactor(backend): split complex function within runtime.rs
69825bd refactor(spectrogram): refactor piano roll rendering logic
6d88b2a refactor: make module declarations explicit for rustfmt
d82d859 refactor: extract some code into helper functions
296d10d perf(oscilloscope): avoid FMA calls in energy accumulation
ee32443 fix(loudness): LFE fixes
af07858 docs: update credits and references, formatting
98cbdc2 fix: protect settings files and handle spectrum workflow
5eedb31 refactor: update various comments
34c388a tests: improve coverage and reuse of test helpers
23ecac5 ci: run integration tests in CI workflow

openmeters 1.15.1

Choose a tag to compare

@github-actions github-actions released this 18 Sep 03:48
18e59c6

What Changed?

  • Fixes for the loudness meter were the main focus this time around.
  • Rear weighting is now distinguished from side weighting, tests were expanded and refined.
  • True-Peak accuracy has been greatly improved, see the body of 797be8a for more details and a brief comparison against other implementations.

Changelog

18e59c6 chore: update lockfile
4dcf937 chore: bump version, update deps
797be8a fix(loudness): improve true-peak accuracy and reduce error
b24823d fix(loudness): distinguish side and rear surround weights - weights of 1.41 to sides and 1.0 to 7.1 rears. resolve legacy quad surrounds to side channels while preserving negotiated mappings
96ca37c feat(spectrogram): improved piano roll
c4527f9 chore: Add GitHub funding link to FUNDING.yml
bc544e7 perf: waveform and loudness consolidation and speedup

openmeters 1.15.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 01:57
2729e6e

Changelog

2729e6e chore: update deps, bump version
d60f945 fix(spectrum): labels and knockouts should render behind the spectrum.
62466c4 perf(spectrogram): improve memory efficiency, WIP
42b18d4 perf: reduce DSP overhead and cache spectrogram accumulation - use compact loudness history with shared block sums, f64 fallback. I am aware that this will introduce some rounding error, approx 0.000006%/0.00000026 dB before considering summation error. *technically* a downgrade, but visually negligible. still passes all tests. - consolidate waveform band tracking and reuse spectrum fft storage - cache reassigned spectrogram accumulation - standardize visual defaults - expand loudness window tests
d424393 feat: overhaul all visual defaults and initial window state
a2a31d0 refactor: make macros easier to read and maintain
4099889 refactor: make visual settings typed internally/end-to-end
7b4b53e refactor: more dead code removal
4f2481d refactor: remove tautological assertions and redundant logic
d9af73a refactor(spectrum): reuse cutout pass to mask lines
ce31954 refactor(dsp): unify mono and stereo crossover filters
9821d1a chore: update funding model with Ko-fi username
72ce919 refactor: centralize update logic within SettingsHandle::set
05f5755 perf(spectrum): reuse inverse display range
24b203f perf(spectrogram): copy wrapped audio by contiguous slices
d9c131e perf(oscilloscope): reuse sliding correlation stats
97e6856 perf(audio): shorten wide mean accumulation cache
4b4d687 perf(dsp): specialize shared hot paths
f28d007 fix(tests): avoid relying on nan payload bits in stereo test (#25)
6922e19 chore: add licensing info to files that lacked it previously
38bc7ec refactor: minor consolidations, test to preserve current state
563a1b5 fix: improve cargo.toml
efc6f4e fix(ui): exactly three significant digits within tooltips
233beec chore: migrate from iced_layershell to iced_exwlshell

openmeters 1.14.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 08:11
cb0caa3

What Changed?

This is another minor release consisting primarily of numerical improvements. Monitor selection and fallback behavior was improved, as noted in #24. Spectrum labels now displace grid lines where they overlap, which improves readability. Other internal improvements have taken place as well. Thank you for sticking around, and for 200 stars on GitHub!

Changelog

cb0caa3 chore: update deps, bump version
4e70222 fix(ui): stabilize bar monitor hotplug recovery
073158c feat: automatic monitor selection, default behavior changes
7521c15 feat(spectrum): improve grid label visibility with knockout boxes
16b0e1c refactor(spectrum): clarify rendering layout, cull magic numbers
4dd16f2 docs: removed dead link to nonexistent notes section
ea76406 fix: prevent unbounded allocation in dsp processors without impeding on the user's ability to hand write configs.
14da97a refactor: clean up.
40d507c fix: improve dsp precision and oscilloscope triggering
82f0ab6 feat: correctness and numerical-precision improvements
31bba56 refactor: minor config internal cleanup
fd35e74 refactor: make previous commit a bit nicer to read
34d183d refactor: remove iced_layershell patch as upstream now supports the old functionality provided by my fork
89604bf refactor: simplify internal invariants and processing paths
ac14379 refactor: housekeeping

openmeters 1.13.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 23:09
13f64c8

Changelog

13f64c8 chore: update deps
baee537 perf: track quiescence and processor state, eliminate idle CPU usage
1ed0da2 refactor: remove unused arbitrary indev handling
4718346 tests: refactor some old tests, remove redundant test that should not have existed
58e2b30 refactor: minor allocation fixes
0c6e679 perf: streamline dsp and rendering hot paths
c7e7bc8 refactor: simplifications and redundancy reductions
8f09203 docs: update readme with a FAQ section

openmeters 1.12.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 19:13
ca454d8

Changelog

ca454d8 chore: bump deps, version 1.12.1
8715154 fix(spectrum): large bar count could cause unbounded allocation and iteration
e2c7768 refactor: minor simplifications
58a013f refactor(spectrogram): compact CPU and GPU history handling
ced77b7 refactor(visuals): consolidate state and SDF rendering
1ed0af1 refactor(visuals): reuse CPU analysis buffers
1f11e12 refactor(ui): simplify window and visual pane state
b904a99 refactor(settings): flatten visual settings and theme persistence
ecc3dc0 refactor(pipewire): flatten graph, stream, and transport state
f9ffc31 refactor(routing): share serialized capture identities
cd24b69 refactor(util): consolidate audio and color helpers
a8dd489 perf: CPU time, PSS
bfe7c2b perf: spectrum optimizations
a856d2d docs: update readme
4aaa4c0 perf(spectrogram): build classic columns directly
b77a54b perf: micro optimization in pcm handling
965913e fix(spectrogram): avoid unnecessary allocation
d4a3517 perf(spectrogram): various improvements, 14-25% speedup
84e779e tests: remove redundant heartbeat wrapper