firefly_audio/
processor.rsuse crate::*;
use alloc::vec::Vec;
pub type Nodes = Vec<Node>;
pub trait Processor {
fn set(&mut self, _param: u8, _val: f32) {
}
fn reset(&mut self) {
}
fn process_children(&mut self, cn: &mut Nodes) -> Option<Frame> {
let mut sum = Frame::zero();
let mut count = 0;
for node in cn.iter_mut() {
let Some(frame) = node.next_frame() else {
continue;
};
sum = sum + &frame;
count += 1;
}
if count == 0 {
return None;
}
let f = sum / count as f32;
self.process_frame(f)
}
fn process_frame(&mut self, f: Frame) -> Option<Frame> {
let left = self.process_sample(f.left)?;
let right = match f.right {
Some(right) => {
let right = self.process_sample(right)?;
Some(right)
}
None => None,
};
Some(Frame { left, right })
}
fn process_sample(&mut self, s: Sample) -> Option<Sample> {
Some(s)
}
}