sketch out mod amount changes
This commit is contained in:
parent
870cc3f858
commit
b48d423b5a
2 changed files with 45 additions and 24 deletions
|
@ -427,6 +427,34 @@ impl NodeExecutor {
|
||||||
|
|
||||||
let ctx_idx = op.idx as usize * 2;
|
let ctx_idx = op.idx as usize * 2;
|
||||||
|
|
||||||
|
/* MOD AMOUNT APPLYING PSEUDO CODE:
|
||||||
|
|
||||||
|
for (amt, range, modbuf, outbuf, inpbuf) in
|
||||||
|
prog.mod[mod.0..mod.1].iter()
|
||||||
|
{
|
||||||
|
match range {
|
||||||
|
ModRange::Bipol => {
|
||||||
|
for frame in 0..ctx.nframes() {
|
||||||
|
modbuf.write(frame,
|
||||||
|
modbuf.read(frame)
|
||||||
|
* ((outbuf.read(frame) + 1.0) * 0.5)
|
||||||
|
.clamp(0.0, 1.0)
|
||||||
|
+ inpbuf.read(frame));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ModRange::Unipol => {
|
||||||
|
for frame in 0..ctx.nframes() {
|
||||||
|
modbuf.write(frame,
|
||||||
|
modbuf.read(frame)
|
||||||
|
* outbuf.read(frame).clamp(0.0, 1.0)
|
||||||
|
+ inpbuf.read(frame));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
nodes[op.idx as usize]
|
nodes[op.idx as usize]
|
||||||
.process(
|
.process(
|
||||||
ctx,
|
ctx,
|
||||||
|
|
|
@ -164,44 +164,32 @@ impl NodeProg {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.prog.push(node_op);
|
self.prog.push(node_op);
|
||||||
|
// TODO: MOD AMOUNT:
|
||||||
|
// self.mods.push(Option<Vec<(f32, sigtype,
|
||||||
|
// ProcBuf,
|
||||||
|
// ProcBuf,
|
||||||
|
// ProcBuf)>>)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: MOD AMOUNT CHANGE:
|
||||||
pub fn append_edge(
|
pub fn append_edge(
|
||||||
&mut self,
|
&mut self,
|
||||||
node_op: NodeOp,
|
node_op: NodeOp,
|
||||||
inp_index: usize,
|
inp_index: usize,
|
||||||
out_index: usize)
|
out_index: usize) // mod_amt: Option<(f32, sigtype)>
|
||||||
{
|
{
|
||||||
|
// If we have a modulation:
|
||||||
|
// self.mod_bufs.push(ProcBuf::new())
|
||||||
|
// modbuf_idx = self.mod_bufs.len();
|
||||||
for n_op in self.prog.iter_mut() {
|
for n_op in self.prog.iter_mut() {
|
||||||
if n_op.idx == node_op.idx {
|
if n_op.idx == node_op.idx {
|
||||||
n_op.inputs.push((out_index, inp_index));
|
n_op.inputs.push((out_index, inp_index
|
||||||
|
/* Option<(f32, sigtype, modbuf_idx>*/));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn append_with_inputs(
|
|
||||||
&mut self,
|
|
||||||
mut node_op: NodeOp,
|
|
||||||
inp1: Option<(usize, usize)>,
|
|
||||||
inp2: Option<(usize, usize)>,
|
|
||||||
inp3: Option<(usize, usize)>)
|
|
||||||
{
|
|
||||||
for n_op in self.prog.iter_mut() {
|
|
||||||
if n_op.idx == node_op.idx {
|
|
||||||
if let Some(inp1) = inp1 { n_op.inputs.push(inp1); }
|
|
||||||
if let Some(inp2) = inp2 { n_op.inputs.push(inp2); }
|
|
||||||
if let Some(inp3) = inp3 { n_op.inputs.push(inp3); }
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(inp1) = inp1 { node_op.inputs.push(inp1); }
|
|
||||||
if let Some(inp2) = inp2 { node_op.inputs.push(inp2); }
|
|
||||||
if let Some(inp3) = inp3 { node_op.inputs.push(inp3); }
|
|
||||||
self.prog.push(node_op);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn initialize_input_buffers(&mut self) {
|
pub fn initialize_input_buffers(&mut self) {
|
||||||
for param_idx in 0..self.params.len() {
|
for param_idx in 0..self.params.len() {
|
||||||
let param_val = self.params[param_idx];
|
let param_val = self.params[param_idx];
|
||||||
|
@ -262,8 +250,13 @@ impl NodeProg {
|
||||||
input_bufs[inp.0..inp.1]
|
input_bufs[inp.0..inp.1]
|
||||||
.copy_from_slice(&self.inp[inp.0..inp.1]);
|
.copy_from_slice(&self.inp[inp.0..inp.1]);
|
||||||
|
|
||||||
|
// TODO: self.mods.clear() (ProcBufs are in modbufs)
|
||||||
|
|
||||||
// Second step (assign outputs):
|
// Second step (assign outputs):
|
||||||
for io in op.inputs.iter() {
|
for io in op.inputs.iter() {
|
||||||
|
// TODO: MOD AMOUNT: take from mod_bufs assign to input_bufs,
|
||||||
|
// add entry to self.mods???? we need indices...?!
|
||||||
|
// Create mods entries which contain all the info for node_exec.
|
||||||
input_bufs[io.1] = out_bufs[io.0];
|
input_bufs[io.1] = out_bufs[io.0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue