|
|
|
@ -275,6 +275,292 @@ fn check_node_fvafilt_ladder_1000hz() {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn check_node_fvafilt_ladder_hp() { |
|
|
|
|
let (mut matrix, mut node_exec) = setup_fvafilt_matrix(); |
|
|
|
|
|
|
|
|
|
let va = NodeId::FVaFilt(0); |
|
|
|
|
|
|
|
|
|
pset_s(&mut matrix, va, "ftype", 0); |
|
|
|
|
pset_s(&mut matrix, va, "lmode", 5); |
|
|
|
|
pset_d(&mut matrix, va, "freq", 4000.0); |
|
|
|
|
pset_d(&mut matrix, va, "res", 0.0); |
|
|
|
|
pset_d(&mut matrix, NodeId::Out(0), "vol", 4.0); |
|
|
|
|
pset_d_wait(&mut matrix, &mut node_exec, va, "drive", 1.0); |
|
|
|
|
|
|
|
|
|
// 12dB HP
|
|
|
|
|
let out = fftr512_now_peaks(&mut node_exec, 3, 7); |
|
|
|
|
assert_vis_fft!( |
|
|
|
|
&out[0..40], |
|
|
|
|
[ |
|
|
|
|
(2929, 9), |
|
|
|
|
(3015, 9), |
|
|
|
|
(3101, 12), |
|
|
|
|
(3359, 12), |
|
|
|
|
(3445, 9), |
|
|
|
|
(3618, 9), |
|
|
|
|
(3704, 9), |
|
|
|
|
(3790, 12), |
|
|
|
|
(3876, 12), |
|
|
|
|
(3962, 15), |
|
|
|
|
(4048, 9), |
|
|
|
|
(4134, 9), |
|
|
|
|
(4221, 9), |
|
|
|
|
(4307, 18), |
|
|
|
|
(4393, 12), |
|
|
|
|
(4479, 9), |
|
|
|
|
(4565, 9), |
|
|
|
|
(4651, 15), |
|
|
|
|
(4737, 12), |
|
|
|
|
(4823, 15), |
|
|
|
|
(4910, 12), |
|
|
|
|
(4996, 15), |
|
|
|
|
(5082, 18), |
|
|
|
|
(5168, 12), |
|
|
|
|
(5254, 18), |
|
|
|
|
(5340, 15), |
|
|
|
|
(5426, 21), |
|
|
|
|
(5513, 12), |
|
|
|
|
(5599, 9), |
|
|
|
|
(5685, 15), |
|
|
|
|
(5771, 15), |
|
|
|
|
(5857, 9), |
|
|
|
|
(5943, 15), |
|
|
|
|
(6029, 24), |
|
|
|
|
(6115, 27), |
|
|
|
|
(6202, 15), |
|
|
|
|
(6288, 24), |
|
|
|
|
(6374, 21), |
|
|
|
|
(6460, 15), |
|
|
|
|
(6546, 18) |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 24dB HP
|
|
|
|
|
pset_s(&mut matrix, va, "lmode", 7); |
|
|
|
|
let out = fftr512_now_peaks(&mut node_exec, 3, 7); |
|
|
|
|
assert_vis_fft!( |
|
|
|
|
&out[0..40], |
|
|
|
|
[ |
|
|
|
|
(4307, 9), |
|
|
|
|
(4996, 9), |
|
|
|
|
(5340, 9), |
|
|
|
|
(5426, 12), |
|
|
|
|
(5513, 12), |
|
|
|
|
(5599, 9), |
|
|
|
|
(5685, 9), |
|
|
|
|
(5771, 9), |
|
|
|
|
(5857, 9), |
|
|
|
|
(5943, 12), |
|
|
|
|
(6029, 9), |
|
|
|
|
(6115, 12), |
|
|
|
|
(6202, 15), |
|
|
|
|
(6288, 9), |
|
|
|
|
(6374, 9), |
|
|
|
|
(6460, 9), |
|
|
|
|
(6546, 15), |
|
|
|
|
(6632, 9), |
|
|
|
|
(6718, 9), |
|
|
|
|
(6804, 15), |
|
|
|
|
(6891, 21), |
|
|
|
|
(6977, 9), |
|
|
|
|
(7063, 9), |
|
|
|
|
(7149, 9), |
|
|
|
|
(7235, 12), |
|
|
|
|
(7321, 12), |
|
|
|
|
(7407, 15), |
|
|
|
|
(7494, 9), |
|
|
|
|
(7580, 18), |
|
|
|
|
(7666, 15), |
|
|
|
|
(7752, 15), |
|
|
|
|
(7838, 15), |
|
|
|
|
(7924, 21), |
|
|
|
|
(8010, 15), |
|
|
|
|
(8096, 18), |
|
|
|
|
(8183, 12), |
|
|
|
|
(8269, 15), |
|
|
|
|
(8355, 9), |
|
|
|
|
(8441, 15), |
|
|
|
|
(8527, 21) |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 24dB HP, res = 1.0
|
|
|
|
|
pset_s(&mut matrix, va, "lmode", 7); |
|
|
|
|
pset_d_wait(&mut matrix, &mut node_exec, va, "res", 1.0); |
|
|
|
|
let out = fftr512_now_peaks(&mut node_exec, 3, 7); |
|
|
|
|
assert_vis_fft!( |
|
|
|
|
&out[0..30], |
|
|
|
|
[ |
|
|
|
|
(3359, 9), |
|
|
|
|
(3445, 9), |
|
|
|
|
(3531, 9), |
|
|
|
|
(3618, 12), |
|
|
|
|
(3704, 21), |
|
|
|
|
(3790, 33), |
|
|
|
|
(3876, 33), |
|
|
|
|
(3962, 33), |
|
|
|
|
(4048, 24), |
|
|
|
|
(4134, 18), |
|
|
|
|
(4221, 15), |
|
|
|
|
(4307, 18), |
|
|
|
|
(4393, 12), |
|
|
|
|
(4479, 12), |
|
|
|
|
(4565, 9), |
|
|
|
|
(4651, 9), |
|
|
|
|
(4737, 12), |
|
|
|
|
(4823, 15), |
|
|
|
|
(4910, 9), |
|
|
|
|
(4996, 12), |
|
|
|
|
(5082, 18), |
|
|
|
|
(5168, 12), |
|
|
|
|
(5254, 12), |
|
|
|
|
(5340, 12), |
|
|
|
|
(5426, 9), |
|
|
|
|
(5513, 15), |
|
|
|
|
(5599, 15), |
|
|
|
|
(5685, 15), |
|
|
|
|
(5771, 18), |
|
|
|
|
(5857, 12) |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn check_node_fvafilt_ladder_bp() { |
|
|
|
|
let (mut matrix, mut node_exec) = setup_fvafilt_matrix(); |
|
|
|
|
|
|
|
|
|
let va = NodeId::FVaFilt(0); |
|
|
|
|
|
|
|
|
|
pset_s(&mut matrix, va, "ftype", 0); |
|
|
|
|
pset_s(&mut matrix, va, "lmode", 8); |
|
|
|
|
pset_d(&mut matrix, va, "freq", 4000.0); |
|
|
|
|
pset_d(&mut matrix, va, "res", 0.8); |
|
|
|
|
pset_d(&mut matrix, NodeId::Out(0), "vol", 4.0); |
|
|
|
|
pset_d_wait(&mut matrix, &mut node_exec, va, "drive", 1.0); |
|
|
|
|
|
|
|
|
|
// 12dB BP
|
|
|
|
|
let out = fftr512_now_peaks(&mut node_exec, 4, 13); |
|
|
|
|
assert_vis_fft!( |
|
|
|
|
out, |
|
|
|
|
[ |
|
|
|
|
(2929, 24), |
|
|
|
|
(3015, 28), |
|
|
|
|
(3101, 36), |
|
|
|
|
(3187, 20), |
|
|
|
|
(3273, 24), |
|
|
|
|
(3359, 40), |
|
|
|
|
(3445, 36), |
|
|
|
|
(3531, 28), |
|
|
|
|
(3618, 28), |
|
|
|
|
(3704, 32), |
|
|
|
|
(3790, 36), |
|
|
|
|
(3876, 40), |
|
|
|
|
(3962, 32), |
|
|
|
|
(4048, 24), |
|
|
|
|
(4134, 20), |
|
|
|
|
(4221, 20), |
|
|
|
|
(4307, 36), |
|
|
|
|
(4393, 24), |
|
|
|
|
(4479, 16), |
|
|
|
|
(4565, 16), |
|
|
|
|
(4651, 20), |
|
|
|
|
(4737, 16), |
|
|
|
|
(4823, 20), |
|
|
|
|
(4996, 16), |
|
|
|
|
(5082, 16), |
|
|
|
|
(5254, 16), |
|
|
|
|
(5426, 16), |
|
|
|
|
(5685, 16), |
|
|
|
|
(6029, 16), |
|
|
|
|
(6115, 20), |
|
|
|
|
(6288, 16), |
|
|
|
|
(7752, 16), |
|
|
|
|
(9130, 16) |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 24dB BP
|
|
|
|
|
pset_s(&mut matrix, va, "lmode", 9); |
|
|
|
|
let out = fftr512_now_peaks(&mut node_exec, 4, 13); |
|
|
|
|
assert_vis_fft!( |
|
|
|
|
out, |
|
|
|
|
[ |
|
|
|
|
(3101, 16), |
|
|
|
|
(3273, 16), |
|
|
|
|
(3359, 20), |
|
|
|
|
(3445, 16), |
|
|
|
|
(3531, 16), |
|
|
|
|
(3876, 16), |
|
|
|
|
(3962, 16), |
|
|
|
|
(4307, 16), |
|
|
|
|
(4393, 16) |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn check_node_fvafilt_ladder_notch() { |
|
|
|
|
let (mut matrix, mut node_exec) = setup_fvafilt_matrix(); |
|
|
|
|
|
|
|
|
|
let va = NodeId::FVaFilt(0); |
|
|
|
|
|
|
|
|
|
pset_s(&mut matrix, va, "ftype", 0); |
|
|
|
|
pset_s(&mut matrix, va, "lmode", 10); |
|
|
|
|
pset_d(&mut matrix, va, "freq", 4000.0); |
|
|
|
|
pset_d(&mut matrix, va, "res", 0.0); |
|
|
|
|
pset_d(&mut matrix, NodeId::Out(0), "vol", 4.0); |
|
|
|
|
pset_d_wait(&mut matrix, &mut node_exec, va, "drive", 1.0); |
|
|
|
|
|
|
|
|
|
// 12dB Notch
|
|
|
|
|
let out = fftr512_now_peaks(&mut node_exec, 4, 13); |
|
|
|
|
assert_vis_fft!( |
|
|
|
|
&out[0..40], |
|
|
|
|
[ |
|
|
|
|
(0, 28), |
|
|
|
|
(86, 24), |
|
|
|
|
(172, 24), |
|
|
|
|
(258, 24), |
|
|
|
|
(345, 36), |
|
|
|
|
(431, 28), |
|
|
|
|
(517, 20), |
|
|
|
|
(603, 24), |
|
|
|
|
(689, 32), |
|
|
|
|
(775, 28), |
|
|
|
|
(861, 24), |
|
|
|
|
(947, 32), |
|
|
|
|
(1034, 24), |
|
|
|
|
(1120, 36), |
|
|
|
|
(1206, 32), |
|
|
|
|
(1292, 16), |
|
|
|
|
(1378, 16), |
|
|
|
|
(1464, 20), |
|
|
|
|
(1550, 16), |
|
|
|
|
(1637, 20), |
|
|
|
|
(1723, 16), |
|
|
|
|
(6029, 16), |
|
|
|
|
(6115, 16), |
|
|
|
|
(6288, 16), |
|
|
|
|
(7063, 16), |
|
|
|
|
(7149, 16), |
|
|
|
|
(7407, 16), |
|
|
|
|
(7580, 16), |
|
|
|
|
(7666, 16), |
|
|
|
|
(7752, 24), |
|
|
|
|
(7838, 20), |
|
|
|
|
(7924, 20), |
|
|
|
|
(8269, 16), |
|
|
|
|
(8355, 16), |
|
|
|
|
(8613, 16), |
|
|
|
|
(8699, 16), |
|
|
|
|
(8786, 20), |
|
|
|
|
(8872, 16), |
|
|
|
|
(8958, 20), |
|
|
|
|
(9044, 24) |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn check_node_fvafilt_svf_lp_1000hz() { |
|
|
|
|
let (mut matrix, mut node_exec) = setup_fvafilt_matrix(); |
|
|
|
|
|
|
|
|
|