OpenMeters
Above is an early preview and thus may not represent the current state of the application. Build it yourself to see where it currently stands.
OpenMeters is a fast and simple audio metering application for Linux, built with Rust and PipeWire.
roadmap
features
Checked features are implemented, unchecked features are planned. If you have ideas for more features, please feel free to open an issue/pull request!
general
- Per-application capture
- Per-device capture
- Pop-out windows for individual visuals
- Adjustable background color & opacity
- Ability to enable/disable window decorations
visuals
-
loudness
-
LUFS (ITU-R BS.1770-5)
-
Short-term
-
Momentary
-
RMS
-
Fast
-
Slow
-
True Peak
-
oscilloscope
-
Stable mode - Follows X cycl…
OpenMeters
Above is an early preview and thus may not represent the current state of the application. Build it yourself to see where it currently stands.
OpenMeters is a fast and simple audio metering application for Linux, built with Rust and PipeWire.
roadmap
features
Checked features are implemented, unchecked features are planned. If you have ideas for more features, please feel free to open an issue/pull request!
general
- Per-application capture
- Per-device capture
- Pop-out windows for individual visuals
- Adjustable background color & opacity
- Ability to enable/disable window decorations
visuals
-
loudness
-
LUFS (ITU-R BS.1770-5)
-
Short-term
-
Momentary
-
RMS
-
Fast
-
Slow
-
True Peak
-
oscilloscope
-
Stable mode - Follows X cycles of the fundamental.
-
Free-run mode - Scrolls continuously through time, not triggered.
-
spectrogram
-
Reassignment and synchrosqueezing (sharper frequency resolution)
-
Note & frequency tooltips
-
mel, log, and linear scales
-
Adjustable colormap
-
spectrum analyzer
-
peak frequency label
-
averaging modes
-
exponential
-
peak hold
-
none
-
mel, log, and linear scales
-
Adjustable colormap
-
stereometer (X/Y vector scope, M/S goniometer)
-
Correlation meter
-
Two visual modes:
-
Lissajous (draws lines between samples)
-
Dot cloud (plots samples as points)
-
Ability to flip L/R channels (for M/S monitoring)
-
Adjustable scale (linear/exponential)
-
Adjustable rotation
-
waveform
-
adjustable scroll speed
-
Adjustable colormap
build and run
Ensure you have a working Rust toolchain. The recommended way is via rustup. 1.
Clone the repository:
git clone https://github.com/httpsworldview/openmeters/
cd openmeters
Build and run the application:
cargo build -r
./target/release/openmeters
or run it directly with Cargo:
cargo run
usage
Upon launch you’ll see a configuration page. Here you can select which applications or devices to monitor, the modules you want to display, and some global settings (window decorations, global background color, etc.). By default, we monitor applications.
keybinds
ctrl+shift+h: Show/hide top barp: Pause/resume audio captureqtwice: Quit applicationctrl+space: Pop-out/in hovered visual.
configuration
Configurations are saved to ~/.config/openmeters/settings.json. If you want to use settings/values not listed in the GUI, you can edit this file directly, however absurd values often lead to crashes. Invalid values will be replaced with defaults on load, or when saved. If you encounter a bug that causes OpenMeters to misbehave, you can delete settings.json to reset everything, or change the problematic setting manually.
credits
Thank you for checking out my shitty passion project. If you think OpenMeters is useful, please consider starring the repository and sharing it with others. I appreciate any and all criticism and feedback, so feel free to open issues or reach out to me.
inspiration
- EasyEffects (https://github.com/wwmm/easyeffects) for being a great source of inspiration and for their excellent work in audio processing. Reading through their codebase taught me a lot about PipeWire.
- MiniMeters (https://minimeters.app/) for inspiring this entire project and for doing it better than I ever could. If you can, please support their work!
- Ardura’s Scrolloscope (https://github.com/ardura/Scrollscope)
- Tim Strasser’s Oszilloskop (https://github.com/timstr/oszilloskop)
- Audacity (https://www.audacityteam.org/)
libraries used
- Iced (https://github.com/iced-rs/iced)
- RustFFT (https://github.com/ejmahler/RustFFT)
- RealFFT (https://github.com/HEnquist/realfft)
- wgpu (https://github.com/gfx-rs/wgpu)