Rack development blog

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);
28 Likes

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.

2021-06-15-133228_1600x900_scrot

45 Likes

The source code of VCV Rack 2 is now available to the public! :tada::partying_face::confetti_ball:

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.

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.

65 Likes

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.

19 Likes

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.

23 Likes

New Rack 2 build available:

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.

25 Likes

New Rack 2 build available. Remember to delete <Rack user folder>/plugins and only install plugins built with the following SDK version.

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.

34 Likes

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.

78 Likes

This build fixes missing linker symbol issues with a few plugins, along with several usability tweaks.

22 Likes

Note: After installing a beta or git build of Rack, if you wish to update to a newer version of Rack, you must delete the old installation folder and user folder. (See Where is the “Rack user folder”?)

In-place updates from beta or git builds of Rack are not supported by VCV and will likely cause crashes or bugs if the above suggestion is not followed.

6 Likes

Before Rack 2 was released, we planned to release bleeding-edge updates to Rack Free as soon as they were ready, and 1-2 weeks later release these stable, tested updates to Rack Pro. However, this plan prevents Rack Pro customers from trying new features when Rack Free users can, so instead we will be posting “preview” builds here before both variants become available at VCV Rack 2 - Virtual Eurorack Studio a few days later.

The official release will be these exact files (not re-builds), and if a build is rejected due to a regression, its version number is skipped.

VCV Rack 2.0.4 is released

21 Likes

VCV Rack 2.0.5 is released

22 Likes

VCV Rack 2.0.6 is released

27 Likes

VCV Rack 2.1.0 preview

26 Likes

VCV Rack 2.1.1 preview

23 Likes

VCV Rack 2.1.2 preview

24 Likes

VCV Rack 2.2.0 has been released, including VST3, Audio Unit, and CLAP plugins for Rack Pro.

Builds of Rack for Mac ARM are available for developers to build and test their plugins on Mac ARM. This is in “beta” stage, so some features or plugin adapters might not work correctly.

47 Likes

VCV Rack 2.2.1 preview

18 Likes

VCV Rack 2.2.2 preview

21 Likes

VCV Rack 2.2.3 preview

19 Likes