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
//! # Noise
//! 
//! A white noise generator.

use super::*;
use rand;

#[derive(Default,Clone)]
/// Struct for generating white noise audio samples.
pub struct Noise {
    engine: rand::rngs::ThreadRng,
}

impl Noise {
    /// Creates a new white noise generator.
    pub fn new() -> Self {
        Noise{
            engine: rand::thread_rng()
        }
    }
}

impl Generator for Noise {
    fn process(&mut self) -> SampleT {
        use rand::Rng;

        self.engine.gen::<SampleT>()*2.0-1.0
    }
}