Nightly Changelog We are approaching 1.4.0. This changelog was last edited as of fda3409
(Oct 10, 2025).
Wavetable Script Editor
- New Lua scripting environment, allowing for the generation, programming, and configuration of wavetables from Lua code
- Generated wavetables are applied directly to the wavetable oscillator and can be exported as
.wav
and .wt
files or specifically for Serum and VCV Rack
- Exported wavetables include metadata to preserve the generating scripts and parameters
- Support for a new
.wtscript
preset format that generates the resulting wavetable when loaded
- Includes a collection of wavetable scripts for use, exploration, and learning
- FFT functions and a new Prelude library with helper functions specifically for wavetable scripting
- Added parameters
voice_count
, voice_id
, poly_limit
, is_rendering_to_ui
, scene_mode
, play_mode
, split_point
, mpe_enabled
and tuned_key
- Added a global table named
shared
which is available to all Formula instances across all voices
- Custom Formula output names now save in Formula presets
- Deprecated macro subscriptions; macros are now always available by default
- Added missing
channel
, key
and velocity
parameters to the Formula init function state
- New “Ranged Keytrack” and “Euclidean Sequencer” presets
- The Formula tutorials “Both Time And Space” and “Reich - Piano Phase” now use exact BPM values
- Added confirmation alert when closing the editor with unapplied changes via keybindings
- Fixed a possible crash when switching to an unused output
Open Sound Control
- FX Parameter name changes update in a more modulator / granular fashion
Effects
- Added a new effect: Floaty Delay!
- Nimbus now uses the same resampling method as Twist oscillator
- Fixed a problem where CHOW mix was stuck at 100%
- Fixed a problem where, in certain configurations at very low drive, the Distortion effect could become unstable
Code Editor
- Added search (Ctrl/Cmd+F), replace (Ctrl/Cmd+H) and go to line (Ctrl/Cmd+G) functionality
- New syntax highlighting color schemes
- Added occurance highlighting for selected text, search results and added highlighting for current line for readability
- Syntax highlighting now supports multiline comments
- Code editor now auto-indents for function, while and if statements
- New line will keep the current indentation level, tab now always adds an indent at the caret position and tab also indents selections
- Backspace now removes one indentation level at a time instead of a single space
- Added auto-insert and auto-enclosure for square brackets, parentheses, curly braces and quotation marks
- Code apply now trims trailing whitespace
- Code editor can scroll and select at the same time and scroll horizontally (Shift+Mousewheel)
- Double-click now selects only one word at a time
- Undo/Redo now respond to keys set in the Keyboard Shortcut Editor
- Code editor now saves state for caret position, selection and search/replace/goto line on focus loss
- Code editor state is cleared if a Formula .modpreset, .wtscript or a .fxp is loaded
- Formula debugger now groups variables under user, shared and built-in sections that can be collapsed
- Debugger now always updates on code compilation
- Debugger UI buttons are now accessable
- Fixed a possible crash due to recursion in the debugger
- Fixed a bug where moving an LFO parameter with the debugger open would cause the LFO display to stop working
Other Lua Changes
- Added
pairs
, unpack
, next
, type
, tostring
, tonumber
, setmetatable
, pcall
and xpcall
functions to sandbox environment
- Added
string
, table
function tables and bit
module
- Added
print
function for console output
- Improved error reporting for script compilation
SurgePy
- Explicity set process input to false
- Ability to load a wavetable into a patch
Infrastructure
- Moved from Azure to GitHub Actions
- Removed Windows 32-bit build
- Moved Linux binary distribution to a Ubuntu 20 Docker image
- Moved to Clang on Windows 64-bit
- Moved to JUCE 8.0.4, requiring Windows 10 and macOS 10.13
- Began an ARM64EC Windows build
- New LuaJIT library build system
- Merged support for Linux builds using
musl
rather than glibc
Code Factoring and Quality
- Move the oscillator unison/drift/character support to
sst-basic-blocks
submodule
- Remove old and unused allpass filter code
- Move Reverb 2, Treemonster, Nimbus, Rotary Speaker to
sst-effects
submodule
- Update
eurorack
submodule to build with MSVC Clang
- Remove dependency on
libsamplerate
- Increase the MSVC stack size in debug builds to allow Formula modulator tests to be reliable
- Switch to not using
simde
native aliases to accomodate ARM64EC
- Clean up a collection of issues identified by static analysis tool insert link to tool
Other UI/UX changes
- Use wavetable name as default filename when exporting a wavetable
- Make the menu entry to rename the wavetable consistent with other rename actions
- Added keybinding for toggling the Wavetable Script editor (Alt/Opt+W by default)
- Explicitly set tab focus order for MSEG editor buttons
Diffs Not Processed Into Changelog
These commits have not yet turned into human readable changelog, and are ordered from oldest to latest.