The APVTS parameterChanged callback delivers the parameter's denormalised
value, which for an AudioParameterChoice is the choice index, not a
normalised 0..1 value. The handler was multiplying it by (numItems - 1),
so LP 48dB (index 8) produced itemId 65 and cleared the box. Map the
received index straight to itemId (index + 1).
Keep the parameter choice indices stable (so saved projects, .cfl
files and presets stay correct) and only reorder the displayed menu
via explicit item IDs plus a new IndexedComboBoxAttachment, since the
stock JUCE ComboBoxAttachment hard-maps choice index to menu position.
The plugin saved only parameter values, so on reopening the editor
reset to the default "Zero State" even though another patch was
selected. Store the chosen preset name as a presetName property on the
APVTS ValueTree (set on preset select, randomize, and .cfl load) so it
round-trips with the saved state and the editor restores the correct
name and index. Parameter tweaks made after selecting a preset are
preserved since only the label is restored, not re-applied.
Reverts the sustain-relative modulation that made F.ENV SUS and the
cutoff knob feel dead while a note was held. The envelope now modulates
up from the base cutoff; at env amount 0 the cutoff equals the knob, and
lowering env amount darkens the held tone as expected.
Also extends the filter to 24/48 dB modes (extra TPT stages), adds the
matching combobox options, gives knobs a real blurred drop shadow, and
updates the AGENTS.md filterType choice count.
- Rename section labels: COMPRESSOR → COMPRESSION, AUTO-PAN → PANNING
- Replace spectrum analyzer bars with smooth gapless filled wave
- Use gold (#c59c07) for wave/spectrum strokes and piano roll active keys
- Amber CRT-style patch LCD with dark background and gold dot-matrix text
- Add MIDI signal LED with glow between semi and scale controls
- Reduce VU meter sensitivity (5x → 1.5x) and match amber gradient theme
- Add subtle glow behind section and sub-section boxes
- Fix Compressor.h class name and PluginProcessor include to match