OpenMeters is a fast and simple audio metering application for Linux, built with Rust and PipeWire. It's in active development, so expect bugs and broken configurations. I'm always open to feedback and bug reports, so feel free to open issues.
Checked items are implemented; unchecked items are planned. If you have ideas for more features, please feel free to open an issue or pull request!
- Per-application capture
- Per-device capture
- Pop-out windows for individual visuals
- Adjustable background color & opacity
- Ability to enable/disable window decorations
- loudness
- LUFS (ITU-R BS.1770-5)
- Short-term
- Momentary
- RMS
- Fast
- Slow
- True Peak
- LUFS (ITU-R BS.1770-5)
- oscilloscope
- Channel selection (L, R, L+R)
- 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
- Piano roll overlay
- Ability to zoom & pan vertically
- Mel, log, and linear scales
- Adjustable colormap
- spectrum analyzer
- Peak frequency label
- Averaging modes
- Exponential
- Peak hold
- None
- Mel, log, and linear scales
- Bar mode
- Adjustable colormap
- stereometer (X/Y vector scope, M/S goniometer)
- Correlation meter
- Single or multi-band
- Adjustable time window
- 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
- Correlation meter
- waveform
- Channel selection (L, R, L+R)
- Adjustable scroll speed
- Adjustable colormap
-
You'll need a graphical Linux system with PipeWire installed and running.
-
Ensure you have a working Rust toolchain. The recommended way is via rustup.
-
Clone the repository:
git clone https://github.com/httpsworldview/openmeters/ cd openmeters -
Build and run the application in release mode:
cargo build -r ./target/release/openmeters
or run it directly with Cargo:
cargo run -r
ctrl+shift+h: Show/hide global configuration drawerp: Pause/resume rendering.qtwice: Quit the application.ctrl+space: Move a hovered visual to a new window, or back to the main window.
ctrl+scroll up/down: Zoom verticallymiddle click+drag: Pan vertically
- Configurations are saved to
~/.config/openmeters/settings.json. - Invalid JSON will be ignored and default settings will be used instead. Your configuration file will not be overwritten unless you change settings in the GUI.
- The internal structure of this file will likely change often during development, so be aware that your settings may be reset inexplicably after updates. As this project grows, I will try to maintain backwards compatibility as much as possible, but no guarantees are made. The public API for settings is mostly stable as of now, so breaking changes should be infrequent.
- If you encounter a bug that causes OpenMeters to misbehave, the application settings can be reset by deleting this file.
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.
- 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/)
- 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)
