Persist engine state in DAW projects, black monochrome panel, expand preset bank

- Save/load the engine's full parameter set alongside the preset index so
  knob and menu tweaks survive relaunching a song project
- Make the plugin panel black: top/surround laser border and bottom deck
  (rotary + nav keys) are now #000000
- Extend factory bank to 320 categorized presets and add LCD click-to-open
  preset category browser
This commit is contained in:
Armin 2026-09-13 22:04:43 +02:00
commit bdd3b38cee
7 changed files with 943 additions and 56 deletions

View file

@ -2,7 +2,7 @@
A self-contained **subtractive synthesizer** written in modern C++ on top of
[JUCE](https://juce.com). It ships as a **VST3** on macOS and Linux plus a
macOS **Audio Unit**, with a hand-rolled DSP core, 52 factory presets and an
macOS **Audio Unit**, with a hand-rolled DSP core, 320 factory presets and an
embedded 4x80 HD44780-style LCD driven by a cascaded on-screen menu.
## Why this is pretty good
@ -29,7 +29,10 @@ embedded 4x80 HD44780-style LCD driven by a cascaded on-screen menu.
## Features
* 12-voice polyphonic engine with voice stealing and glide
* 52 factory presets across Bass / Lead / Pad / Keys / Pluck / FX / Stab / Arp
* 320 factory presets across Bass / Lead / Pad / Keys / Pluck / String / Organ /
Bell / Stab / Arp / FX / Wind / Brass / Voice / Perc / SFX / Grit / Retro /
Ambient
* Click the patch line on the LCD to open a categorized preset browser
* Dual-waveform oscillator section (sine / tri / saw / square / noise …)
* SVF low-pass filter with resonance **and** drive
* ADSR with a per-voice envelope and cutoff modulation
@ -79,6 +82,9 @@ sudo killall -HUP coreaudiod
* The LCD shows the active preset, knob mappings with live values, host BPM
and voice count. The delay's SYNC mode locks to the host tempo and lets you
pick rhythmic subdivisions.
* **Click the patch line** on the LCD to browse presets by category: a
"SELECT PATCH CATEGORY" menu opens, ENTER drills into a category, and
confirming a patch loads it and returns you home.
## Layout
@ -87,7 +93,7 @@ Build: Makefile -> CMake -> JUCE (fetched into build/juce, never committed)
Source/
PluginProcessor.* audio processor + DSP shell
SynthEngine.* osc/filter/ADSR/delay voice engine (12 voices)
Presets.* 52 preset definitions + per-preset knob routings
Presets.* 320 preset definitions + per-preset knob routings
SynthParams.* parameter model + formatting
PluginEditor.* panel, knobs, nav diamond, status footer
LcdDisplay.* 4x80 HD44780-style display renderer