You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**`src/nam/`** — NAM model loader and process-global registry (models resolved by name in `NamConfig::to_stage`).
80
+
-**`src/preset/`** — Preset save/load/delete, `StageConfig` enum, `InputFilterConfig`. Note: core's `StageConfig` in `stage_config.rs` is **hand-maintained** (the variant list repeats across ~9 match sites) — it is NOT generated by the UI macro.
-**`src/backend.rs`** — `PluginBackend` implementing `ParamBackend` via `EngineHandle` + `GuiContext`.
102
-
-**`src/params.rs`** — Full nih-plug parameter set: global params + 8 slots × 10 stage types.
103
+
-**`src/params.rs`** — Full nih-plug parameter set: global params + 8 slots × 11 stage types. (Note: the per-slot stage params are not yet read by `process()` — see REF-Q3/REV-4 in `claude/tasks.md`.)
The `gui_stage_registry!` macro generates `StageType`, `StageConfig`, and `StageMessage` enums plus all boilerplate. Adding a new stage requires:
107
+
The `gui_stage_registry!` macro generates the **UI-side**`StageType`, `StageConfig`, and `StageMessage` enums plus boilerplate. Core's `StageConfig` (`rustortion-core/src/preset/stage_config.rs`) is hand-maintained. Adding a new stage requires:
107
108
1. Add one line to the macro invocation
108
109
2. Create `rustortion-ui/src/stages/new_stage.rs` with config, message, and view implementations
109
110
3. Create `rustortion-core/src/amp/stages/new_stage.rs` implementing the `Stage` trait
110
-
4. Add i18n keys to EN and ZH_CN in `rustortion-ui/src/i18n/mod.rs`
111
-
5. Add slot params to `rustortion-plugin/src/params.rs`
111
+
4. Add the variant to `rustortion-core/src/preset/stage_config.rs` (every match site — the compiler will point at them)
112
+
5. Add i18n keys to EN and ZH_CN in `rustortion-ui/src/i18n/mod.rs`
113
+
6. Add slot params to `rustortion-plugin/src/params.rs`
112
114
113
115
### Thread Model
114
116
@@ -121,6 +123,7 @@ The JACK process callback (standalone) or nih-plug `process()` (plugin) runs on
121
123
-**The `gui_stage_registry!` macro** in `rustortion-ui/src/stages/mod.rs` generates boilerplate. Do not hand-write — add one line to the macro invocation instead.
122
124
-**Preset JSON format** — each preset is a JSON file in `~/.config/rustortion/presets/`. Structure: `{ "name": "...", "stages": [...], "ir_name": "...", "ir_gain": N, "pitch_shift_semitones": N, "input_filters": {...} }`.
123
125
-**IR files** are in `impulse_responses/` and `~/.config/rustortion/impulse_responses/`. Loading is async (off RT thread).
126
+
-**NAM models** (`.nam`, WaveNet + LSTM via the `nam-rs` crate) load from a user-configurable folder with rescan; loaded models live in a process-global registry and stages resolve them by name. No rfd file-picker (rfd/gtk3 breaks CI).
124
127
-**Clippy is strict** — CI runs `-D warnings -D clippy::all -D clippy::pedantic -D clippy::nursery`.
125
128
-**iced_baseview** is a fork at `github.com/OpenSauce/iced_baseview`, upgraded to iced 0.14 crates.io.
0 commit comments