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.
Checked features are implemented, unchecked features are planned. If you have ideas for more features, please feel free to open an issue/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
- 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
-
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:
cargo build -r ./target/release/openmeters
or run it directly with Cargo:
cargo run
ctrl+shift+h: Show/hide top barp: Pause/resume audio captureqtwice: Quit applicationctrl+space: Pop-out/in hovered visual.
ctrl+zoom in/out: Zoom verticallymiddle click+drag: Pan vertically
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.
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)
