In this document, Mod is Ctrl on Windows/Linux and Cmd on Mac.
Add port tooltips with name, voltage, and list of connected ports.
Evaluate mathematical expressions (such as 1+2*3
) in parameter context menu fields.
Add module whitelist to Module Browser.
Restructure engine to no longer use an “engine thread”.
Replace module disabling with bypassing, which directly routes certain inputs to outputs if specified by the plugin.
Duplicate cables patched to inputs when a module is duplicated.
Add module tags to module context menu.
Add module manual URL (if plugin developer supplies it) to module context menu item.
Add quick access to user module patches from <Rack user dir>/presets/<plugin slug>/<module slug>
to module context menu.
Add infinity and NaN protection to cables, so they won't propagate non-finite values from badly behaving modules.
Add basic headless support with the -h
flag.
Add multiple parameter dragging modes: scaled linear, absolute rotary, and relative rotary.
Add “knobLinearSensitivity” property to settings.
Add timestamps to MIDI messages.
Allow sending and receiving SysEx messages through MIDI drivers.
Add ability to scroll the rack and other scroll containers using the left mouse button. This allows touch devices to scroll by dragging.
Add “File > Open recent” menu item for opening recent patches.
Add “Preset > Save template” to module context menu which saves the default module preset to load when a new instance is added to the rack.
Break Rack executable into libRack shared library and lightweight standalone Rack executable.
Add support for 1/2x and 1/4x low-fidelity sample rates to engine and “Engine > Sample rates” menu.
Add Escape key command for existing fullscreen, in case F11 doesn't work.
Allow RtAudio device block size to be as low as 16.
Copy cable color when cloning cables with Ctrl+click.
Fix key commands on AZERTY, Dvorak, and all other keyboard layouts.
Add Mouse device to Computer keyboard/mouse MIDI driver.
Core
API
Module::configInput()
and Module::configOutput()
for adding names to ports.ParamWidget::paramQuantity
with ParamWidget::getParamQuantity()
..modules[].manualUrl
to plugin manifest schema.appendAudioMenu()
and appendMidiMenu()
so plugin developers can develop custom audio/MIDI interfaces without adding an AudioWidget/MidiWidget
to their panel.Module::toJson()
and fromJson()
virtual.Module::paramsToJson()
and paramsFromJson()
virtual methods.SwitchQuantity
and a helper method Module::configSwitch()
for displaying named values in the parameter context menu. Also add Module::configButton()
recommended for momentary switches with no value labels.Engine::getNumModules()
and Engine::getModuleIds()
.event::KeyBase::keyName
. Plugins should use this instead of key
for alphanumeric keys in order to support all keyboard layouts.dsp::RingBuffer
.rack::APP
, rack::DEBUG
, etc macros. Use namespace-less APP
, DEBUG
, etc instead.dsp::IIRFilter
.dsp::BiquadFilter
.dsp/approx.hpp
with approximate math functions.simd::tan()
, atan()
, and atan2()
.string::toBase64()
and fromBase64()
.string::absolutePath()
.-
and Mod-=
, or Mod-scroll, for zooming the rack.settings.json
.-p X
flag for dumping a screenshot of each available module.helper.py
for creating and manipulating plugins with the command-line.simd.hpp
for generically handling arithmetic and math functions for vectors of floats, accelerated with SSE.dsp::VuMeter2
.dsp::Timer
and dsp::Counter
.