more sane limits for chamberlin svf and more tests

This commit is contained in:
Weird Constructor 2021-07-12 20:18:10 +02:00
parent 47ad5610f3
commit 86f93968f7
2 changed files with 34 additions and 17 deletions

View file

@ -168,7 +168,7 @@ impl DspNode for SFilter {
for frame in 0..ctx.nframes() {
let input = inp.read(frame) as f64;
let freq = denorm::SFilter::freq(freq, frame) as f64;
let freq = freq.clamp(1.0, 22000.0);
let freq = freq.clamp(2.0, 16000.0);
let res = denorm::SFilter::res(res, frame) as f64;
let res = res.clamp(0.0, 0.99);
@ -184,7 +184,7 @@ impl DspNode for SFilter {
for frame in 0..ctx.nframes() {
let input = inp.read(frame) as f64;
let freq = denorm::SFilter::freq(freq, frame) as f64;
let freq = freq.clamp(1.0, 22000.0);
let freq = freq.clamp(1.0, 16000.0);
let res = denorm::SFilter::res(res, frame) as f64;
let res = res.clamp(0.0, 0.99);
@ -200,7 +200,7 @@ impl DspNode for SFilter {
for frame in 0..ctx.nframes() {
let input = inp.read(frame) as f64;
let freq = denorm::SFilter::freq(freq, frame) as f64;
let freq = freq.clamp(1.0, 22000.0);
let freq = freq.clamp(1.0, 16000.0);
let res = denorm::SFilter::res(res, frame) as f64;
let res = res.clamp(0.0, 0.99);
@ -216,7 +216,7 @@ impl DspNode for SFilter {
for frame in 0..ctx.nframes() {
let input = inp.read(frame) as f64;
let freq = denorm::SFilter::freq(freq, frame) as f64;
let freq = freq.clamp(1.0, 22000.0);
let freq = freq.clamp(1.0, 16000.0);
let res = denorm::SFilter::res(res, frame) as f64;
let res = res.clamp(0.0, 0.99);

View file

@ -247,17 +247,34 @@ fn check_node_sfilter_halsvf_lowpass() {
// (1500, 4), (2000, 8), (3000, 12), (8000, 16),
// ]);
//
// // High Pass TPT @ 22050Hz
// let fft = fft_with_freq_res_type(&mut matrix, &mut node_exec, 3, 22050.0, 0.0);
// assert_eq!(
// avg_fft_freqs(4.0, &[100, 1000, 4000, 12000, 22050], &fft[..]), vec![
// (0, 0), (100, 0), (1000, 0), (4000, 0), (12000, 0),
// ]);
//
// // High Pass TPT @ 0Hz
// let fft = fft_with_freq_res_type(&mut matrix, &mut node_exec, 3, 0.0, 0.0);
// assert_eq!(
// avg_fft_freqs(4.0, &[100, 1000, 4000, 12000, 22050], &fft[..]), vec![
// (0, 24), (100, 16), (1000, 16), (4000, 16), (12000, 16),
// ]);
// Low Pass Hal Chamberlin SVF @ 22050Hz RES=0.0
let fft = fft_with_freq_res_type(&mut matrix, &mut node_exec, 4, 22050.0, 0.0);
assert_eq!(
avg_fft_freqs(8.0, &[100, 1000, 4000, 12000, 16000, 20000, 22050], &fft[..]), vec![
(0, 24), (100, 16), (1000, 16), (4000, 16), (12000, 16),
(16000, 24), (20000, 24)
]);
// Low Pass Hal Chamberlin SVF @ 22050Hz RES=1.0
let fft = fft_with_freq_res_type(&mut matrix, &mut node_exec, 4, 22050.0, 1.0);
assert_eq!(
avg_fft_freqs(8.0, &[100, 1000, 4000, 12000, 16000, 20000, 22050], &fft[..]), vec![
(0, 16), (100, 16), (1000, 16), (4000, 24), (12000, 144),
(16000, 208), (20000, 24)
]);
// Low Pass Hal Chamberlin SVF @ 0Hz RES=0.0
let fft = fft_with_freq_res_type(&mut matrix, &mut node_exec, 4, 0.0, 0.0);
assert_eq!(
avg_fft_freqs(4.0, &[10, 100, 1000, 4000, 12000, 22050], &fft[..]), vec![
(0, 0), (10, 0), (100, 0), (1000, 0), (4000, 0), (12000, 0),
]);
// Low Pass Hal Chamberlin SVF @ 0Hz RES=1.0
let fft = fft_with_freq_res_type(&mut matrix, &mut node_exec, 4, 0.0, 1.0);
assert_eq!(
avg_fft_freqs(4.0, &[1, 5, 10, 100, 1000, 4000, 12000, 22050], &fft[..]), vec![
(0, 56), (1, 0), (5, 0), (10, 0), (100, 0), (1000, 0),
(4000, 0), (12000, 0),
]);
}