GitHub - httpsworldview/openmeters: Fast and professional audio metering/visualization for Linux.

4 min read Original article ↗

Preview

OpenMeters is a fast and professional audio metering application for Linux, built with Rust and PipeWire.

Features

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!

General

  • Bar mode
    • Places the application at the top or bottom of the screen, spanning the entire width.
    • (requires a Wayland compositor, unavailable on X11 as of now)
  • 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
    • Channel selection (L, R, L+R)
    • Stable mode - Estimates the fundamental pitch of a given signal and autocorrelates it against a reference signal to find a stable trigger point.
      • Ability to select the number of cycles to display (1-4)
    • Free-run mode - A more traditional oscilloscope with a robust zero-crossing trigger. Suitable for simple signals, but will jitter with complex and rapidly changing material.
  • spectrogram
    • Spectral reassignment for exceptionally sharp time and frequency resolution.
    • Note & frequency tool tips
    • Piano roll overlay
    • Ability to zoom & pan vertically
    • Mel, log, and linear scales
    • Adjustable color map
  • spectrum analyzer
    • A-weighting
    • Peak frequency label
    • Averaging modes
      • Exponential
      • Peak hold
      • None
    • Mel, log, and linear scales
    • Bar mode
    • Adjustable color map
  • 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
    • Grid overlay
  • waveform
    • Channel selection (L, R, L+R)
    • Adjustable scroll speed
    • Adjustable color map
      • Based on frequency
      • Based on Loudness
      • A single static color.

Installation

On Arch Linux (and Arch-based distributions)

Install the openmeters-git package via the AUR.

Building from source (Other distributions)

  1. You'll need a graphical Linux system with PipeWire installed and running.

  2. Ensure you have a working Rust toolchain. The recommended way is via rustup.

  3. Clone the repository:

    git clone https://github.com/httpsworldview/openmeters/
    cd openmeters
  4. Build and run the application in release mode:

    cargo build -r
    ./target/release/openmeters

    or run it directly with Cargo:

Usage & key binds

Global

  • ctrl+shift+h: Show/hide global configuration drawer
  • p: Pause/resume rendering.
  • q twice: Quit the application.
  • ctrl+space: Move a hovered visual to a new window, or back to the main window.

Spectrogram

  • ctrl+scroll up/down: Zoom vertically
  • middle click+drag: Pan vertically

Configuration

  • 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. Please consider reporting any such bugs you encounter.

Contributing

Please see CONTRIBUTING.md for guidelines on how to contribute to this project, and how one might get started. No matter what you have to offer, I greatly appreciate you and your interest in contributing to this project. Every bit helps.

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 reach out to me.

Inspiration

Libraries used

License

OpenMeters is licensed under the GNU General Public License v3.0. See LICENSE for more details.