diff --git a/src/cli/cli.rs b/src/cli/cli.rs index 38b834e..8745204 100644 --- a/src/cli/cli.rs +++ b/src/cli/cli.rs @@ -29,7 +29,7 @@ use nom_locate::{LocatedSpan, position}; use strum::{EnumDiscriminants, EnumString, IntoDiscriminant, IntoStaticStr}; use thiserror::Error; -const DEFAULT_INSTRUMENT: &str = "sin(2*pi()*(442+442*((n+1)/N))*t)"; +const DEFAULT_INSTRUMENT: &str = "sin(2*pi()*(442*2^((n+1)/N))*t)"; const DEFAULT_LENGTH: &str = "2^(2-log(2, l))*(60/T)"; #[derive(Debug, Parser)] diff --git a/src/cli/main.rs b/src/cli/main.rs index dd15702..91ee81d 100644 --- a/src/cli/main.rs +++ b/src/cli/main.rs @@ -97,8 +97,9 @@ fn parse_and_compile(opts: &PlayOpts) -> anyhow::Result> { opts.slopes() .map(|(s, (v, e))| (s, VariableChange(*v, e.clone()))) .collect::>(), - opts.variables() - .chain(HashMap::from(default_variables).iter()) + HashMap::from(default_variables) + .iter() + .chain(opts.variables()) .map(|(v, _)| *v) .collect::>(), ); @@ -118,9 +119,10 @@ fn parse_and_compile(opts: &PlayOpts) -> anyhow::Result> { let compiler = Compiler::from(Context::new( 'L'.to_string(), 'n'.to_string(), - opts.variables() - .map(|(a, b)| (a.to_string(), *b)) - .chain(default_variables.map(|(c, v)| (c.to_string(), v))), + default_variables + .map(|(c, v)| (c.to_string(), v)) + .into_iter() + .chain(opts.variables().map(|(a, b)| (a.to_string(), *b))), opts.instrument().clone(), opts.slopes() .map(|(_, (a, b))| (a.to_string(), b.clone()))