diff --git a/src/nodes/node_conf.rs b/src/nodes/node_conf.rs index fa66d6f..5c40144 100644 --- a/src/nodes/node_conf.rs +++ b/src/nodes/node_conf.rs @@ -356,11 +356,11 @@ impl NodeConfigurator { &mut self, params: &[(ParamId, f32)], atoms: &[(ParamId, SAtom)]) { for (param_id, val) in params.iter() { - self.param_values.insert(*param_id, *val); + self.set_param(*param_id, (*val).into()); } for (param_id, val) in atoms.iter() { - self.atom_values.insert(*param_id, val.clone()); + self.set_param(*param_id, val.clone()); } } diff --git a/tests/basics.rs b/tests/basics.rs index be38e07..6515d44 100644 --- a/tests/basics.rs +++ b/tests/basics.rs @@ -1159,3 +1159,43 @@ fn check_node_sampl_1() { let fft = run_and_get_fft4096(&mut node_exec, 800, 20.0); assert_eq!(fft[0], (7127, 1029)); } + +#[test] +fn check_node_sampl_reload() { + { + let (node_conf, mut node_exec) = new_node_engine(); + let mut matrix = Matrix::new(node_conf, 3, 3); + + let smpl = NodeId::Sampl(0); + let out = NodeId::Out(0); + matrix.place(0, 0, Cell::empty(smpl) + .out(None, None, smpl.out("sig"))); + matrix.place(0, 1, Cell::empty(out) + .input(out.inp("ch1"), None, None)); + matrix.sync().unwrap(); + + let sample_p = smpl.inp_param("sample").unwrap(); + let freq_p = smpl.inp_param("freq").unwrap(); + matrix.set_param(sample_p, SAtom::audio_unloaded("tests/sample_sin.wav")); + + hexodsp::save_patch_to_file(&mut matrix, "check_matrix_serialize.hxy") + .unwrap(); + } + + { + let (node_conf, mut node_exec) = new_node_engine(); + let mut matrix = Matrix::new(node_conf, 3, 3); + + hexodsp::load_patch_from_file( + &mut matrix, "check_matrix_serialize.hxy").unwrap(); + + + let (rms, min, max) = run_and_get_l_rms_mimax(&mut node_exec, 50.0); + assert_float_eq!(rms, 0.505); + assert_float_eq!(min, -0.9998); + assert_float_eq!(max, 1.0); + + let fft = run_and_get_fft4096(&mut node_exec, 800, 20.0); + assert_eq!(fft[0], (441, 940)); + } +}