mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
device: add RMSMeter
This commit is contained in:
parent
4127c141cc
commit
2ef9628ab8
2 changed files with 18 additions and 1 deletions
16
crates/device/src/meter.rs
Normal file
16
crates/device/src/meter.rs
Normal 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();
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue