sfxr 0.1.4

Reimplementation of DrPetter's 'sfxr' sound effect generator
Documentation
extern crate sfxr;
extern crate sdl2;
extern crate rand;

use sdl2::audio::{AudioCallback, AudioSpecDesired};
use std::time::Duration;
use rand::rngs::SmallRng;
use rand::{RngCore, FromEntropy};

struct Sample {
    generator: sfxr::Generator
}

impl AudioCallback for Sample {
    type Channel = f32;

    fn callback(&mut self, out: &mut [f32]) {
        self.generator.generate(out)
    }
}
fn main() {
    let sdl_context = sdl2::init().unwrap();
    let audio_subsystem = sdl_context.audio().unwrap();

    let desired_spec = AudioSpecDesired {
        freq: Some(44_100),
        channels: Some(1),
        samples: None
    };

    let mut sample = sfxr::Sample::new();
    sample.mutate(Some(SmallRng::from_entropy().next_u64()));
    let generator = sfxr::Generator::new(sample);

    let device = audio_subsystem.open_playback(None, &desired_spec, |_spec| {
        Sample { generator }
    }).unwrap();

    device.resume();
    std::thread::sleep(Duration::from_millis(1_000));
}