module

Obsctl::TUI::Meter

The level maths the audio mixer is drawn from.

Kept out of the widget because the model records peak holds in the same units the meter is scaled in, and the model must not depend on a widget.

Constants

CLIP_DB = -1.0

Close enough to full scale to call it clipping.

DANGER_DB = -9.0
FLOOR_DB = -60.0

Everything quieter than this reads as silence. OBS' own mixer bottoms out at -60 dBFS, so a channel that looks dead here looks dead there.

PEAK_FALL_PER_FRAME = 0.006

How much of the meter the peak marker falls per frame. At the default 100 ms refresh a peak takes about two seconds to slide from the top to the floor, which is slow enough to read and quick enough to keep up.

WARNING_DB = -20.0

OBS colours a meter green up to -20 dBFS, yellow to -9, red above it.

Instance methods

decibels(level : Float64) : Float64
Source
fraction(level : Float64) : Float64

Where a level sits on the meter, 0 at the floor and 1 at full scale.

Source
fraction_decibels(fraction : Float64) : Float64

The inverse: what a point on the meter is worth in dBFS. Used to colour a cell by the level it stands for rather than by its position.

Source