VCV Rack 2.6.0

VCV is a virtual Eurorack DAW. VCV Rack is the engine powering VCV modules. Add modules, connect cables, edit parameters, and save/load patches. Create generative patches with your mouse, perform with your MIDI keyboard controller, or connect it to your favorite DAW using the Rack Bridge VST/AU plugin (coming soon). In Rack, control voltages and audio signals are equivalent, so you can modulate parameters with sonic-range VCOs to create customizable FM synths or chaotic wave-shaping oscillators. If you already own a modular synthesizer, you can enhance your setup with an audio interface supporting CV signals or a CV-MIDI-CV interface module with Rack's CV Interface (coming soon).

Tags artistic-software multimedia audio mixers daw
License BSDL
State stable

Recent Releases

2.6.025 Nov 2024 03:15 major feature: Add ability to grab all plugs stacked on a port with the "All cables" menu item. When dropping a plug on a port, always stack it on top of other plugs. Add "View Zoom to fit modules" to menu bar with key command F4. Add "Zoom to fit" to module context menu with key command Ctrl+F4. Add "View Mouse wheel" setting to make mouse wheel zoom instead of scroll. Add parameter value functions `vtobpm()` and `bpmtov()`. On non-QWERTY keyboards, use QWERTY key positions for key commands instead of letters. Render 2-stop linear/radial gradients with any stop offsets and transformations in SVG. Rack Pro. - VST3 plugin forcing DAW MIDI input to channel 1. - Allow VST3 plugin to receive MIDI CC, pitch bend, and channel aftertouch. Core. - MIDI to CV: When sustain pedal is released in monophonic mode, turn off gate if no notes are held. API. - Don't combine SDK packages for Mac-x64 and Mac-arm64. - Update libcurl to 8.10.0 and OpenSSL to 3.3.2. - Add `dsp::MidiParser` class.
2.5.210 May 2024 09:25 minor feature: Add configurable cable color labels. When duplicating module with cables, duplicate cables connected to outputs as well as inputs. Allow building multi-arch x64+arm64 "Universal" Mac binary. Optimize engine's cable stepping algorithm to be as CPU-efficient as non-stackable inputs. Limit log file size to 10 MB. API. - Define `ARCH_*` macros in `arch.hpp` header (included in `rack.hpp`) instead of in compiler flags.
2.5.118 Apr 2024 05:05 minor feature: Remember the last selected cable color from the port's "New cable" menu item. When "Auto-rotate cables" is enabled, the next color in the rotation is used. crash when modules such as VCV MIDI-Map bind parameters. If loaded patch contains unavailable modules, don't Rack after user chooses to open them in VCV Library. Instead, load patch without these modules so user can download them. Add error dialog if moving Rack's user folder to new location fails.
2.5.009 Apr 2024 06:05 major feature: Allow stacking cables on input ports. Cable voltages are summed. Ask to view unavailable modules on the VCV Library when loading a patch. Add "View Cable colors" menu to edit cable colors and disable auto-rotating colors. Add parameter value functions `gaintodb()` (gain factor to decibels), `dbtogain()`, `vtof()` (1V/octave voltage to frequency), and `ftov()`. Move Rack user folder to: - Mac: ` /Library/Application Support/Rack2`. - Windows: `AppData/Local/Rack2`. - Linux: ` /.local/share/Rack2`. Update Mac icon. If Microphone permission is blocked on Mac, show warning dialog on startup. Add `"verifyHttpsCerts"` setting to disable verifying HTTPS certificates. Rack Pro. - MIDI note velocity scale in CLAP adapter. API. - Don't zero output port voltages when disconnecting cables. - `ExpanderChangeEvent` not being dispatched when removing an adjacent module.
2.4.126 Aug 2023 07:25 minor bugfix: Improve module browser search order. Library menu plugin update items not being re-enabled when downloading is completed. Rack Pro. - discarded MIDI input messages for all plugin adapters. API. - Add `LightButton` to component library. - Use SSE4.1 intrinsics in `simd::trunc`, `floor`, `ceil`, `round`, and `fmod` to improve performance.
2.4.013 Aug 2023 22:24 major feature: - Add "View Use dark panels if available" menu item. - Show module ID in module's Info menu. - Fix order of input MIDI messages having the same frame timestamp. This fixes *VCV MIDI to CV* from sometimes duplicating clock pulses when transport starts. - Move plugins folder to `/plugins--`. - Core - Add dark panels. - Rack Pro - Add CLAP FX and Generator plugin adapters in addition to existing Instrument plugin. - Fix file dialogs from sometimes loading/saving the wrong Rack plugin instance when multiple instances are running. - Fix crash when using Mac VST3 and AU plugins simultaneously in a DAW. - Fix crash when removing one of multiple running plugin instances in Studio One. - Fix CLAP plugin discarding output MIDI messages. - API - Add `ThemedSvgPanel` and `ThemedSvgScrew` classes which automatically switch SVGs when dark panels are toggled. - Add `"minRackVersion"` property to plugin manifest, which prevents Rack from downloading plugin if version is not compatible. - Fix `ContextCreateEvent` and `ContextDestroyEvent` not defining `vg` NanoVG context.
1.1.616 Nov 2019 06:45 minor feature: "Frame rate" typo in changelog. . screenshot flag -t. . Switch to dev version. . Core MIDI-Map: Only set param if CC is initialized. . Include rack:: namespace in APP and logger macros (DE, INFO, WARN, . . Disable crash warning dialog in dev mode. . Explicitly specify RTLD_LOCAL for plugin loading. . Nudge ParamTooltip inside parent. . Remove RACK_FLATTEN_NAMESPACES since it is not known to be used. . Delete ModelBox tooltips in a deferred way to avoid a use-after-free. . Remove recursive rack namespace. . Template-ize some math.hpp functions. . Add FrameRateWidget. . Don't use glfwGetOpenedFilename() when launched via command line on Mac. . Use GLFW's glfwGetOpenedFilename(). . Don't include GLFW/glfw3native.h in window.hpp. . Add proper app bundle detection on Mac. . Refactor createLightParamCentered(). . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Add system::getEntriesRecursive(). . Add `EXTRA_FLAGS`, `EXTRA_CFLAGS`, `EXTRA_CXXFLAGS`, `EXTRA_LDFLAGS` . . Enable proxy in curl build. . Replace generic log2 with int. . Add inline to log2. . Remove quotes from SLUG and VERSION in plugin Makefile, but add them . . Clarify graphics licenses. . Add IIRFilter. . Add ability for plugins to use LuaJIT. . Add changelog entries. . Add json.hpp. . Revert "Add json.hpp.". . string namespace: Change base64 functions. Add compress/uncompress. . Update documentation for string:: . Use zlib types for string::compress/uncompress implementation. . Add text editing in NoteChoice of MIDI-Gate and CC-Gate. . random::uniform() to not return 1.f. . Update changelog. . Bump version.
1.1.530 Sep 2019 03:15 minor feature: Use dev version . MIDI-Map: Jump value for MIDI CC buttons. . Line-break descriptions for tags. . Add libsamplerate to deps. Reorder dep Makefile. . Add libsamplerate license to LICENSE-dist. . Add libsamplerate to Mac build. . Add libsamplerate to Windows build. . Delete ModuleWidget children before deleting Module. . Add Hardware tag. . Reorder tag and brand lists in Module Browser. . Accept backspace key command on key-repeat with Module Browser search . . Move plugin.cpp's extractZip to system::unzipToFolder(). . Correct documentation for math::interpolateLinear. . Add changelog entry for 1.1.5. . Add automatic unzipping when updating on Mac. . Update formatting of code generated by helper script. . sustain pedal in polyphonic mode. . Add changelogUrl to helper script. . Update curl and OpenSSL. . Add network::init(). Add asset::bundlePath. . Don't use GLU header. . Don't use GLU in dep.cpp either. . Stop engine wprker threads when engine is paused. . Hide menu and scrollbars when fullscreen. . Add key command for engine CPU timer. . Add numpad key commands. Clean up Scene::onHoverKey(). . Add sort-of-automatic updater on Linux. . Change screenshot flag to -t zoom . Re-enable on Mac. . Replace "frameRateLimit" and "frameRateSync" in settings with "frameS . . Add Engine Frame rate menu bar item. . Use actual monitor refresh rate instead of 60 Hz as frame rate refere . . Bump version. . Add LEDLightSlider and other component library classes. . Add SegmentDisplay to component library. huge light halo wi . . Update changelog.
1.1.423 Aug 2019 03:15 minor feature: Clean up code and templates. . Slightly improve random::uniform() performance. . Update deps. . Module Browser: Sort modules by order they are added to plugins with . . Port sse_mathfun_extension to simd folder. . Add dsp::BiquadFilter. . Include complex.h. Reimplement dsp::TBiquadFilter::getFrequencyRespon . . Remove dsp::TBiquadFilter::type from state. . Add Artistic Style formatting script. . Rewrite CONTRIBUTING. Tweak templates. . Rename CPU meter to "module timer". . Use.astylerc options file rather than wrapper script for astyle. . Tweak.astylerc. . Revise astylerc. . Auto-format code with astyle. . MIDI-Map: re-enable filtering. . Refactor engine worker thread relaunching. . Move tag lists to tag.cpp. . Restructure the tag/alias data structure. . Add dsp/approx.hpp. . Update changelog. . Reorder tag.cpp. Clean up comments. . Use thread runtime rather than time of day for measuring module CPU. . Rename "Module timer" back to "CPU meter". . Add system::getThreadTime implementation on Windows. . Ignore mouseDelta (set to zero) after locking and unlocking cursor. . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Remove deging. . Change _mm_cvtps_epi32 (rounding conversion) to _mm_cvttps_epi32 (tru . . Add float_4 implementation of approxExp2Floor. . Measure CPU time every N frames instead of every frame. Measure overh . . Implement system::getThreadTime on Mac. . Port some of sse_mathfun to functions.hpp. Clean up SIMD headers. . Remove exception resetting. . Update tag list URL. . Check plugin version against Rack ABI version before plugin is loaded. . Make SchmittTrigger a template specialization instead of a separate c . . . . Add Base64 encoding/decoding to string.hpp. . Update changelog. . Bump version. . Use h
1.1.325 Jul 2019 18:45 minor feature: Add note to libcurl build flags on Mac. . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Add date to changelog. . Make dev version. . Add "pragma once" to plugin.hpp generated by helper.py. . Use built-in certificate bundle for curl. . Use OpenSSL on Windows. Include cacert.pem in dist. . Allow included Fundamental plugin to be unsigned, which solves #1494. . Bump version. . Add changelog entry for 1.1.3. Remove verbose curl. . Refactor dist Makefile target.
1.1.221 Jul 2019 03:25 minor feature: Add date to changelog. . Assert that there are no duplicate PortWidgets added to a ModuleWidget. . Add changelog entry. . Don't deserialize left/rightModuleIds. . Decrease scroll speed on Mac for all mice. . Add JACK support to RtMidi. . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Add PatchManager::loadPathDialog() for dragging a file to the Rack wi . . Add working notarization target and Entitlements file for Mac. . Clarify license. . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Disable RtMidi JACK on Mac. . Re-enable ALSA MIDI on Linux. . crash in RackWidget::pastePresetClipboardAction(). . Update osdialog. Update CHANGELOG. . Hide CPU meter when module is disabled. . Adjust helper.py to better parse illustrator-generated svg files. . indentation. . Add code of conduct, from https://www.contributor-covenant.org/. . Add email to CODE-OF-CONDUCT. . Reenable backtrace printing in log. Demangle symbols on Linux. . Clean up changelog and Makefile. . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Put tags above description in Module Browser tooltip. . Add fatal signal handling on Mac, with better stability in the handle . . Add log path to fatal signal handler dialog message. . Update CHANGELOG. . Clarify wording in license details. . Remove res/ license texts because they are redundant with /LICENSE.md . . Add string::filename() before computing string::filenameExtension(). . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Re-enable certificate checking in network:: . Add WhiteLight to component library. . Use native SSL implementation instead of local OpenSSL. Untested on. . Merge branch 'v1' of github.com:VCVRack/Rack into v1. . Remove OpenSSL from dependencies. . Revert "Remove OpenSSL from dependencies.". . Re-add OpenSSL in libcurl build. . Use schannel on Win instead of OpenSSL. . Remove OpenSSL header. . Remove OpenSSL from deps on Win. . Write stack trace to log.txt on Windows. .
1.1.102 Jul 2019 03:15 minor feature: list formatting in changelog. . Revert to case insensitive sorting of brands in Module Browser. . Don't flip scroll coordinates of ScrollWidget when shift is held on Mac. . Clean up unused Mac build targets. Separate dep/Makefile targets into . . Update osdialog dep. . Add entry for 1.1.1 in changelog. . Add updater.hpp/cpp and more advanced app updating functionality. . Finish auto-updater on Windows. Add network::urlPath(). Reimplement. . Update changelog. . expander assignment when force-dragging modules. . Inkscape labels not being read from helper.py. . Oversample screenshots by 2. . mixup of documentation of plugin::Plugin members. . Bump version to 1.1.1.
1.1.028 Jun 2019 03:15 minor feature: F1 key command for opening manual in a web browser. . Disable -p flag on Mac for now since App Translocation interferes wit . . Add `make notarize` target to Makefile. . Revise templates. . Add `make staple` target, although for now this is useless. Prompt us . . Update osdialog, which loading/saving UTF-8 files on Windows. . Add changelog for 1.0.1. . Bridge MIDI receiving, thanks stoermelder. . Initialize simd::Vector to zero. . Add plugin name to Module Browser search string. . Add deging for scancodes. . Make default constructor cause Vector to be uninitialized. . Make Tooltip fit inside parent. . Add system::getAbsoluteDirectory(). . Implement system::getAbsolutePath() on Mac. . Move system::getAbsolutePath() to string::absolutePath(). Implement on. . Add more keyboard key and scancode deging. . Remove line from old Mac dependency. . Make brand list case sensitive. . Wrap Core plugin in core:: namespace. . Update changelog. . in RackWidget::toJson() where cable ID was being set on the r . . Clear filters in Module Browser when backspace is pressed while the s . . Change upcoming version to 1.1.0. . Add Ctrl-0 key command for resetting zoom. . Emulate middle-click with Ctrl-shift-click. . Update CHANGELOG. . Add error message to stderr if cannot open log.txt file. . Unset ID of newly cloned modules because serializing them sets the ID. . Delete keyCallback deging. . Bump version.
1.0.020 Jun 2019 21:05 minor feature: Move all metadata from Param to ParamQuantity. . Change origin offset of RackScrollWidget. . RackWidget_updateAdjacent not disconnecting modules. . Only serialize left/rightModuleId if valid ID. . Assert ModuleWidget height when added to RackWidget. Round ModuleWidg . . Log OS version on launch. . GetVersion function call. . Add partial Unicode handling of filenames on Windows. . Add stringwstring conversion functions. . Change helper and rack0.hpp to use new configParam method. Add dsp::C . . syntax. . Clarify license on Core panels. . where only one expander could be set. . Change dsp::Counter to dsp::ClockDivider. . Add string::ellipsizePre. Use kHz instead of Hz for sample rate di . . Initialize OpenGL context before calling scene- draw(). . Add shadows to SvgButton and SvgSwitch. Rearrange ModuleWidget contex . . Reorder glClear and nanovg drawing. Rename CPU meter to CPU timer. . Add SED to dep.mk. . Rename CPU meter. . string::basename() on Mac (and possibly Windows). Rename stri . . Improve documentation of Module. . Offset modules to origin of rack when saving patch. . Replace `Event::consumed` with `target` and `propogating`. . Rename `widget::*Event` to `event::*`. . Add `event::Context::consumed`. . Consume onDragHover in OpaqueWidget. . Add middle-click-drag to ScrollWidget. numerous introduced b . . Call onAction when clicking ParamWidgets. . Disable middle-click triggering HoverScroll event. . Handle HoverScroll only if scrollbars are visible. . Allow TextField to be dragged. . Update event documentation. . Add Ctrl-- and Ctrl-= for zooming in and out. . Add assertions for 0-width ModuleWidgets. Add warning if framebuffer . . Create Action event when Knob is pressed but not moved. . Make RackRails positioned correctly to prevent blank frames. . Add bus board to rack. . rack rail when resizing. Decrease size of rack rail framebuffer. . Reset nanovg context before calling event handlers and step(). . Add some Inf
0.6.2b15 Jul 2018 07:45 minor feature: Add Bridge fx VST plugin to windows dist . Tweak license text. . Add ::reset() to TriggerGenerator. . Add -g and -l command line arguments. . Disable drawing of power meter on Core AUDIO. . Re-add power meter for Audio, add Rect::shrink. . Reorganize DSP headers, rewrite Decimator, rewrite some FIR functions. . Added Upsampler. . Change API of dsp/ode.hpp. . Change variable names, add example to documentation. . More documentation. . Revert renaming of PulseGenerator to TriggerGenerator. . Un-deprecate helper functions, move to helpers.hpp. . mistakes in helper functions. . Bump version, add changelog entry. . Merge branch 'v0.6' of https://github.com/VCVRack/Rack into v0.6. . Bump version for rebuild.
0.6.119 Jun 2018 18:45 minor feature: Refactor OBJECTS in compile.mk . Update changelog. . Update CHANGELOG, strip flags in dist. . Update CHANGELOG. . Update CHANGELOG. . Update CHANGELOG. . Condense Module Browser module list item, don't persist filters. . Use generic strip in Makefiles. . Full static build on Linux. . Add JACK driver to Linux rtaudio, forcing Linux users to have JACK. . link for libcurl and libopenssl on Mac. . Merge branch 'v0.6' of https://github.com/VCVRack/Rack into v0.6. . Full static build on Mac. . Update make run, de, and perf. . WIP Windows static build. . Windows static build. . Include a couple.dlls for plugins to link to on Windows. . Switch from curl to wget for building deps. . Merge branch 'v0.6' of github.com:VCVRack/Rack into v0.6. . Switch to Cmake build for GLEW. . Update openssl and curl. . Bump version. . Update nanosvg. . Set default pitch to 0V for MIDI-1, add RGBLight. . Header file tweaks. . Add Vec::flip(). . manage plugins URL. . Add VCVRack as the name of the RtAudio client. . Forgot a space. . . . RtMidi Clients are named VCV Rack. . . . Merge branch 'master' of github.com:VCVRack/Rack into v0.6. . Use pkgconfig for finding openssl version. . Restructure midi for multiplexing, add gamepad midi driver, add CPU. . Further restructure to midi.hpp. . Added more verbose logging. . More MIDI restructuring, changed driver - driverId, device - deviceId. . Generate MIDI with Gamepad driver, allow negative CC values in MIDI-CC. . Added colors to logger (terminal mode only), use notes for gamepad. . Added preliminary computer keyboard MIDI support. . Massive refactor to MIDI API, re-enable Bridge. . Clean up temporary code, properly handle unsubscribing from rtmidi. . blank MIDI driver. Open patch with command-line argument, set Windows global directory to. . Add keypad Enter key command for module browser. . Added Ubuntu build dependencies. . Use hex strings for colors in patch file instead of object. . Merge branch
0.6.006 Apr 2018 06:45 minor feature: Implement single message per step for all midi modules and quad m . rtaudio link. . Merge branch 'v0.5'. . Update CHANGELOG for v0.5.1. . Update samplerate.hpp API. . quad midi pedal handling. . merge conflict. . Add `make dist` to plugins.mk. . Remove interactive mode from dep `make clean`. . Build system. Added support for continuous encoders, aka Knob widgets with infinite. . pedal gate release. . . Add AudioWidget. . Merge branch 'master' of github.com:VCVRack/Rack. . Remove request URL from log.txt. . Use AudioIO in AudioInterface. . Stop audio instead of abort, use requested sample rate instead of. . Return specialized type in rack.hpp helper functions. . Use t sample rate in AudioIO::openStream(). . Add midi.cpp with MidiIO class. . Refactor plugin sync code. . stream upon destructing AudioInterface. . Last commit doesn't do anything, reverted. . Un-reverting last commit. . Use RELEASE=1 to build release version. VERSION is automatically set . . Use Module::params/inputs/outputs indices instead of. . Serialize wire color. . ModuleWidget serializes pos in rack grid coordinates instead of pixel. . Draw opaque wire if one of its ports is hovered. . Reorganize midi.hpp and audio.hpp, add prompt before clearing patch a . . error message in RackWidget::fromJson. . . . Re-LightWidget drawing. . Merge branch 'master' of github.com:VCVRack/Rack. . Enable denormals-are-zero (DAZ) mode in engine. . Added active light indicators to AudioInterface and MIDItoCVInterface. . Add absf() to math.hpp. . scrolling menus again. . Rename randomSeedTime to randomInit and assert that it's called only. . Use curl instead of wget for make dep. . Define SLUG macro from Makefile for plugins. . Refactor math.hpp. . Refactor util.hpp. . Rename util.hpp to common.hpp, include paths. . for menu clamping. . eucmod typos. . Replace github release of speexdsp with pre-autogen'd package hosted on. . Added clock modulator tag. . Merge branch 'ma
0.5.120 Dec 2017 03:15 minor feature: RtAudio include path . Update changelog. . Update LICENSE. . Add SSL support to curl build. . note off velocity. . Add Rack version to plugin request. . Update plugin manager to new online Rack plugin manager API. . Add openssl to build system. . Add -lcrypto to Mac/Windows build. . Add CKSSThree switch, ENUMS macro. . Update Mac make dist. . Leave Add Module popup metadata window open after mouse leaves module. . Merge branch 'v0.5' of github.com:VCVRack/Rack into v0.5. . Windows build. . Disable SSL cert verification, add openssl dlls to Windows build. . Add openssl to Linux build. . Add openssl to Linux dist. . Merge branch 'v0.5' of github.com:VCVRack/Rack into v0.5. . Add -lssl to Linux build.
0.5.024 Nov 2017 03:15 minor feature: Restructure midi interface . Add trigger-to-cv module. . Added Quit to File menu. . WIP Implement rtMidi wrapper. . File New attempts to load template.vcv if exists. . Remove macro VERSION_0_4_0. There is no need for version checks, since. . Simplify midi splitting and implement proper handling. . Update midi modules accordingly. . Remove velocity dependent output from trigger for now (let trigger be . . segfault on closing rack (and variable naming). . minor. Copy correct librtmidi file to Linux dist. . Reduce Light radius. . use int. . Update midi clock implementation and minor for clock. . Change color of LightPanel to match Fundamental. . Added boolean parameter to make knobs snap, made them visually snap as. . Don't smooth snapped knobs. . Don't define VERSION in dev builds. . Add -Wsuggest-override to build system for Rack and plugins. . Remove gSampleRate, add engineGetSampleRate(). . Add override keyword everywhere. . Add message to build the correct version of Rack when building plugins. . Rename initialize() to reset(). . clock ratio selection. . Add midi learn to CC/Trigger module (hold down right mouse button on. . resetMidi when initialize is called. . handling for ignore types. . remove virtual from functions in modules (inherit from midiIO not from. . merge master. . Resolve after merging (initialisze - reset etc.). . Save lastPath in settings. . Merge branch 'bontric-2017-10-bontric-midi-interface-revamp'. . Mac, sleep GUI thread if framerate is too high. . . . . Added version metadata to plugin. . Merge branch 'master' of github.com:VCVRack/Rack. . Renamed Plugin to Manufacturer, added multiline to TextField, added. . (Also: add indicator lights which are ON as long as a knob is. . Merge branch 'master' of https://gith
0.4.020 Nov 2017 05:11 minor feature: Stackable Cables on output ports, sub-menus for each plugin and scrollable menus, MIDI CC-to-CV Interface, updated MIDI-to-CV Interface, resizable Blank Panel added to Core, added plug lights for monitoring voltages of cables.