diff options
| author | ozpv <39195175+ozpv@users.noreply.github.com> | 2026-06-20 21:33:49 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-20 21:33:49 +0000 |
| commit | 6ca86f2c3f8bb4531aa623927765f4e676fe46ae (patch) | |
| tree | 6eec0d05eae661c4b331823bd0b3a7699fac49c5 /src/lib.rs | |
| parent | 029fc9d3cf4768d94a6e37380e1dcc1e758ae876 (diff) | |
Avoid allocations in the real-time audio thread
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -7,7 +7,7 @@ mod window_type; mod windowed_fft; use crate::{ - retain::retain_top_n_magnitudes, window_size::WindowSize, window_type::WindowType, + retain::RetainAlgorithm, window_size::WindowSize, window_type::WindowType, windowed_fft::WindowedRealFft, }; use egui::{Align, CentralPanel, ComboBox, Layout, Slider, Vec2}; @@ -31,6 +31,7 @@ pub struct Retain { initial_gui_state: Option<GuiState>, fft_left: WindowedRealFft, fft_right: WindowedRealFft, + retain_algorithm: RetainAlgorithm, } impl Default for Retain { @@ -50,6 +51,7 @@ impl Default for Retain { }), fft_left, fft_right, + retain_algorithm: RetainAlgorithm::new(), } } } @@ -57,7 +59,7 @@ impl Default for Retain { #[derive(Params)] pub struct RetainParams { /// This allows the resizing of the plugin to be restored - #[persist = "editor-state"] + #[persist = "editor_state"] editor_state: Arc<EguiState>, /// the number of top frequencies to keep @@ -70,11 +72,11 @@ pub struct RetainParams { pub window_size: IntParam, /// the type of window function used to reduce spectral leakage or clicking sounds - /// changing this makes a big difference + /// playing with this makes a big difference in output #[id = "window_type"] pub window_type: EnumParam<WindowType>, - /// whether the plugin retains or removes the highest magnitudes + /// whether the plugin retains or removes the highest magnitude frequencies #[id = "complement"] pub complement: BoolParam, } @@ -304,7 +306,7 @@ impl Plugin for Retain { let order = self.params.order.value() as usize; let complement = self.params.complement.value(); - retain_top_n_magnitudes(self.fft_left.get_spectrum(), order, complement); + self.retain_algorithm.calculate(self.fft_left.get_spectrum(), order, complement); self.fft_left.inverse(); self.fft_left.clear_input(); @@ -320,7 +322,7 @@ impl Plugin for Retain { let order = self.params.order.value() as usize; let complement = self.params.complement.value(); - retain_top_n_magnitudes(self.fft_right.get_spectrum(), order, complement); + self.retain_algorithm.calculate(self.fft_right.get_spectrum(), order, complement); self.fft_right.inverse(); self.fft_right.clear_input(); |
