summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorGraham Northup <grissess@nexusg.org>2017-09-24 03:41:45 -0400
committerGraham Northup <grissess@nexusg.org>2017-09-24 03:41:45 -0400
commit7eef21b3b90898f4ef05fa4220fde608cf55c6ab (patch)
treedb09a752bef57a5b6eb6040048ed1fdf66ab5043 /src/main.rs
parent3d370b9a980d88f884ddd87b62bc785c3b963e1d (diff)
parser appears to work (oh my)
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs22
1 files changed, 4 insertions, 18 deletions
diff --git a/src/main.rs b/src/main.rs
index c284820..7f8e14e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,32 +2,18 @@ use std::io;
use std::io::*;
extern crate rand;
-use rand::{Rng, SeedableRng};
extern crate synfone;
use synfone::synth::*;
+use synfone::lang::*;
const FRAMES: usize = 44100 * 2;
+const GEN: &'static str = "add(mul(sine(param('freq', 440)), 0.5), mul(sine(param('freq2', 660)), 0.5))";
+
fn main() {
let mut params = Parameters::default();
- //let mut freq: GenBox = Box::new(Param { name: "freq".to_string(), default: 440.0, buf: SampleBuffer::new(1) });
- //let mut sg: GenBox = Box::new(Saw { freq: freq, phase: 0.0, buf: SampleBuffer::new(params.env.default_buffer_size) });
- let mut osrng = rand::os::OsRng::new().expect("Couldn't initialize OS RNG");
- let mut seed: [u32; 4] = Default::default();
- for i in seed.iter_mut() {
- *i = osrng.next_u32();
- }
- let mut sg: GenBox = Box::new(Noise { rng: rand::XorShiftRng::from_seed(seed), buf: SampleBuffer::new(params.env.default_buffer_size) });
-
- let mut freq2: GenBox = Box::new(Param { name: "freq2".to_string(), default: 660.0, buf: SampleBuffer::new(1) });
- let mut sg2: GenBox = Box::new(Sine { freq: freq2, phase: 0.0, buf: SampleBuffer::new(params.env.default_buffer_size) });
-
- let mut half1: GenBox = Box::new(Param { name: "half".to_string(), default: 1.0, buf: SampleBuffer::new(1) });
- let mut half2: GenBox = Box::new(Param { name: "half".to_string(), default: 0.0, buf: SampleBuffer::new(1) });
- let mut sc1: GenBox = Box::new(Mul { factors: vec![sg, half1], buf: SampleBuffer::new(params.env.default_buffer_size) });
- let mut sc2: GenBox = Box::new(Mul { factors: vec![sg2, half2], buf: SampleBuffer::new(params.env.default_buffer_size) });
- let mut gen: GenBox = Box::new(Add { terms: vec![sc1, sc2], buf: SampleBuffer::new(params.env.default_buffer_size) });
+ let mut gen = Parser::new(Tokenizer::new(GEN.chars())).expect("Failed to get first token").parse().expect("Failed to compile generator");
let mut counter = 0;
let mut out = io::stdout();