1extern crate audact;
2extern crate rand;
3
4use audact::notes::std_note_freq;
5use audact::system::{Audact, ProcessingBuilder, Wave};
6use rand::Rng;
7use std::iter;
8use std::time::Duration;
9
10fn main() {
11 let seq_len = 16;
12
13 let mut audact = Audact::new(seq_len, 100, 4f32);
14
15 let mut rng = rand::thread_rng();
16
17 let seq: Vec<f32> = (0..(seq_len as f32 / 4f32) as usize)
18 .map(|_| iter::repeat(std_note_freq(rng.gen_range(-12, 12))).take(4))
19 .flat_map(|x| x)
20 .collect();
21
22 let processing = ProcessingBuilder::default()
23 .attack(Duration::from_millis(300u64))
24 .reverb((Duration::from_millis(200), 0.8f32))
25 .build()
26 .unwrap();
27
28 audact.channel(Wave::Sine, 0.3f32, processing, seq);
30
31 audact.start(4);
32}