refactor: run Lathe, Temper and Knurl as tracked modules
Add a Tracked trait and a Lookahead harness to common-dsp. Each engine is now its tracker plus a module that follows note events aligned with its input, so the same module can run behind a shared tracker. Lathe and Temper output is bit-exact against the old engines. Knurl's interpolation now reads one newer sample inside the module, so its latency is one sample longer; the output matches within float rounding. Each editor exposes body() and toggles() besides show(), so another editor can draw a module's page.
This commit is contained in:
1 parent
4b1a89626e
commit
340376eee2
8 files changed
+418
-163
No files matched your search
@@ -285,6 +285,13 @@ pub fn show(ui: &mut egui::Ui, settings: &mut Settings, state: &mut State) {
|
||||
}
|
||||
caption(ui, "PITCH FROM");
|
||||
});
|
||||
body(ui, settings, state);
|
||||
ui.separator();
|
||||
ui.label(RichText::new(&state.help).color(MUTED));
|
||||
}
|
||||
|
||||
/// Everything under the header: the standalone editor and Forge both draw it.
|
||||
pub fn body(ui: &mut egui::Ui, settings: &mut Settings, state: &mut State) {
|
||||
ui.add_space(6.);
|
||||
let frame = state.analyzer;
|
||||
ui.horizontal_top(|ui| {
|
||||
@@ -304,8 +311,6 @@ pub fn show(ui: &mut egui::Ui, settings: &mut Settings, state: &mut State) {
|
||||
ui.set_width(ui.available_width());
|
||||
ui.vertical(|ui| controls(ui, settings, state));
|
||||
});
|
||||
ui.separator();
|
||||
ui.label(RichText::new(&state.help).color(MUTED));
|
||||
}
|
||||
const TOP: f32 = 330.;
|
||||
|
||||
@@ -429,3 +434,6 @@ fn controls(ui: &mut egui::Ui, settings: &mut Settings, state: &mut State) {
|
||||
"Output trim.");
|
||||
});
|
||||
}
|
||||
|
||||
/// Header switches besides Bypass and the pitch source: none here.
|
||||
pub fn toggles(_: &mut egui::Ui, _: &mut Settings) {}
|
||||
Reference in new issue
Block a user