March 25, 2026 - v2.1.2.

- Add compressor as an effect type.
- Add sidechain support for FX build.
- Master softclip now defaults to off.
- Bugfix: crash on FLStudio (and probably others with variable block size).
- Bugfix: some controls in the FX details UI were overlapping so you could not drag them.

March 15, 2026 - v2.1.1.

- Major UI overhaul.
- Build: switched to VS2026.
- Breaking change: dropped voice matrix from 25 to 17 slots and global matrix from 12 to 9 to fit the new UI.
- Breaking change: dropped 10 global unison targets to fit the new UI: vecho extend/fade, LFO A skew X/Y, multitap/feedback delay/reverb LPF/HPF.

January 11, 2026 - v2.1.0.

- Bugfix: flush-audio on patch change was broken.
- Bugfix: switching theme in one instance would switch themes in all instances.
- Bugfix: preset list is now sorted by path instead of whatever the OS comes up with.
- Audio: add (optional) master soft clip parameter so the DAW won't auto-mute the plug.
- UI: changing tabs now closes the overlay editors and file pickers.
- UI: switched default theme to "dark hot" (old default is still available).
- UI: made primary parameters such as on/off or off/type controls stand out a bit.
- UI: add free-form text field for custom instance/session name (so you know which is which when multiple UI windows are open).

January 8, 2026 - v2.0.9.

- Add some presets. Just init and demo stuff, not actual factory patches.

January 7, 2026 - Beta 4.

- Brushed up the default theme a bit.
- Add additional themes based on FF1's color schemes.
- Add new "dump raw parameter list" option to context menu, see manual.
- Add a couple new theming extension points in the json file, see manual.
- Bugfix: revert to default theme if the one in the daw session is not found.

January 3, 2026 - Beta 3.

- Align VLFO/GLFO UI.
- Align VEcho/GEcho UI.
- FM Index label was clipping.
- Order theme combobox by path.
- Add some more theming extension points.
- Add tooltips on the matrix ordering buttons.
- Added some new theme extension points for voice/master/settings headers.
- Dropped the native file dialogs in favor of JUCE-provided file browsers.
- Clicking a disabled parameter now flashes the other parameters that are disabling it.
- Matrix slot count is now increased/decreased as you add/remove slots using the +/- buttons.
- Bugfix: patch load/save problems on Linux caused by locale issues (was using default for save, but c-locale for load).

December 29, 2025 - Beta 2.

- Cut down on the logging output.
- Add theming support, see manual.
- Add new disabled-by tooltip text.
- Always show the grid for MSEG editor.
- Osci panning now displays as bipolar.
- Increased envelope stage count to 16.
- Add new dump-topology context menu option.
- Add new show log folder context menu option.
- Add new show plugin folder context menu option.
- Restore envelope stage nr in the GUI when not tempo-synced.

- Bugfix: buttons should not pop up context menu.
- Bugfix: String unison voices should not share random generator.
- Bugfix: String random generator should not be shared between X and excite.

December 10, 2025 - Beta 1.

- Bugfix: tooltips in combos where not always updated.
- Bugfix: right-click a toggle button should not toggle it.
- Bugfix: vertically center text in the last-tweaked editor.
- Bugfix: disabled tracking control for external audio osci.
- Bugfix: phase wrap operator type was implemented backwards.
- Bugfix: output parameters should not show edit/automation tooltips.
- Bugfix: load-patch overwrites things that are not part of the patch.
- Bugfix: global unison set a few default operator types wrong for coarse pitch targets.
- Bugfix: no-pitch-tracking pitch-based filters where keyboard tracking c0 instead of the coarse pitch itself.

- Wrote the manual.
- Tooltips extended with more descriptive parameter names.
- Tooltips extended with current parameter modulation sources.
- Tooltips now show if a parameter is saved in patch/session only.
- GUI parameters now have a context menu just like audio parameters.
- Global unison is now part of the visual parameter modulation bounds.
- MSEG editor now allows to keep horizontal point position fixed (useful for tempo-synced mode).
- Matrix plots now show stacked mod sources if multiple sources are targeting the same parameter.
- New context menu option "Show Manual". For parameter context menus, jumps to the relevant section in the manual.

November 27, 2025 - Alpha 26.

- FX version now defaults to global echo ON.
- Allow to copy/paste patch across plug instances (context menu).
- Close popup editor (mseg/multitap) when switching from main to matrix/unison.
- Added the infrastructure for factory preset loading, so the "preset" button is now enabled. There's no real presets yet, just a couple of init-saw like stuff.
- Bugfix: CLAP parameter host menu was broken.
- Bugfix: Bitwig showed the wrong GUI settings (show mod bounds, show tweaked, knob/mod visuals from engine and some others).

- Allow to show tweaked parameters from default/session/patch.
- Allow to reinit patch parameters to default/session/patch instead of default only.
- Last loaded patch now shows in the UI.
- Add reload last-patch/from-session buttons.
- "Patch" here means the last time you clicked init/load/preset. Not saved across sessions. If not available, reverts to default values.
- "Session" here means whatever was loaded with the DAW session. Depends on your host if this is updated when DAW session is saved.

November 24, 2025 - Alpha 25.

- Add visual MSEG editor for the envelopes.
- Up envelope point count to 15.
- Add separate parameter for envelope start amplitude (initial Y parameter).

November 16, 2025 - Alpha 24.

- Add microtuning support.
- Add modulation rate and amount controls to feedback delay.

November 13, 2025 - Alpha 23.

- StVar renamed to SVF.
- Bugfix: GUI clipped on Mac.
- Echo Multitap now defaults to Off.
- Carla and Ardour are now part of the test set on Mac.
- Turned "Flush Audio" into panic button. Now kills all voices in addition to delay lines.
- Mod matrix: UpAdd renamed to UpAdU (unipolar to unipolar), gained new UpAdB (unipolar to bipolar). Renamed BPAdd to BPAdB, BPAd2 to BPAdU (bipolar source, uni/bi target).
- Mod matrix: 10 new master sources. LoKeyPitch, HiKeyPitch, LoVeloPitch, HiVeloPitch, LastKeyPitch + smoothed versions. These are basically the GNote sources with master pitchbend applied on top.
- Mod matrix: 5 new voice sources. Porta/Fine/Coarse - you can tack these on top of non-tracking oscis/filters and accurately recreate a non-tracking osci/filter by the matrix using individual pitch components (with full control over each one). Fine Raw: normalized output of Voice Fine parameter. Pitch: sum of all per-voice pitch contributors (key, porta, fine, coarse) and master PB.
- Added non-pitch-tracking versions of oscillators. Default to C0, you can control them by adjusting osci-coarse and by summing pitch components to them in the matrix.
- Filters (SVF/Comb) now have 3 versions: frequency (regular), pitch (default C0, same as osci) and tracking either voice pitch or global last-key pitch. All of them still have keytracking controls with rootkey and tracking amount (log for frequency, linear for pitch/tracking). Use case: build up (hi reso) filters by pitch-part from the matrix, that will play in tune with the oscis.

November 6, 2025 - Alpha 22.

- Bugfix: plugin window sizing was not working correctly.

November 3, 2025 - Alpha 21.

- Build:

* Cleaned up the #includes.

- Bugfixes:

* Global filter keytracking did not take pitchbend into account.
* Global filter keytracking followed normalized value, not pitch.
* The effect of keyboard tracking on filter frequency did not show up in the gui.
* Per voice filter keytracking did not take pitchbend and portamento into account, for state variable, comb, and dedicated filters in the string osci.

- Filters:

* Added pitch-following versions of state variable and comb filters ("filter type Freq" vs "filter type "Note").
* These track the voice base pitch including midi key, pitchbend, voice pitch offsets and portamento.
* No need to keyboard-track these, but it's still possible. They have a pitch offset control (instead of frequency control) which is a regular target for global unison, mod matrix, and easy-access modulators (env->pitch_offset, lfo->pitch_offset).

- Breaking changes:

* Easy-access modulators to the effect section changed to "add" instead of "multiply" for the envelope modulators.

October 29, 2025 - Alpha 20.

- Build:
* Moved JUCE into a static library so it doesn't build 4 times.

- Other:
* Bugfix: some hosts do not provide the VST3 exchange data, deal with it. This crashed the GUI on Linux+Bitwig/Carla/Renoise. Also solves painting problems on other hosts.
* Bugfix: Ardour does not call VST3's Connect() before Activate(). Don't know if that's allowed or not - deal with it.

- Testing efforts:
* Added Carla and Ardour to the standard test set (VST3 only, Win/Lin only for now).

October 27, 2025 - Alpha 19.

- Modules:
* Matrix: add "invert source" option.
* Global unison: bugfix, graph plots are now only switched by user interaction, not automation.
* Master "external smoothing" and "receive notes" parameters moved to new Settings module. Saved per-session, not per-patch.

- UI:
* Went slightly bigger to accommodate UI changes.
* Brushed up the graph plots a bit, look more pretty now.
* GUI settings now have their own dedicated screen space.
* New GUI option: highlight parameters that divert from their default value.
* New GUI option: highlight modulation bounds on sliders. This takes into account modmatrix and easy-access controls, but not global unison or CLAP host modulation.

October 15, 2025 - Alpha 18.

- Core
* Add FX version of the plug, patches can be shared between FX/instrument (they are 99.9% the same).
* Instrument version now supports sidechain input (if your host supports it).

- Modules:
* GMix now allows routing external audio.
* Osci can now run external audio so you can use it for FM etc.
* Master now has a "receive notes yes/no" switch for those hosts that allow sending MIDI notes to FX plugins.

October 08, 2025 - Alpha 17.

- Core
* Some more performance improvements.

- UI
* Merged "show mod indicator details" and "show graph details" into 1 control.

- VMix
* The main voice amp envelope can now be placed anywhere in the voice processing pipeline (was necessary to work with per-voice echo).
* Add an intermediate "Osci Mixer" stage to allow grouping multiple osci's together and allow per-voice echo on that group. (Breaking change).

- Matrix:
* Performance fix: global-to-voice modulation was slow.
* New on-note (VNote) sources: 3x per-group-random-uniform and 3x gaussian. These have the same value for all voices in a global unison group.
* New modulation types "phase wrap" and "remap". Phase wrap just adds modulator to target, folds back into [0..1]. Remap: at 0.5 it does nothing,
at 0.4 it maps [0 1] onto [0 0.8] and at 0.7 it maps [0 1] onto [0.4 1]. These were needed for global unison but now also available in the mod matrix
and the LFO's.

- Echo:
* Added clear/init buttons for the multitap editor.
* Performance fix + breaking change: all LP/HP filters now have a toggle button to enable them.
* Performance fix: per-voice echo lifetime extension of the voice kept running the oscillators (oops).
* Per-voice echo can now be placed anywhere in the pipeline (target a single osci/fx, subset of oscis, or the entire voice).

- Global unison (new module)
* Up to 8 voices.
* 38 per-voice target parameters. Subset of all possible osci, lfo, fx, envelope and voice echo knobs.
* Per-parameter selection of automatic or manual modulation mode.
* Manual: build up the voice spectrum by hand, with 8 (max global uni voices) controls per target parameter (all 38).
* Automatic mode: spread, skew, and randomize controls to build up the voice spectrum.
* Per-parameter selection of modulation type (how to apply the spectrum to the individual voices), same options as mod matrix.
* All controls (both manual and automatic modes) fully modulatable, so the entire global unison module can be controlled by the matrix.
* Tiny per-parameter graph that shows the voice spectrum.

September 17, 2025 - Alpha 16.

- Core
* Only show parameter tag and index in debug mode.
* Performance fix: CLAP data exchange (processor to controller for GUI graphs) was slow.

- GUI
* Envelope: context menu items for insert/remove stage.
* Matrix: add insert/remove/up/down buttons for each route.
* Matrix: show a couple graphs to get a feeling for what a modulation route is doing. These are based on static "example" data, not realtime from the engine (that would basically require to calculate the entire synth state to plot it).

- Modules:
* Matrix: decreased slot count (breaking change).
* Matrix: add lo/hi controls for source. These are not really modulators but rather "a statement of truth": If you *know* the mod source is always between 40-60% normalized, set those values and the source will be remapped unto 0..1. Use case: MIDI key range 0..127 as a mod source.
* Matrix: scale is now "always on". Select "None" for a continuous 100% signal.
* Matrix: scale now has min/max control parameters. Set min > max for an inverted signal.
* VNote: add 6 new mod sources: 3x on-note-random-uniform, 3x on-note-random-gaussian.
* Voice module: add (enabled) attack/release section time multipliers on the amp envelope. Use case: play abc-pause-def as portamento sections, shorten attack times of bcef, shorten release times of abde. I use it to fake monophonic mode (which i dont want to re-implement, it's the buggiest thing in FF1) for leads.
* Allow on-voice-start-modulation of a tiny subset of parameters. These params are really block-based, but they now react (sample accurate) to CLAP modulation and internal modulators both, at voice-sample-start-position. Use case: throw some randomness at voice amp stage 0 (for note delays).

September 08, 2025 - Alpha 15.

- Support Intel Mac.
- Drop dependency on sse2neon.
- Update all dependencies to latest.

September 06, 2025 - Alpha 14.

- Core
* New button to flush all delay lines (manual action) + auto-triggered on patch change.
* MTS-ESP: not yet. There's a checkbox that shows if a master is connected. There's a tuning mode selection in the master module, but it's disabled.

- UI
* Changed output parameter labels to meters.
* Add exact-value editor tracking the last tweaked parameter.
* Hide/show matrix state is now saved within the host project.
* Bugfix: don't paint modulation status for disabled parameters.
* Bugfix: tooltips for output parameters where broken for CLAP. Just disabled them.

- Modules
* Bugfix: on-note modulators were one (internal) block (16 samples) behind.
* Breaking change: set env/lfo count to 6 again + added some new easy-access modulation controls.
* Breaking change: coarse pitch controls now range from -128 to +128 (so, you can finally do kicks).
* Breaking change + performance fix: it is now necessary to manually specify the slot count for the mod matrix.

- Modules
* New master mod sources pitchbend and modwheel.
* New master param: mod wheel. Only to be used through the mod matrix.
* New master params: pitch bend + bend range + bend target (off, all osci, single osci).
* Master PB and modwheel are by default (init patch) modulated by their corresponding midi parameters (so, non-destructive).
* New mod source: GNote (global note stream). Tracks last/low-key/low-velocity/high-key/high-velocity notes and provides key and velocity value for them as [0..100%].

- Modules
* New per-voice module params: all-osci coarse/fine pitch + easy-access modulators.
* New per-voice module params: portamento + specify glide length in time or bars.
** NO monophonic mode, and probably never will be.
** Like FF1, select off, on (constant pitch, variable time), auto (constant time, variable pitch).
** Like FF1, select always or "section" mode (only when previous note has not received note-off event yet).
** Section mode has 2 disabled params for now (amp attack/release), plan is to connect those to all but the first/last note in portamento section.
* New mod source: VNote (whatever triggered the voice). Key and velocity.
* VNote velocity by default (init patch) maps to VMix amp.

August 25, 2025 - Alpha 13.

- Modules
* Add new per-voice echo module.
* Add new global echo target: after GFX but before GMix.
* Bugfix: global echo used a full-blown delay line per tap which is not necessary, cut down on memory usage.
* Bugfix: error in the mod matrix which caused the modulation signal to be delayed by 1 block and probably other stuff.

August 22, 2025 - Alpha 12.

- Core
* Add memory pool for recycling and on-demand allocation.
* Really this thing is just here so you don't pay the price of allocating delay lines when not using them.

- Modules
* Add global echo module (multitap delay + feedback delay + reverb).

August 15, 2025 - Alpha 11.

- Core
* MIDI: support CLAP MIDI note dialect.
* MIDI: allow access to CC/Channel Pressure/Pitch Bend (mod matrix only for now).
* Bugfix: active voice was not retriggered by the same note key.

- UI
* Moved MIDI and automation smoothing control to separate module.
* Add more info to graph plots (e.g. "Osc 1 FM", "Osc 2 String", "LFO 1A Saw", "VFX 1A Clip").
* Add dedicated tab header area for module type (e.g. "Osc", "1, "2" instead of "Osc 1", "2").

- Modules
* Increased MIDI/automation smoothing max from 50 to 200ms.
* LFO: added gaussian counterparts to uniform random and uniform smooth random generators.
* Bugfix: LFO free-running random was not actually free running.
* Bugfix: LFO free-running random and smooth random plotted the graph incorrect, simplified.

August 9, 2025 - Alpha 10.

- Core
* Made visual mod indicators optional.
* Bugfix - made sure default param value is always valid.

- UI
* Group related parameter sections together.
* Activate graph plot on click, not only change. 
* Remove osci/fx slot number from parts of the mixer UI.
* Display icon/version/plug type (VST3/CLAP)/build type (X64/ARM).

- Modules
* Add dedicated voice-amp envelope.
* Add more output parameters (cpu, gain).
* Add master auxiliary parameters like FF1, use through mod matrix.
* Add bipolar modulation types to LFO subslots to match the mod matrix.
* Increased envelope segment count to 12 (honestly just b/c spare UI space).
* Each LFO subslot now has individual phase control.
* LFO A/B/C subslots are now accessible as additional mod sources in the matrix.
* Added a bunch of easy-access modulation controls that work on top of the mod matrix. Mod order is now 1) host automation, 2) CLAP host modulation, 3) mod matrix, 4) easy-access controls.
** Dedicated amp env to VMix amp (was already there, just made it explicit)
** VLFO1 -> VMix balance
** GLFO1 -> GMix amp
** GLFO2 -> GMix balance
** Env N -> Osci N gain
** VLFO N -> Osci N fine pitch
** GLFO 1/2/3/4 -> GFX A/B/C/D control parameter (stvar/cmb filter frq or shaper gain)
** Env 1/2/3/4 and VLFO 1/2/3/4 -> VFX A/B/C/D control parameter (stvar/cmb filter frq or shaper gain)

July 27, 2025 - alpha 9.

- Modules
* Increased env and lfo count to 6.
* Add global and per-voice mod matrix.

July 14, 2025 - alpha 8.

- Modules
* Add global and per-voice lfo.
* Just for fun, VLFO1 temporarily adds to osci 1 gain and GLFO1 adds to osci 2 gain (since, no modmatrix yet).

July 2, 2025 - alpha 7.

- Build
* Opt into ASAN builds.
* Opt out of warn-as-error.

- Core
* Add undo/redo support.
* Checkboxes are now centered.
* Add patch load/save/init support.
* Bugfix: tooltips were not showing for comboboxes.
* Selected tabs are now remembered across sessions.
* Add conversion (old serialized-to-disk format) support.
* Add "clear module"/"copy module to" context menu items.
* Bugfix: last MIDI note was tracking note-off events (and on, both).
* Voice envelope start position now snaps to 4 (actually floats-per-simd-register) samples instead of fixed block size (16).

June 23, 2025 - alpha 6.

- Core
* Bugfix: osci graph l/r was swapped.

- Modules
* Added global audio mixer matrix.
* Added panning control to osci.
* Added stereo balancing control to audio mixer matrices.
* String osci: soft clip if it gets really loud.
* String osci: dropped keytracking range, now fixed to +/-2 oct like everything else.
* String osci: fixed buffer overflow in graph painting.
* "Suddenly" Linux+Bitwig+CLAP starts working again! ;) Need to figure out a way to integrate asan into the workflow.

June 18, 2025 - alpha 5.

- Modules
* Merged string osci into regular osci.
* Added per-voice audio mixer matrix (no global yet, that's still fixed routing).
* Known issue: segfaults on Linux+Bitwig+CLAP. This combination seems always difficult, i will not pursue it untill beta. (Linux+Reaper is good, Linux+Bitwig+VST3 is good).

June 14, 2025 - alpha 4.

- Core
* Turned up the warning levels for all compilers (/W4 -Wall).

- Modules
* Merged the osci and string osci graphs.
* Merged all env graphs into 1.

June 11, 2025 - alpha 3.

- Core
* Cache JUCE FFT instance.
* Keep track of last incoming MIDI key (in case of chord this is "whatever").
* Reworked the infra a bit to allow for modules that are both global and per-voice.

- Modules
* Add global FX.
* Separate comb+/comb-/both filters. Just a performance tweak.
* New FX param (global only): smoothing last MIDI key. Smooths filter freq jumps when keytracking global filters.

June 10, 2025 - alpha 2.

- Build
* Update GH windows runners.
* Build scripts now zip the artifacts again.
* Fix build script error for release builds (resources weren't being copied).

- Core
* Split out VST3 and CLAP logs.
* Fixed some vertical text layout errors on Linux.
* Compiles and runs on Windows/Linux/MacOS. Ubuntu22+, Mac ARM only, no Intel.
* Added more detailed logging, including in the case of an unhandled exception.
* Fixed a bug where locale-independent parsing was assumed (std::strtod), broke on Linux.
* Fixed a bug in VST3 data exchange alignment which caused visualization to not work on MacOS.

June 4, 2025 - alpha 1.

- Core
* Clap polyphonic modulation support.
* Visualization directly from audio engine.

- Modules
* Envelopes, per-voice fx, string osci, osci + mod matrix.