device: add RMSMeter

This commit is contained in:
🪞👃🪞 2025-05-10 21:44:27 +03:00
parent 4127c141cc
commit 2ef9628ab8
2 changed files with 18 additions and 1 deletions

View file

@ -19,8 +19,9 @@ winit = { workspace = true, optional = true }
default = [ "clock", "editor", "sequencer", "sampler", "lv2" ]
clock = []
editor = []
meter = []
sequencer = [ "clock", "uuid" ]
sampler = [ "symphonia", "wavers" ]
sampler = [ "meter", "symphonia", "wavers" ]
lv2 = [ "livi", "winit" ]
vst2 = []
vst3 = []

View file

@ -0,0 +1,16 @@
use crate::*;
#[derive(Debug, Default, Clone)]
pub struct RMSMeter(f32);
impl RMSMeter {
pub fn set (&mut self, samples: &[u32]) {
let sum: usize = samples.iter().map(|s|*s as usize).reduce(|sum, sample|sum + sample)
.unwrap_or(0);
self.0 = (sum as f32 / samples.len() as f32).sqrt();
}
}
render!(TuiOut: |self: RMSMeter, to| {
let [x, y, w, h] = to.area();
});