finished Ad graph
This commit is contained in:
parent
e13cf0834e
commit
8ee47a7eac
2 changed files with 25 additions and 2 deletions
|
@ -62,6 +62,8 @@ pub trait GraphAtomData {
|
||||||
fn get(&self, param_idx: u32) -> Option<SAtom>;
|
fn get(&self, param_idx: u32) -> Option<SAtom>;
|
||||||
fn get_denorm(&self, param_idx: u32) -> f32;
|
fn get_denorm(&self, param_idx: u32) -> f32;
|
||||||
fn get_norm(&self, param_idx: u32) -> f32;
|
fn get_norm(&self, param_idx: u32) -> f32;
|
||||||
|
fn get_phase(&self) -> f32;
|
||||||
|
fn get_led(&self) -> f32;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type GraphFun = Box<dyn FnMut(&dyn GraphAtomData, bool, f32) -> f32>;
|
pub type GraphFun = Box<dyn FnMut(&dyn GraphAtomData, bool, f32) -> f32>;
|
||||||
|
|
|
@ -241,10 +241,31 @@ impl DspNode for Ad {
|
||||||
let ashp_idx = NodeId::Ad(0).inp_param("ashp").unwrap().inp();
|
let ashp_idx = NodeId::Ad(0).inp_param("ashp").unwrap().inp();
|
||||||
let dshp_idx = NodeId::Ad(0).inp_param("dshp").unwrap().inp();
|
let dshp_idx = NodeId::Ad(0).inp_param("dshp").unwrap().inp();
|
||||||
|
|
||||||
|
let atk = gd.get_norm(atk_idx as u32);
|
||||||
|
let dcy = gd.get_norm(dcy_idx as u32);
|
||||||
let ashp = gd.get_denorm(ashp_idx as u32);
|
let ashp = gd.get_denorm(ashp_idx as u32);
|
||||||
|
let dshp = gd.get_denorm(dshp_idx as u32);
|
||||||
|
|
||||||
let v = sqrt4_to_pow4(x * gd.get_norm(atk_idx as u32), ashp);
|
let a = atk * 0.5;
|
||||||
v
|
let d = dcy * 0.5;
|
||||||
|
if x <= a {
|
||||||
|
if a < 0.0001 {
|
||||||
|
0.0
|
||||||
|
} else {
|
||||||
|
let delta = 1.0 - ((a - x) / a);
|
||||||
|
sqrt4_to_pow4(delta, ashp)
|
||||||
|
}
|
||||||
|
} else if (x - a) <= d {
|
||||||
|
if d < 0.0001 {
|
||||||
|
0.0
|
||||||
|
} else {
|
||||||
|
let x = x - a;
|
||||||
|
let delta = ((d - x) / d);
|
||||||
|
sqrt4_to_pow4(delta, dshp)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue