diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-18 12:05:13 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-18 12:05:13 +0100 |
| commit | ce218b7459314dc9b7a5faf26139b8954a417b97 (patch) | |
| tree | d1c8ca44cad2b30a6e343fafd59ddac69b0fdee3 /tools | |
| parent | d14fc669d2da4d2c6664b5cbadf29759d3ea1073 (diff) | |
docs(mq_editor): document LP/HP post-synthesis filter sliders
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/mq_editor/README.md | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tools/mq_editor/README.md b/tools/mq_editor/README.md index 78986bf..bde7e54 100644 --- a/tools/mq_editor/README.md +++ b/tools/mq_editor/README.md @@ -65,6 +65,20 @@ open tools/mq_editor/index.html | `normalizeDB(db, maxDB)` | dB → intensity [0..1] over 80 dB range | | `partialColor(p)` | partial index → display color | +## Post-Synthesis Filters + +Global LP/HP filters applied after the oscillator bank, before normalization. +Sliders in the **Synthesis** panel; display shows -3 dB cutoff frequency. + +| Control | Filter | Formula | Bypass | +|---------|--------|---------|--------| +| **LP k1** | `y[n] = k1·x[n] + (1−k1)·y[n−1]` | `-3dB: cos(ω) = (2−2k−k²)/(2(1−k))` | k1 = 1.0 | +| **HP k2** | `y[n] = k2·(y[n−1] + x[n] − x[n−1])` | `-3dB from peak: cos(ω) = 2k/(1+k²)` | k2 = 1.0 | + +Both default to 1.0 (bypass). Frequency display uses `audioBuffer.sampleRate` when loaded, falls back to 44100 Hz. + +--- + ## Resonator Synthesis Mode Each partial has a **per-partial synthesis mode** selectable in the **Synth** tab: @@ -133,6 +147,7 @@ For a partial at 440 Hz with `spread = 0.02`: `BW ≈ 8.8 Hz`, `r ≈ exp(−π - [x] Auto-spread detection per partial and global - [x] Mute / delete partials - [x] Per-partial resonator synthesis mode (Synth tab toggle) + - [x] Global LP/HP post-synthesis filter sliders with Hz display - [ ] Phase 4: Export (.spec + C++ code generation) ## See Also |
