VCV Rack 2.4.1

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.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 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 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 into v1. . Add date to changelog. . Make dev version. . Add "pragma once" to plugin.hpp generated by . 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 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 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 to better parse illustrator-generated svg files. . indentation. . Add code of conduct, from . Add email to CODE-OF-CONDUCT. . Reenable backtrace printing in log. Demangle symbols on Linux. . Clean up changelog and Makefile. . Merge branch 'v1' of 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 / . . Add string::filename() before computing string::filenameExtension(). . Merge branch 'v1' of 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 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 . 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 . 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 into v0.6. . Bump version for rebuild.
0.6.119 Jun 2018 18:45 minor feature: Refactor OBJECTS in . 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 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 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 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 . 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 . 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 . 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 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 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 . 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.