26 lines
875 B
Python
26 lines
875 B
Python
"""PeakBar — a thin live amplitude indicator (see backend/peaklevel.py). Shows
|
|
whether audio is actually reaching the mix, independent of the volume slider
|
|
above it, so a silent app/device reads differently from one that's just quiet:
|
|
a stuck/crashed stream or a bad route shows a flat bar even at 100% volume."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import gi
|
|
|
|
gi.require_version("Gtk", "4.0")
|
|
from gi.repository import Gtk # noqa: E402
|
|
|
|
|
|
class PeakBar:
|
|
def __init__(self) -> None:
|
|
self.widget = Gtk.LevelBar()
|
|
self.widget.add_css_class("sb-peakbar")
|
|
self.widget.set_min_value(0.0)
|
|
self.widget.set_max_value(1.0)
|
|
self.widget.set_value(0.0)
|
|
self.widget.set_size_request(-1, 6)
|
|
self.widget.set_hexpand(True)
|
|
|
|
def set_level(self, level: float) -> None:
|
|
self.widget.set_value(max(0.0, min(1.0, level)))
|