Created Rack 1.0 promotional page at https://vcvrack.com/Rack.html.
Is anyone using the following element-wise SIMD vector constructors? PM me if so.
simd::float_4(float x1, float x2, float x3, float x4)
simd::int32_4(int32_t x1, int32_t x2, int32_t x3, int32_t x4)
Iām going to reverse the element order by using _mm_setr_ps()
rather than _mm_set_ps()
to match the order of element access.
I plan for v1 plugins to be API-compatible with Rack v2, except for āunusualā plugins that use the deep corners of Rackās API. ABI compatibility will break to allow Rack for DAWs to load normal Rack plugins, among other reasons, so hopefully the migration process from v1 to v2 will only involve recompiling your plugins (and optionally fixing new deprecated warnings). If by some miracle the ABI doesnāt need to change, I will simply keep the version at v1 when releasing Rack for DAWs.
Iām also looking for other possible names for Rack for DAWsā¦
I will be on vacation starting Wednesday but will still be responsive to customer support, critical bugs, and business queries. I will announce San Francisco, Santa Clara, and Stanford talk dates soon. After returning from California, I will be back to work.
Rack 1.1.0 will be released on Tuesday-Wednesday containing the following features and fixes. https://github.com/VCVRack/Rack/blob/v1/CHANGELOG.md
In order for plugin updates to be accepted, the VCV Library team no longer allows slug changes for either plugins and modules. A slug āchangeā is defined by a slug that is removed at the same time that a very similar plugin/module is added. We will attempt to spot such changes manually and automatically (through scripts), but all developers should keep an eye out for mistakes/typos when migrating or updating.
The Plugin Development Tutorial is now fully up-to-date for Rack v1. If you have been waiting for a stable API and documentation to dive into Rack plugin development, now is an excellent time to begin.
Rack dev and the upcoming 1.2.0 release will include an assertion that no duplicate input/output ports can be added to a ModuleWidget
. This means that if you have the two lines
addInput(createInputCentered<PJ3410Port>(mm2px(Vec(0, 0)), module, MyModule::PITCH_INPUT));
addInput(createInputCentered<PJ3410Port>(mm2px(Vec(0, 0)), module, MyModule::PITCH_INPUT));
in your ModuleWidget
constructor, your plugin will cause Rack to crash when your module is rendered.
I donāt have all plugins installed, but of my arbitrary selection, the following plugins crash in Rack dev and should be fixed by making sure all ports have unique port IDs (usually defined in the Input/OutputIds
enum).
- DHE-Modules (I think Fuzzy Logic H but maybe more)
- SurgeRack
Rack 1.1.2 is released. Changelog: https://github.com/VCVRack/Rack/blob/v1/CHANGELOG.md
You can now navigate https://vcvrack.com/downloads/ for previous VCV Rack releases.
Added dsp::BiquadFilter to DSP library. Supports SIMD.
Added dsp/approx.hpp, which only has one function for computing 2^x but will later contain several approximations of common math functions for faster DSP.
Rack 1.1.4 has been released.
Added libsamplerate to Rack, so plugins no longer need to build their own copy. (Fundamental, FrozenWasteland, maybe more)
Of course, it would be a good idea to wait a month or two after the next Rack version is released before releasing a plugin that takes advantage of the included libsamplerate.
If you build Rack from source, note that you need to make dep
the next time you pull and rebuild.
Added āHardwareā tag for hardware module clones. https://github.com/VCVRack/Rack/blob/v1/src/tag.cpp#L35
Developers may now use "manualUrl"
for each module in your plugin manifest. However, they will not be used until Rack v2 or the upcoming VCV Library website.
Rack v2 Plan Overview
Major features that will define Rack v2:
- Add scaffolding for Rack for DAWs, so that the proprietary fork is as minimal as possible, containing only plugin API wrappers.
- Integration with future VCV Library website at https://library.vcvrack.com/, which will allow individual modules to be added to your VCV account, and possibly individually purchased modules.
Very rough development timeline:
- 2019 Q2 - Q4: Lots and lots of new Eurorack and VCV plugins.
- 2019 Q3 - Q4: VCV Library website, minor Rack v2 features.
- 2019 Q4 - 2020 Q1: Rack v2. Rack for DAWs.
Expected API changes:
- No stable symbols are planned to be changed. The plan for the Rack v2 API is for at least 90% of plugins to be recompiled for Rack v2 with 0 lines of source changes.
- All plugins will need to change the
"version"
property of theirplugin.json
manifest to begin with"2."
instead of"1."
to signify that they are built with the Rack v2 SDK. However, all open-source plugins in the VCV Library will be rebuilt by us by automatically changing the old version1.2.3
to2.p.1.2.3
or similar. If you wish to make further updates after v2 is released, you will then need to set a ārealā version such as2.2.3
.
Beta builds of VCV Rack 1.1.5:
- https://vcvrack.com/downloads/Rack-1.1.5-lin.zip
- https://vcvrack.com/downloads/Rack-1.1.5-mac.zip
- https://vcvrack.com/downloads/Rack-1.1.5-win.exe
- https://vcvrack.com/downloads/Rack-1.1.5-win.zip
- https://vcvrack.com/downloads/Rack-SDK-1.1.5.zip
Changelog: https://github.com/VCVRack/Rack/blob/v1/CHANGELOG.md
As always, see https://vcvrack.com/manual/FAQ.html#i-found-a-bug for reporting bugs.
Added LEDLightSlider
to componentlibrary.hpp. Example:
addParam(createLightParamCentered<LEDLightSlider<GreenLight>>(
mm2px(Vec(40.0, 40.0), module,
VCMixer::LVL_PARAM, VCMixer::LVL_LIGHT));
Also note my use of C++ CRTP for adding appearance traits and behavioral properties to widgets.
Also added segment light. Example:
// In `Module`:
enum LightIds {
ENUMS(SEGMENT_LIGHTS, 10),
NUM_LIGHTS
};
// In `ModuleWidget()`:
SegmentDisplay* segmentDisplay = createWidget<SegmentDisplay>(mm2px(Vec(2.424, 15.564)));
segmentDisplay->box.size = mm2px(Vec(25.984, 4.524));
segmentDisplay->setLights<WhiteLight>(module, Permutation6::SEGMENT_LIGHTS, 10);
addChild(segmentDisplay);
Proposal for port metadata struct to be added to Rack v2.
Proposal for a buffered process()
function.