From 12a030f9301e9c24310ece77280855cee3ad4c74 Mon Sep 17 00:00:00 2001 From: EvilDragon Date: Fri, 8 Dec 2023 14:20:18 +0100 Subject: [PATCH] Update changelog (#337) --- src/content/changelogs/10-xt-1_3_0.mdx | 180 +++++++++++++++++++++++++ src/content/pages/nightlychangelog.mdx | 169 +---------------------- 2 files changed, 181 insertions(+), 168 deletions(-) create mode 100644 src/content/changelogs/10-xt-1_3_0.mdx diff --git a/src/content/changelogs/10-xt-1_3_0.mdx b/src/content/changelogs/10-xt-1_3_0.mdx new file mode 100644 index 0000000000..ca88f03d13 --- /dev/null +++ b/src/content/changelogs/10-xt-1_3_0.mdx @@ -0,0 +1,180 @@ +--- +title: Changes in Surge XT 1.3.0 +order: 10 +id: 1.3.0 +--- + +We released Surge XT 1.3.0 on December 8, 2023. This release contains a wide variety of performance-focused enhancements, new effects, expanded DSP, +and many bug fixes and small improvements. + +You can now gain complete control of the synth using OSC, use MIDI Program Changes to load patches, and have access to a command-line only version of the synth +for embedded and headless applications. The new effect, Bonsai, is an exciting tape and saturation model. Expanded ring modulation options in the mixer allow for a +myriad of growls, squeals, boosts, and signal combinations. The expanded Tuning Editor gives a variety of realtime visualizations for your scales and tunings. +Plus, we have added some new patches and modulator presets. And these are just the headlines! More detailed changelog is as follows. + +## Open Sound Control + +- Added a complete Open Sound Control implementation. For more information, see "OSC Settings > Show OSC Specification..." in the main menu + +## MIDI + +- Added support for MIDI Program Change messages + - The user patches folder can now contain a `MIDI Programs` + - Patches at the root of `MIDI Programs` folder will form Bank Select 0, if present + - Subfolders inside `MIDI Programs` folder will form Bank Select 1 ... 127, if present + - In each bank, patches are sorted in alphabetic order + - Only the first 128 patches will be available from every folder +- Added support for discerning MIDI channel when MIDI learning parameters +- Disallowed MIDI learn on reserved MIDI CCs (like Bank Select, Data Entry, RPN/NRPN, All Sound Off, etc.) +- Fixed a bug where when Dual scene mode with MPE enabled, Play Mode set to Latch and "Use MIDI Channels 2 and 3 to Play Scenes Individually" option disabled would trigger voices on the unlatched scene + +## Command Line Interface + +- Implemented a pure CLI version of Surge XT for headless (no GUI) operation +- This is available as `surge-xt-cli` on Linux, `cli` executable in the standalone bundle on Mac, and as a separate install for Windows users +- Combined with OSC and MIDI Program Change support, this allows a variety of new and useful embedded and headless implementations + +## Effects + +- Bonsai is a really organic sounding distortion effect, combining a highly non-linear bass boost + with an emphasis-filtered waveshaper and noise AM. It excels at a wide range of very beefy gnarly + sounds, but can sound very good at subtle settings too +- Audio In is the same functionality as the Audio In oscillator type, simply allowing you + to insert audio into the signal path downstream from filters and waveshapers +- Y and Z filters are freshly added members of the Airwindows effect now +- Ring Modulator effect now also has audio input available as carrier +- Added extendability to Delay effect's Feedback and Crossfeed parameters (making them bipolar), and Mod Depth parameter (increasing it from 2 semitones to an octave) +- Fixed a bug where Tape effect's Drive parameter Precision options and Delay effect's Feedback Limiting options (in right-click context menu) didn't load correctly + +## DSP + +- Ring Modulator channels in the Mixer now have a large number of alternate combinator modes (Complex XOR and Scale-Invariant Linear Modulation) +- FM3 oscillator's M3 Frequency parameter is now extendable down to 0.5 Hz +- Fixed a bug where oscillator initialization ignored the octave setting, which caused a very small initial glide in String and Modern oscillator +- Added a "Vintage FM" feedback mode for Sine, FM2, and FM3 oscillator, which uses the average of last two samples to calculate feedback (like on the very first FM synthesizers) +- Doubled the delay buffer of comb filter (now it's 4096 samples), allowing lower frequencies to sound proper at high sample rates + - This is a CMake option so self-builders can revert to how it was before, if Surge XT needs to run in a more memory constrained scenario +- Fixed a half-sample initial phase offset error in Modern oscillator when retriggering from zero +- Added an option to mute an entire scene via right-click context menu on Scene Volume parameter + - This is useful for sending scene A audio into B, but note that it also bypasses scene insert effects! + +## Modulation + +- Added various useful math functions (parity, signum, sign, rescale...) and a slew limiter to the Formula modulator prelude +- Added an alias for `intphase` state variable in the Formula modulator, `cycle` +- Removed Formula modulator subscriptions for timing and LFO state, they are now always available +- Removed Formula modulator subscription for voice parameters, they are now always available in voice LFOs and never available in scene LFOs +- Reverb 1 Size parameter can now be modulated without resetting the feedback network - sounds kinda odd but also fun! + +## Tuning + +- Added two new visualizations to Tuning Editor + - True Keys mode shows actual keys depressed and the interval between them in cents + - Radial mode is now renamed to Polar, containing Radial and Angular modes +- In MTS-ESP mode, the Tuning Editor will now also become a tuning analyzer, showing the new True Keys mode against MTS-ESP sources +- Removed the option "Use MTS-ESP if available", it was redundant +- Added the capability to remember if Surge XT is disconnected as client from MTS-ESP +- Fixed misleading tuning-related typeins in 'Apply Tuning After Modulation' mode, now errors are presented accurately +- When "Use MIDI Channels 2 and 3 to Play Scenes Individually" is disabled, we can now use MIDI channels for octave shift tuning information coming from MTS-ESP +- Fixed a bug where sustain pedal did not work correctly in "Use MIDI Channel for Octave Shift" mode + +## Accessibility + +- Enter key on a step sequencer parameters starts the edit gesture, matching other accessible sliders +- Alert dialogs now properly receive keyboard focus for screenreader users +- Effect parameters now speak the name of the parameter group they belong, which is helpful in effects like Audio In or EQ, + which have multiple similarly named parameters in different groups +- `Shift+F10` closes open menus as well as opening them, which works around some DAWs (like Reaper) stealing Esc key in order to close the plugin window +- Removed an unused button from Keyboard Shortcuts Editor which confused some screenreaders + +## UI/UX + +- Added multiple virtual keyboard layouts (QWERTZ, AZERTY, Dvorak, etc.) to Keyboard Shortcut Editor +- Added an action to load a random patch (not bound to a key by default) +- Restricted wavetable loading dialog to .wav and .wt extensions only +- Mouse dragging in the Filter Analysis overlay now modify the Cutoff and Resonance parameters, and also send VST automation events +- Adjusted the width of typeins when they show an error +- Fixed a bug where buttons in the Oscilloscope overlay and a few other places used incorrect hover off color +- Fixed an error where MSEG Y position tooltips would not update or would show when not appropriate +- Fixed a problem with the use of bold fonts in menus which mis-render menu headers in some macOS situations +- Home and End keys no longer malfunction in the Comment field when saving patches +- Releasing mouse on horizontal slider no longer places cursor over adjacent slider +- Updated the look and feel of all alert and notification dialogs to match the skin used, as opposed to default JUCE visual style +- Oscillator display now uses the half rate filter to show the waveform, which shows a more accurate waveform in some cases +- When using the option "Add sub-menus for modulation menu items", custom menu icons will not be shown now + +## Plugin + +- Implemented CLAP parameter menus +- Added initial implementation of CLAP remote control pages extension +- CLAP polyphonic modulation now also works per-channel and per-key, whereas previously it just worked per note +- Better defense against some filesystem errors which could cause the AU to fail loading in Logic +- Reenabled VST3 parameter menus in Reason, now that the underlying bug is fixed on Reason's end. + Thanks to the Reason team for their beta program access, which helped us find this bug! + +## Surge XT Effects + +- Standalone now works with mono in, stereo out Bluetooth configurations +- Changed startup path to improve portability +- Documents directory is not created anymore if not needed, improving portability + +## Other Changes and Bug Fixes + +- Allowed clients of Surge XT to reset extra content path (used by VCV Rack modules) +- Updated the Character filter to allow inclusion in VCV Rack as a standalone +- Fixed a bug where standalone would not properly use the tempo specified in the Virtual Keyboard section +- Swapping effects via drag and drop now participates in undo +- Swapping macro modulators via drag and drop now participates in undo +- "Continue from Current Level" Play Mode option now participates in undo and scene copy/paste +- Fixed several cases where the MSEG could generate or persist `NaN` values in the editor +- Updated the lifecycle of JUCE look and feel, avoiding a font-related crash in some rare cases +- Updated the handling of filesystem errors more robustly and improved error reporting at startup, avoiding a crash in some rare cases +- Loading skins from ZIP files now appropriately ignores the `_MACOSX` folder + +## Code Refactoring and Quality + +- A large number of effort went to moving code from Surge XT repository into libraries shared between Surge and Shortcircuit, including: + - Moving many effects to `sst-effects` library + - Moving fundamental operators to `sst-basic-blocks` library + - Each of these moves included code improvements of various forms +- With JUCE 7, removed the moribund per-type class extensions +- Added uniform file comments and header guards across the entire codebase +- Centralized our locale-based formatting using the `libfmt` locale +- Removed some uses of `shared_ptr` which don't work in the VCV Rack build environment +- Made sure we properly obey `__restrict` on `gcc` +- Consistently use `uses_wavetable` for all queries about wavetable usage +- Fixed an assumption about parameter layout in `FXStorage` +- Fixed a collection of typos across the code comments +- Refactored the modulator name API to be available to more code paths + +## Infrastructure + +- Upgraded to JUCE 7.0.5 (plus a couple of accesibility patches) +- Removed the LV2 from the binary distribution +- Fixed descriptions in Linux installers to indicate LV2 is not there anymore and include CLAP in the binary +- Tweaked our CI strategy to improve time from commit to nightly +- Include the mistakenly unincluded for gcc13 +- Surge XT builds on 64-bit Raspberry Pi OS, but not 32-bit - fail the 32-bit Raspberry Pi build earlier +- Expanded documentation about polyphonic modulation, Raspberry Pi, and others +- Moved to `catch` version 3 +- Enabled CTest +- Improved unit test runtimes +- Moved minimum CMake version to 2.1 +- Moved macOS notarization from `altool` to `notarytoool` +- Consistently build for macOS 10.9 across all submodules +- Fixed compilation on macOS Clang 15 +- Added an API to end notes just based on note ID +- Added a test suite which compiles _after_ `surge-xt` as opposed to _after_ `surge-common`, which was needed for OSC unit tests +- Removed more inappropriate legacy SSE includes, allowing portability to more architectures via `simde` + +## Content + +- Updated 3 LinnStrument patches from Winds category +- Updated and added new John Valentine patches +- Updated and added new Kinsey Dulcet patches +- Added A.Liv patches +- Added Landosonic patches +- Added NES Triangle wavetable +- Added two new init patches to the factory templates, aimed at duophonic and paraphonic synthesis +- Added another Formula Tutorial, focusing on duophony +- Added a few Formula modulator presets diff --git a/src/content/pages/nightlychangelog.mdx b/src/content/pages/nightlychangelog.mdx index 5097a75da3..a2b0430ef2 100644 --- a/src/content/pages/nightlychangelog.mdx +++ b/src/content/pages/nightlychangelog.mdx @@ -3,171 +3,4 @@ title: Nightly Changelog slug: nightlychangelog --- -We plan to release Surge XT 1.3 sometime in Winter 2023. This changelog is up to date as of Dec 6, 2023, commit 60366dc - -## Open Sound Control - -- Added a complete Open Sound Control implementation. For more information, see "OSC Settings > Show OSC Specification..." in the main menu - -## MIDI - -- Added support for MIDI Program Change messages - - The user patches folder can now contain a `MIDI Programs` - - Patches at the root of `MIDI Programs` folder will form Bank Select 0, if present - - Subfolders inside `MIDI Programs` folder will form Bank Select 1 ... 127, if present - - In each bank, patches are sorted in alphabetic order - - Only the first 128 patches will be available from every folder -- Added support for discerning MIDI channel when MIDI learning parameters -- Disallowed MIDI learn on reserved MIDI CCs (like Bank Select, Data Entry, RPN/NRPN, All Sound Off, etc.) -- Fixed a bug where when Dual scene mode with MPE enabled, Play Mode set to Latch and "Use MIDI Channels 2 and 3 to Play Scenes Individually" option disabled would trigger voices on the unlatched scene - -## Command Line Interface - -- Implemented a pure CLI version of Surge XT for headless (no GUI) operation -- This is available as `surge-xt-cli` on Linux, `cli` executable in the standalone bundle on Mac, and as a separate install for Windows users -- Combined with OSC and MIDI Program Change support, this allows a variety of new and useful embedded and headless implementations - -## Effects - -- Bonsai is a really organic sounding distortion effect, combining a highly non-linear bass boost - with an emphasis-filtered waveshaper and noise AM. It excels at a wide range of very beefy gnarly - sounds, but can sound very good at subtle settings too -- Audio In is the same functionality as the Audio In oscillator type, simply allowing you - to insert audio into the signal path downstream from filters and waveshapers -- Y and Z filters are freshly added members of the Airwindows effect now -- Ring Modulator effect now also has audio input available as carrier -- Added extendability to Delay effect's Feedback and Crossfeed parameters (making them bipolar), and Mod Depth parameter (increasing it from 2 semitones to an octave) -- Fixed a bug where Tape effect's Drive parameter Precision options and Delay effect's Feedback Limiting options (in right-click context menu) didn't load correctly - -## DSP - -- Ring Modulator channels in the Mixer now have a large number of alternate combinator modes (Complex XOR and Scale-Invariant Linear Modulation) -- FM3 oscillator's M3 Frequency parameter is now extendable down to 0.5 Hz -- Fixed a bug where oscillator initialization ignored the octave setting, which caused a very small initial glide in String and Modern oscillator -- Added a "Vintage FM" feedback mode for Sine, FM2, and FM3 oscillator, which uses the average of last two samples to calculate feedback (like on the very first FM synthesizers) -- Doubled the delay buffer of comb filter (now it's 4096 samples), allowing lower frequencies to sound proper at high sample rates - - This is a CMake option so self-builders can revert to how it was before, if Surge XT needs to run in a more memory constrained scenario -- Fixed a half-sample initial phase offset error in Modern oscillator when retriggering from zero -- Added an option to mute an entire scene via right-click context menu on Scene Volume parameter - - This is useful for sending scene A audio into B, but note that it also bypasses scene insert effects! - -## Modulation - -- Added various useful math functions (parity, signum, sign, rescale...) and a slew limiter to the Formula modulator prelude -- Added an alias for `intphase` state variable in the Formula modulator, `cycle` -- Removed Formula modulator subscriptions for timing and LFO state, they are now always available -- Removed Formula modulator subscription for voice parameters, they are now always available in voice LFOs and never available in scene LFOs -- Reverb 1 Size parameter can now be modulated without resetting the feedback network - sounds kinda odd but also fun! - -## Tuning - -- Added two new visualizations to Tuning Editor - - True Keys mode shows actual keys depressed and the interval between them in cents - - Radial mode is now renamed to Polar, containing Radial and Angular modes -- In MTS-ESP mode, the Tuning Editor will now also become a tuning analyzer, showing the new True Keys mode against MTS-ESP sources -- Removed the option "Use MTS-ESP if available", it was redundant -- Added the capability to remember if Surge XT is disconnected as client from MTS-ESP -- Fixed misleading tuning-related typeins in 'Apply Tuning After Modulation' mode, now errors are presented accurately -- When "Use MIDI Channels 2 and 3 to Play Scenes Individually" is disabled, we can now use MIDI channels for octave shift tuning information coming from MTS-ESP -- Fixed a bug where sustain pedal did not work correctly in "Use MIDI Channel for Octave Shift" mode - -## Accessibility - -- Enter key on a step sequencer parameters starts the edit gesture, matching other accessible sliders -- Alert dialogs now properly receive keyboard focus for screenreader users -- Effect parameters now speak the name of the parameter group they belong, which is helpful in effects like Audio In or EQ, - which have multiple similarly named parameters in different groups -- `Shift+F10` closes open menus as well as opening them, which works around some DAWs (like Reaper) stealing Esc key in order to close the plugin window -- Removed an unused button from Keyboard Shortcuts Editor which confused some screenreaders - -## UI/UX - -- Added multiple virtual keyboard layouts (QWERTZ, AZERTY, Dvorak, etc.) to Keyboard Shortcut Editor -- Added an action to load a random patch (not bound to a key by default) -- Restricted wavetable loading dialog to .wav and .wt extensions only -- Mouse dragging in the Filter Analysis overlay now modify the Cutoff and Resonance parameters, and also send VST automation events -- Adjusted the width of typeins when they show an error -- Fixed a bug where buttons in the Oscilloscope overlay and a few other places used incorrect hover off color -- Fixed an error where MSEG Y position tooltips would not update or would show when not appropriate -- Fixed a problem with the use of bold fonts in menus which mis-render menu headers in some macOS situations -- Home and End keys no longer malfunction in the Comment field when saving patches -- Releasing mouse on horizontal slider no longer places cursor over adjacent slider -- Updated the look and feel of all alert and notification dialogs to match the skin used, as opposed to default JUCE visual style -- Oscillator display now uses the half rate filter to show the waveform, which shows a more accurate waveform in some cases -- When using the option "Add sub-menus for modulation menu items", custom menu icons will not be shown now - -## Plugin - -- Implemented CLAP parameter menus -- Added initial implementation of CLAP remote control pages extension -- CLAP polyphonic modulation now also works per-channel and per-key, whereas previously it just worked per note -- Better defense against some filesystem errors which could cause the AU to fail loading in Logic -- Reenabled VST3 parameter menus in Reason, now that the underlying bug is fixed on Reason's end. - Thanks to the Reason team for their beta program access, which helped us find this bug! - -## Surge XT Effects - -- Standalone now works with mono in, stereo out Bluetooth configurations -- Changed startup path to improve portability -- Documents directory is not created anymore if not needed, improving portability - -## Other Changes and Bug Fixes - -- Allowed clients of Surge XT to reset extra content path (used by VCV Rack modules) -- Updated the Character filter to allow inclusion in VCV Rack as a standalone -- Fixed a bug where standalone would not properly use the tempo specified in the Virtual Keyboard section -- Swapping effects via drag and drop now participates in undo -- Swapping macro modulators via drag and drop now participates in undo -- "Continue from Current Level" Play Mode option now participates in undo and scene copy/paste -- Fixed several cases where the MSEG could generate or persist `NaN` values in the editor -- Updated the lifecycle of JUCE look and feel, avoiding a font-related crash in some rare cases -- Updated the handling of filesystem errors more robustly and improved error reporting at startup, avoiding a crash in some rare cases -- Loading skins from ZIP files now appropriately ignores the `_MACOSX` folder - -## Code Refactoring and Quality - -- A large number of effort went to moving code from Surge XT repository into libraries shared between Surge and Shortcircuit, including: - - Moving many effects to `sst-effects` library - - Moving fundamental operators to `sst-basic-blocks` library - - Each of these moves included code improvements of various forms -- With JUCE 7, removed the moribund per-type class extensions -- Added uniform file comments and header guards across the entire codebase -- Centralized our locale-based formatting using the `libfmt` locale -- Removed some uses of `shared_ptr` which don't work in the VCV Rack build environment -- Made sure we properly obey `__restrict` on `gcc` -- Consistently use `uses_wavetable` for all queries about wavetable usage -- Fixed an assumption about parameter layout in `FXStorage` -- Fixed a collection of typos across the code comments -- Refactored the modulator name API to be available to more code paths - -## Infrastructure - -- Upgraded to JUCE 7.0.5 (plus a couple of accesibility patches) -- Removed the LV2 from the binary distribution -- Fixed descriptions in Linux installers to indicate LV2 is not there anymore and include CLAP in the binary -- Tweaked our CI strategy to improve time from commit to nightly -- Include the mistakenly unincluded for gcc13 -- Surge XT builds on 64-bit Raspberry Pi OS, but not 32-bit - fail the 32-bit Raspberry Pi build earlier -- Expanded documentation about polyphonic modulation, Raspberry Pi, and others -- Moved to `catch` version 3 -- Enabled CTest -- Improved unit test runtimes -- Moved minimum CMake version to 2.1 -- Moved macOS notarization from `altool` to `notarytoool` -- Consistently build for macOS 10.9 across all submodules -- Fixed compilation on macOS Clang 15 -- Added an API to end notes just based on note ID -- Added a test suite which compiles _after_ `surge-xt` as opposed to _after_ `surge-common`, which was needed for OSC unit tests -- Removed more inappropriate legacy SSE includes, allowing portability to more architectures via `simde` - -## Content - -- Updated 3 LinnStrument patches from Winds category -- Updated and added new John Valentine patches -- Updated and added new Kinsey Dulcet patches -- Added A.Liv patches -- Added Landosonic patches -- Added NES Triangle wavetable -- Added two new init patches to the factory templates, aimed at duophonic and paraphonic synthesis -- Added another Formula Tutorial, focusing on duophony -- Added a few Formula modulator presets +We plan to release Surge XT 1.3.1 sometime in Q1 of 2024. This changelog will be updated as we go along.