-
Allow disabling smoothing for MIDI-CV (pitch and mod wheel), MIDI-CC, and MIDI-Map.
-
Add several module presets for many Core modules.
-
API
- Add
Engine::getNumModules()
andEngine::getModuleIds()
to query the Engine’s modules. - Module presets beginning with “1_”, “42_”, “001_”, etc do not display those numbers. This allows you to manually order module presets. (Remember to use leading zeros as needed so alphanumeric sorting gives the correct order.)
- Add
Added Mouse device to “Computer keyboard/mouse” MIDI driver. This converts your mouse cursor position to MIDI CC 0 and 1 to be used with VCV MIDI-CC. Supports 14-bit MSB/LSB MIDI CC.
The tentative release plan for Rack v2 and Rack for DAWs is the following. By “wait”, I mean “ensure that a certain amount of time passes before the next step”.
- Continue working on Rack v2 and Rack for DAWs.
- Once both are “alpha” quality, release Rack v2 source code.
- Wait at least 4 weeks while testers and plugin developers review the code.
- Once both are “beta” quality, begin providing development builds of Rack v2. Send Rack for DAWs builds and licenses to testers.
- Wait at least 2 weeks for users to review the development builds.
- Once Rack v2 is “stable” quality, release it.
- Wait at least 2 weeks.
- Once marketing is ready, release Rack for DAWs.
The following people will be granted beta builds and licenses of Rack for DAWs at no charge.
- Developers of open-source and commercial plugins on the VCV Library.
- Developers of freeware plugins at my discretion.
- A few artists who have tested commercial plugins for VCV in the past.
I am requesting plugin developer feedback for this proposal.
Rack v2 has a new .vcv
patch format, which is a compressed folder containing the JSON-serialized patch.json
file and other files, such as module patch assets. Read more:
Other changes:
- Add module whitelist to Module Browser which synchronizes individual modules chosen in the VCV Library.
- Re-render framebuffers when subpixel offset changes, fixing bug that makes ports and knobs appear slightly offset at certain zoom levels.
- API
- Add several convenient filesystem routines to
system::
. - Move all
string::
functions dealing with filesystem paths tosystem::
.
- Add several convenient filesystem routines to
This is my (extremely) tentative feature wishlist for Rack v3.
The theme of Rack v3 is “massive performance improvements through architectural overhauls”.
- Migrate to C++17, or at the least C++14, if most developers’ Apple clang versions support it. (Apple is usually 5 years behind C++ versions.) This will probably end support for Mac 10.7.
- Compile with AVX. Add
simd::float_8
etc. - Consider switching from nanovg to Skia or vkvg or Intel fastuidraw or something else. A nanovg API wrapper will be needed.
- Use better algorithms and heuristics for stepping modules, such as possibly:
- Store buffers in cables and step modules in sections, as allowed by the cable graph.
- Add
Module::processBuffer()
.
Recent Rack v2 changelog:
- Use randomly-generated 53-bit IDs to identify modules and cables in the patch.
Forum tip:
To respond to any of these blog posts, click on the grey timestamp in the top-right of the post and click “New Topic”
Previously you saw switch tooltips and port tooltips added to Rack v2, but now lights have tooltips as well, optionally appearing if the module’s developer has named them with Module::configLight()
.
Recent Rack v2 changelog:
-
Add a tip window which appears when Rack launches or when choosing “Help > Tips”. Currently there are about 20 tips, which I hope to expand to 50 in upcoming versions.
-
Use a fuzzy search algorithm for searching modules in the Module Browser.
VCV Rack v2 development is mostly finished, with only restructuring due to Rack for DAWs, review, and testing to be completed. Features and improvements posted in this thread are only a small subset of the complete list of changes. The full changelog will be available when the source code of Rack v2 is released.
However, there is more to be done to Rack for DAWs, the VCV website, the VCV Library, and related business/marketing before Rack v2 and Rack for DAWs can be released. I will continue to use this thread for Rack for DAWs development news.
Recent changelog:
-
Redesign Module Browser with compact layout, adjustable zoom levels, sorting options, intelligent searching, and multiple tag selection.
-
When clicking on a module in the Module Browser and immediately releasing, place the module in the last cursor position in the rack, rather than the current cursor position.
-
When clicking and dragging a module from the Module Browser, fix the mouse handle offset to the center of the module.
-
Check for Library updates every few seconds to avoid needing to restart Rack to check for updates.
-
Add DC blocker setting to Audio modules. On Audio-2, enable it by default.
Since January I’ve been finding it difficult to work on VCV Rack. I know that many of you are anticipating the release of Rack v2 and Rack for DAWs, so I apologize to everyone waiting on these versions. I will continue trying to work on these in the future, but it will be hard for me, emotionally and mentally.
I think v2 will bring the greatest update to VCV Rack yet, with thousands of development hours behind it. It will solve at least half of the criticisms of VCV Rack v1, so the wait will be worth it in the end.
Name restructure
I am not a fan of the name “Rack for DAWs”, so it will be renamed to simply VCV Rack. This bundle will include VST2 and standalone versions for $99 ($149 regular price after release sale). This will solve the issue of needing two separate installers (standalone and VST2) that may have mismatched versions. Professional support of both versions will be included in your purchase of Rack. This avoids the situation where a user who has paid for the VST2 version can’t get proper support for the standalone version.
The free version of Rack will be called Rack Community Edition or Rack CE (I’m not married to this name, feel free to suggest alternatives in a new thread). It will follow the same development process as Rack v1. Source code and builds of Rack CE will be available upon each release. Professional support will not be guaranteed for Rack CE (although bug reports will be appreciated). Rack CE will be released 1-2 weeks ahead of Rack. It won’t be an unstable branch but a release candidate branch for Rack.
Rack CE will be free software (GPLv3), meaning that you have the freedom to run, study, redistribute, and distribute modified copies of the software. I’ve seen some people confuse free/open-source software with open-contribution. VCV Rack is not open-contribution. I encourage you to read The Free Software Definition and The Open Source Definition for the principles and reasons for free/open-source software.
Finally, VCV Rack will no longer use GitHub Issues, since they are a poor solution for customers and non-developers to seek support. All support queries should be sent to contact@vcvrack.com. I might make this change in a few days or wait until Rack v2 is released.
A FAQ about the previous blog post, if anyone is interested:
Why don’t I hire more people to help with VCV Rack 2?
I am flattered that you think I have enough money for that. I’m mostly joking. I have hired a few developers for various tasks for Rack 2, but the remaining work is mostly architectural and not task-parallelizable.
With that said, there are currently 3 other people (code, design, marketing) working on various aspects of Rack 2. This number can change weekly, depending on the size of tasks.
What do you mean you’re personally “finding it difficult to work on VCV Rack”?
Smear campaigns, emails with personal attacks, false rumors, and hundreds of people trying their best to purposely misinterpret things that I say, really take an emotional toll on me. Only a few Rack users (say 0.1%) engage in this behavior, but with hundreds of thousands of users, that equals hundreds of people finding ways to attack me every day. I’m not bothered by truthful claims about me, those would be my own fault. But the misrepresentations chip away at my desire to serve you, the VCV users.
Also, remember that VCV (the company) is the result of roughly a dozen people’s paid work, not just mine. My bills are greater than what I take home.
P.S. I’m not bothered by people asking “When will Rack 2 release?” It’s a normal question that just expresses curiosity, excitement, or frustration. The answer is that I do not know the release date at this time.
Why is Rack free/open-source but not open-contribution?
VCV is a company like any music software company, such as Ableton, Reason Studios, Image-Line, Cockos, Native Instruments, etc. We share the same goals to bring unique music products to music professionals and hobbyists.
But VCV was founded by a principled free/open-source software supporter. Why should users of software care about their software freedom? There are thousands of articles that answer this question in depth, but in summary, without the freedom to run, review, modify, and share source code, the software you use has the ability to manipulate your choices, and often does. Think of the ways Microsoft Windows, Apple Mac/iOS, or Google’s mobile/web apps (which I know 99% of you use) control how you use your computer and manage your private data. How can you trust them with your private data if you can’t review their source code? You can inspect, repair, replace, and re-solder Eurorack modules you own, so why can’t you do the equivalent with the software you use? This is why VCV Rack, and many VCV-developed modules, are free/open-source software.
So why doesn’t VCV accept free code contributions to Rack itself? I answered this 2 years ago in the Contributing document in Rack’s source code repository. In summary, there are three reasons, each significant enough on their own to support this decision.
- Contributers should be hired and paid for work accepted into Rack. It’s unfair for developers to work for free to develop VCV’s products.
- Free contributions usually aren’t practical for stability, compatibility, and longevity. See the above Contributing document for more detail.
- Modification to VCV Rack usually isn’t necessary. Rack plugins can do everything that Rack can do, since the Rack SDK contains every header file used by Rack. It’s easier to manage plugins each maintained by their own team than a single software product developed by hundreds of people.
Closed-contribution open-source software is very common, and I wish more software companies would release software under this model to improve their customers’ software freedom. If you think closed-contribution implies non-free/closed-source, you are misunderstanding the point of open-source and the meaning of software freedom.
Correction to Rack 2 naming
After feedback and an overwhelming likes-to-participants ratio in a community naming thread, the names of Rack 2 variants will be:
- VCV Rack Community Edition: open-source standalone version
- VCV Rack Studio Edition: commercial standalone, VST2, etc version with support
New Module
helper methods in Rack 2 and how to use them:
TSwitchQuantity* configSwitch(int paramId, float minValue, float maxValue,
float defaultValue, std::string name = "",
std::vector<std::string> labels = {});
TSwitchQuantity* configButton(int paramId, std::string name = "");
TPortInfo* configInput(int portId, std::string name = "");
TPortInfo* configOutput(int portId, std::string name = "");
TLightInfo* configLight(int lightId, std::string name = "");
void configBypass(int inputId, int outputId);
// Examples:
// Switches and buttons are just Params
configSwitch(POLAR_SWITCH, 0, 2, 0, "Polar mode",
{"Unipolar", "Bipolar", "Inverse unipolar"});
configButton(TRIG_BUTTON, "Trigger");
// Tooltip text on mouse hover
configInput(AUDIO_INPUT, "Audio");
configOutput(MIX_OUTPUT, "Mix");
configLight(GATE_LIGHT, "Gate");
// Short circuit outputs to inputs when bypassed
configBypass(LEFT_INPUT, LEFT_OUTPUT);
configBypass(RIGHT_INPUT, RIGHT_OUTPUT);
Rack 2’s API will make writing context menus as easy as possible. After writing 100+ new menu items for Rack features and module context menus, I was finding subclassing to be repetitive and usually unneccessary. In v2 plugin developers will be able to use the following helper functions.
createMenuItem
createCheckMenuItem
createBoolMenuItem
createBoolPtrMenuItem
createSubmenuItem
createIndexSubmenuItem
createIndexPtrSubmenuItem
For example, you’ll be able to add this to your appendContextMenu()
method.
menu->addChild(new MenuSeparator);
menu->addChild(createMenuItem("Load sample", "kick.wav", [=]() {module->loadSample();}));
menu->addChild(createBoolPtrMenuItem("Loop", &module->loop));
menu->addChild(createIndexPtrSubmenuItem("Mode", {"Hi-fi", "Mid-fi", "Lo-fi"}, &module->mode));
menu->addChild(createSubmenuItem("Edit",
[=](Menu* menu) {
menu->addChild(createMenuItem("Copy", "", [=]() {copy();}));
menu->addChild(createMenuItem("Paste", "", [=]() {paste();}));
}
));
This produces the following menu items at the bottom of your module’s context menu.
The source code of VCV Rack 2 is now available to the public!
VCV Rack Community Edition is free (GPLv3+) software that anyone can review, modify, and share. Our intention is to allow plugin developers to test and migrate their plugins for 6 weeks or more before Rack 2.0 is released, while we collect feedback about the API and finish up its features.
Development builds
Until Rack’s ABI is declared stable, you must only load plugins compiled against your exact Rack version. We will offer occasional builds here.
- VCV Rack Community Edition
2.git.b04e4117
: Linux / Windows (ZIP) / Mac - Audible Instruments (built for
2.git.b04e4117
): Linux / Windows / Mac - Rack SDK
2.git.b04e4117
The default user folder is named Rack2
on all OS’s, so installing Rack 2 will not interfere with your Rack 1 installation.
Bug reports and feature requests are welcome by contacting VCV support. Although we read and appreciate all of your emails about Rack Community Edition, we cannot guarantee responses except for Rack Studio Edition customers when released. Since the issue tracker on the Rack GitHub repository has not been an easy, straightforward, or organized solution for users and customers to open tickets, we have disabled this GitHub feature but will be keeping issue trackers open for open-source VCV plugins (such as Fundamental).
Release schedule
To give sufficient time to plugin developers to migrate their plugins, we guarantee the following minimum dates.
- Oct 9 at earliest: Rack 2 Studio Edition pre-release licenses available to plugin developers and media.
- Oct 23 at earliest: Declare Rack 2 API and ABI stable.
- Nov 6 at earliest: Release Rack 2.0 Community Edition for download and Studio Edition for sale.
Please offer your API feedback before it is declared stable, to ensure that the Rack 2 API is suitable for your purposes.
Plugins not yet updated by plugin developers by the release date will be automatically updated if possible by changing their version to 2.migrated.X.Y.Z
and attempting to build against the Rack 2 SDK.
Rack users love factory presets when learning and being inspired by new modules. If you are a plugin developer interested in adding factory presets to your modules, see the new VCV Manual - Module Presets article for a full reference of Rack’s preset feature.
Here is a new Rack 2 build that fixes a few issues with the plugin API (see git log). For ease of migrating, it is recommended for plugin developers to always use the latest Rack SDK.
New Rack 2 build available:
- VCV Rack Community Edition 2.git.219bbaf1: Linux / Windows / Mac
- Rack SDK 2.git.219bbaf1: Linux / Windows / Mac
- Audible Instruments (built for 2.git.219bbaf1): Linux / Windows / Mac
Developers with a plugin published on the VCV Library should have received an email directed to their plugin’s contact address containing a free license for VCV Rack Studio Edition. If you did not receive this email, contact VCV Support stating your plugin name(s) and VCV account email.
New Rack 2 build available. Remember to delete <Rack user folder>/plugins
and only install plugins built with the following SDK version.
- VCV Rack Community Edition 2.git.588342d7: Linux / Windows / Mac
- Rack SDK 2.git.588342d7: Linux / Windows / Mac
The Rack 2 plugin ABI should not yet be considered stable, but this build presents a “release candidate” for the stable ABI. We will soon announce to plugin developers via email and this thread when we begin accepting plugin updates to the VCV Library.
We are happy to announce that the Rack 2 ABI is now stable after 2 years of development. Rack 2 will be available in two variants:
- Pro ($149 regular price, $99 launch sale until 2022): Standalone, VST2
- Free (open-source, GPLv3+): Standalone
You can download beta builds and the SDK below.
If you have installed a development (git) build before, remember to delete your plugins
folder, or your entire Rack2
user folder before attempting to run.
We are now accepting v2 plugin updates to the VCV Library repo for open-source plugins and VCV Support for closed-source plugins.
Contact VCV Support for questions and reporting bugs.