|
1 | 1 | //! The biquad filter control and renderer parts
|
2 | 2 | use std::any::Any;
|
3 | 3 | use std::f64::consts::{PI, SQRT_2};
|
4 |
| -use std::sync::atomic::{AtomicU32, Ordering}; |
5 | 4 |
|
6 | 5 | use num_complex::Complex;
|
7 | 6 |
|
@@ -309,8 +308,8 @@ pub struct BiquadFilterNode {
|
309 | 308 | /// boost/attenuation (dB) - its impact on the frequency response of the
|
310 | 309 | /// filter, depends on the `BiquadFilterType`
|
311 | 310 | gain: AudioParam,
|
312 |
| - /// `BiquadFilterType` represented as u32 |
313 |
| - type_: AtomicU32, |
| 311 | + /// Current biquad filter type |
| 312 | + type_: BiquadFilterType, |
314 | 313 | }
|
315 | 314 |
|
316 | 315 | impl AudioNode for BiquadFilterNode {
|
@@ -402,7 +401,7 @@ impl BiquadFilterNode {
|
402 | 401 | let node = Self {
|
403 | 402 | registration,
|
404 | 403 | channel_config: channel_config.into(),
|
405 |
| - type_: AtomicU32::new(type_ as u32), |
| 404 | + type_, |
406 | 405 | q: q_param,
|
407 | 406 | detune: d_param,
|
408 | 407 | frequency: f_param,
|
@@ -440,16 +439,16 @@ impl BiquadFilterNode {
|
440 | 439 | /// Returns the biquad filter type
|
441 | 440 | #[must_use]
|
442 | 441 | pub fn type_(&self) -> BiquadFilterType {
|
443 |
| - self.type_.load(Ordering::Acquire).into() |
| 442 | + self.type_ |
444 | 443 | }
|
445 | 444 |
|
446 | 445 | /// biquad filter type setter
|
447 | 446 | ///
|
448 | 447 | /// # Arguments
|
449 | 448 | ///
|
450 | 449 | /// * `type_` - the biquad filter type (lowpass, highpass,...)
|
451 |
| - pub fn set_type(&self, type_: BiquadFilterType) { |
452 |
| - self.type_.store(type_ as u32, Ordering::Release); |
| 450 | + pub fn set_type(&mut self, type_: BiquadFilterType) { |
| 451 | + self.type_ = type_; |
453 | 452 | self.registration.post_message(type_);
|
454 | 453 | }
|
455 | 454 |
|
@@ -820,7 +819,7 @@ mod tests {
|
820 | 819 | -2.6204006671905518,
|
821 | 820 | ];
|
822 | 821 |
|
823 |
| - let filter = context.create_biquad_filter(); |
| 822 | + let mut filter = context.create_biquad_filter(); |
824 | 823 | filter.set_type(type_);
|
825 | 824 | filter.frequency().set_value(frequency);
|
826 | 825 | filter.q().set_value(q);
|
@@ -862,7 +861,7 @@ mod tests {
|
862 | 861 | 0.5211920142173767,
|
863 | 862 | ];
|
864 | 863 |
|
865 |
| - let filter = context.create_biquad_filter(); |
| 864 | + let mut filter = context.create_biquad_filter(); |
866 | 865 | filter.set_type(type_);
|
867 | 866 | filter.frequency().set_value(frequency);
|
868 | 867 | filter.q().set_value(q);
|
@@ -904,7 +903,7 @@ mod tests {
|
904 | 903 | -0.9985077977180481,
|
905 | 904 | ];
|
906 | 905 |
|
907 |
| - let filter = context.create_biquad_filter(); |
| 906 | + let mut filter = context.create_biquad_filter(); |
908 | 907 | filter.set_type(type_);
|
909 | 908 | filter.frequency().set_value(frequency);
|
910 | 909 | filter.q().set_value(q);
|
@@ -946,7 +945,7 @@ mod tests {
|
946 | 945 | 0.5722885727882385,
|
947 | 946 | ];
|
948 | 947 |
|
949 |
| - let filter = context.create_biquad_filter(); |
| 948 | + let mut filter = context.create_biquad_filter(); |
950 | 949 | filter.set_type(type_);
|
951 | 950 | filter.frequency().set_value(frequency);
|
952 | 951 | filter.q().set_value(q);
|
@@ -977,7 +976,7 @@ mod tests {
|
977 | 976 | 1.144577145576477,
|
978 | 977 | ];
|
979 | 978 |
|
980 |
| - let filter = context.create_biquad_filter(); |
| 979 | + let mut filter = context.create_biquad_filter(); |
981 | 980 | filter.set_type(type_);
|
982 | 981 | filter.frequency().set_value(frequency);
|
983 | 982 | filter.q().set_value(q);
|
@@ -1019,7 +1018,7 @@ mod tests {
|
1019 | 1018 | -0.1567305326461792,
|
1020 | 1019 | ];
|
1021 | 1020 |
|
1022 |
| - let filter = context.create_biquad_filter(); |
| 1021 | + let mut filter = context.create_biquad_filter(); |
1023 | 1022 | filter.set_type(type_);
|
1024 | 1023 | filter.frequency().set_value(frequency);
|
1025 | 1024 | filter.q().set_value(q);
|
@@ -1061,7 +1060,7 @@ mod tests {
|
1061 | 1060 | -0.1404205560684204,
|
1062 | 1061 | ];
|
1063 | 1062 |
|
1064 |
| - let filter = context.create_biquad_filter(); |
| 1063 | + let mut filter = context.create_biquad_filter(); |
1065 | 1064 | filter.set_type(type_);
|
1066 | 1065 | filter.frequency().set_value(frequency);
|
1067 | 1066 | filter.q().set_value(q);
|
@@ -1103,7 +1102,7 @@ mod tests {
|
1103 | 1102 | 0.1404205560684204,
|
1104 | 1103 | ];
|
1105 | 1104 |
|
1106 |
| - let filter = context.create_biquad_filter(); |
| 1105 | + let mut filter = context.create_biquad_filter(); |
1107 | 1106 | filter.set_type(type_);
|
1108 | 1107 | filter.frequency().set_value(frequency);
|
1109 | 1108 | filter.q().set_value(q);
|
|
0 commit comments