Commit Graph
13 Commits
Author SHA1 Message Date
biggy 4748bfe768 refactor(fx): give each FX slot independent DSP history
Replace the single shared array of 9 effect units with a 2D array
of kNumFxSlots × kNumEffectTypes, so each slot owns its own DSP
state. This prevents state bleed when the same effect type appears
in multiple slots and allows reordering without carrying over
internal history.

Track activeTypes to skip unchanged slots. Remove the dry buffer
since it was unused.
2026-09-09 14:32:58 +02:00
biggy dc6fd88ed1 refactor(filter): cache coefficients and extract cutoff calculation
Add updateCoefficients() that short-circuits when cutoff, resonance,
and type are unchanged. Cache ladderG and formantCoefficients so
processSample() avoids redundant exp()/tan() calls per sample.

Extract static getCutoffHz() from Filter::process() so FilterBank
can compute the keytracked cutoff once per parallel branch instead
of per sample. Simplify formant() and screamer() signatures to use
cached state.
2026-09-09 14:32:49 +02:00
biggy 3b2ecc50f2 refactor(params): structure parameter IDs into typed groups
Introduce paramIds namespace with Oscillator struct and constexpr
arrays for envelope, LFO, FX, and macro parameter IDs. Replace the
scattered local const char* arrays in Engine and PluginEditor with
references to these shared definitions.

Return ModSource::Count from modSourceFromString for unknown strings
instead of silently mapping to Lfo1. Simplify isPerVoiceSource and
isPerVoiceTarget to range-based expressions.
2026-09-09 14:32:43 +02:00
biggy 05fd6440bd docs: add agent guidance and historical audit report
Add root AGENT.md with project conventions, build verification steps,
source layout, style rules, and real-time/concurrency requirements.
Add per-module AGENT.md files for each existing and proposed source
subdirectory. Add AUDIT_REPORT.md as a historical Phase 1 snapshot
documenting memory management, error handling, concurrency model,
naming conventions, and anti-pattern catalog.
2026-09-09 13:25:02 +02:00
biggy a50666355c feat(gui): add knob value popup, tooltips, tab cycling, and layout system
Add a floating value label near the cursor while dragging a knob, giving
immediate feedback without altering slider behaviour. Inherit
SettableTooltipClient on ToggleButton so setTooltip works consistently
with knobs and combos.

Introduce a shared layout constants namespace in PluginEditor so every
panel, row and control position derives from one spacing system. Add
tooltips to all knobs, combos, toggles, and buttons. Add Tab/Shift+Tab
tab cycling via keyPressed, with a TooltipWindow for hover hints.
2026-09-09 13:24:40 +02:00
biggy 769e85e4e4 test: add headless QA harness 2026-09-08 14:55:22 +02:00
biggy 6e4d399a04 feat(plugin): add plugin processor and editor 2026-09-08 14:55:22 +02:00
biggy 0a94208d0f feat(params): add parameters, macros, RAVE controls and resources 2026-09-08 14:55:22 +02:00
biggy a9abca9e15 feat(gui): add GUI components and displays 2026-09-08 14:55:22 +02:00
biggy 5a80534a2e feat(fx): add effect rack and effect units 2026-09-08 14:55:22 +02:00
biggy 4021b9cdf7 feat(filter): add filter bank and filter models 2026-09-08 14:55:21 +02:00
biggy 44960b9acb feat(modulation): add envelopes, LFOs and modulation matrix 2026-09-08 14:55:21 +02:00
biggy fc9d16b302 feat(dsp): add core synthesizer oscillators, wavetable and voice engine 2026-09-08 14:55:21 +02:00