1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::{basic_reverb::BasicReverb, mean::mean};

pub struct MonoBasicReverb {
    basic_reverb: BasicReverb,
}

impl MonoBasicReverb {
    pub fn new(
        room_size_ms: f64,
        rt60: f64,
        dry: f64,
        wet: f64,
        channels: u32,
        sample_rate: u32,
    ) -> Self {
        Self {
            basic_reverb: BasicReverb::new(
                room_size_ms,
                rt60,
                dry,
                wet,
                channels as usize,
                sample_rate,
            ),
        }
    }

    pub fn process_sample(&mut self, sample: f64) -> f64 {
        let channels = self.basic_reverb.channels;
        let resized_input = vec![sample; channels];
        let output = self.basic_reverb.process(resized_input);
        mean(&output)
    }
}