added the resonator from FunDSP
This commit is contained in:
parent
7d27d6f618
commit
f8be4ca565
2 changed files with 8 additions and 3 deletions
|
@ -645,7 +645,7 @@ macro_rules! node_list {
|
||||||
(1 freq n_pit d_pit r_fq f_freq stp_d -1.0, 0.5647131, 1000.0)
|
(1 freq n_pit d_pit r_fq f_freq stp_d -1.0, 0.5647131, 1000.0)
|
||||||
(2 q n_id d_id r_id f_def stp_d 0.0, 1.0, 0.5)
|
(2 q n_id d_id r_id f_def stp_d 0.0, 1.0, 0.5)
|
||||||
(3 gain n_ogin d_ogin r_id f_def stp_d 0.0, 1.0, 1.0)
|
(3 gain n_ogin d_ogin r_id f_def stp_d 0.0, 1.0, 1.0)
|
||||||
{4 0 ftype setting(0) fa_biqfilt_type 0 0}
|
{4 0 ftype setting(0) fa_biqfilt_type 0 1}
|
||||||
{5 1 order setting(0) fa_biqfilt_ord 0 3}
|
{5 1 order setting(0) fa_biqfilt_ord 0 3}
|
||||||
[0 sig],
|
[0 sig],
|
||||||
test => Test UIType::Generic UICategory::IOUtil
|
test => Test UIType::Generic UICategory::IOUtil
|
||||||
|
|
|
@ -11,6 +11,7 @@ macro_rules! fa_biqfilt_type { ($formatter: expr, $v: expr, $denorm_v: expr) =>
|
||||||
let s =
|
let s =
|
||||||
match ($v.round() as usize) {
|
match ($v.round() as usize) {
|
||||||
0 => "BtW LP",
|
0 => "BtW LP",
|
||||||
|
1 => "Res",
|
||||||
_ => "?",
|
_ => "?",
|
||||||
};
|
};
|
||||||
write!($formatter, "{}", s)
|
write!($formatter, "{}", s)
|
||||||
|
@ -60,7 +61,7 @@ impl BiqFilt {
|
||||||
pub const gain : &'static str =
|
pub const gain : &'static str =
|
||||||
"BiqFilt gain\nFilter gain.\nRange: (0..1)\n";
|
"BiqFilt gain\nFilter gain.\nRange: (0..1)\n";
|
||||||
pub const ftype : &'static str =
|
pub const ftype : &'static str =
|
||||||
"BiqFilt ftype\n";
|
"BiqFilt ftype\n'BtW LP' Butterworth Low-Pass, 'Res' Resonator";
|
||||||
pub const order : &'static str =
|
pub const order : &'static str =
|
||||||
"BiqFilt order\n";
|
"BiqFilt order\n";
|
||||||
pub const sig : &'static str =
|
pub const sig : &'static str =
|
||||||
|
@ -130,6 +131,7 @@ impl DspNode for BiqFilt {
|
||||||
// recalculate coeffs of all in the cascade
|
// recalculate coeffs of all in the cascade
|
||||||
let coefs =
|
let coefs =
|
||||||
match ftype {
|
match ftype {
|
||||||
|
1 => BiquadCoefs::resonator(self.srate, cfreq, cq),
|
||||||
_ => BiquadCoefs::butter_lowpass(self.srate, cfreq),
|
_ => BiquadCoefs::butter_lowpass(self.srate, cfreq),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -144,7 +146,10 @@ impl DspNode for BiqFilt {
|
||||||
self.ogain = cgain;
|
self.ogain = cgain;
|
||||||
}
|
}
|
||||||
|
|
||||||
let order = order.i() as u8;
|
let mut order = order.i() as u8;
|
||||||
|
if ftype == 1 { // The resonator just blows up with higher orders.
|
||||||
|
order = 0;
|
||||||
|
}
|
||||||
|
|
||||||
for frame in 0..ctx.nframes() {
|
for frame in 0..ctx.nframes() {
|
||||||
let freq = denorm::BiqFilt::freq(freq, frame);
|
let freq = denorm::BiqFilt::freq(freq, frame);
|
||||||
|
|
Loading…
Reference in a new issue