diff --git a/Building.md b/Building.md index 113a474..39cc906 100644 --- a/Building.md +++ b/Building.md @@ -6,15 +6,11 @@ Before building Rack or Rack plugins, you must install build dependencies provid Rack's own dependencies (GLEW, glfw, etc) do not need to be installed on your system, since specific versions are compiled locally during the build process. However, you need proper tools to build Rack and these dependencies. - - ### Mac Install [Homebrew](https://brew.sh/), and install build dependencies. ```bash -brew install git wget cmake autoconf automake libtool jq +brew install git wget cmake autoconf automake libtool jq python ``` ### Windows @@ -28,7 +24,7 @@ pacman -Syu ``` Then restart the shell and install packages. ```bash -pacman -Su git wget make tar unzip zip mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-cmake autoconf automake mingw-w64-x86_64-libtool mingw-w64-x86_64-jq +pacman -Su git wget make tar unzip zip mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-cmake autoconf automake mingw-w64-x86_64-libtool mingw-w64-x86_64-jq python ``` ### Linux @@ -40,7 +36,7 @@ sudo apt install git gdb curl cmake libx11-dev libglu1-mesa-dev libxrandr-dev li On Arch Linux: ```bash -pacman -S git wget gcc gdb make cmake tar unzip zip curl jq +pacman -S git wget gcc gdb make cmake tar unzip zip curl jq python ``` ## Building Rack @@ -77,7 +73,7 @@ Complete the [Setting up your development environment](#setting-up-your-developm Plugins can be built in two ways: - [Build Rack from source](#building-rack) and build plugins in the `plugins/` folder. (Recommended for advanced developers.) -- Download an [official Rack build](https://vcvrack.com/Rack.html) and [Rack-SDK-1.1.0.zip](https://vcvrack.com/downloads/Rack-SDK-1.1.0.zip), and build plugins anywhere you like. (Easiest/fastest.) +- Download an [official Rack build](https://vcvrack.com/Rack.html) and [Rack-SDK-1.1.1.zip](https://vcvrack.com/downloads/Rack-SDK-1.1.1.zip), and build plugins anywhere you like. (Easiest/fastest.) Download or clone the plugin source code, e.g. diff --git a/FAQ.md b/FAQ.md index 3bf7fd4..1627d7d 100644 --- a/FAQ.md +++ b/FAQ.md @@ -46,20 +46,23 @@ It is not planned. There are many issues with such a project. ## Why does VCV Audio consume so much CPU? -The CPU meter measures the time spent processing each module, not the "resource" of CPU power. -In order for playback timing to be consistent, your audio device, and therefore VCV Audio, waits until all samples in the current audio buffer are played before moving onto the next audio buffer. -Otherwise, your device's DAC and ADC would play and record at very inconsistent and incorrect sample rates. +The CPU timer measures the average *time* spent processing each sample, not the CPU *energy consumption* of modules. +Since audio devices need to play audio at real-time (rather than as fast as the Rack engine can run), the VCV Audio modules need to wait for the last audio buffer to finish playing before sending a new audio buffer. While waiting, the engine thread is put to sleep, so no energy is consumed by the thread. See [CPU timer](MenuBar.html#cpu-timer) for more info. ## Is VCV Rack available as a VST/AU/AAX plugin for DAWs? -VCV Rack is a standalone application, not a plugin. -Shortly after Rack v2 is released, estimated for Dec 2019, Rack will also be available as a 64-bit VST2 plugin for around $99. -VST3/AU/AAX versions might be released afterwards. +VCV Rack is a standalone application, not a DAW plugin, since Rack can be fully considered a DAW itself. +However, due to user demand, Rack will be available as a 64-bit VST2 plugin for around $99 shortly after Rack v2 is released around Dec 2019. +VST3/AU/AAX/LV2 versions might be released afterwards, but this is not yet confirmed. All Rack v2 plugins will be compatible with the plugin version of Rack. The standalone version of Rack v2 will continue to be free/open-source. +*VCV Bridge* was a VST2/AU plugin for bridging the standalone version of Rack with a DAW. +However, users found it to be unreliable, so it is no longer distributed as of Rack v1. +The audio/MIDI Bridge drivers will be removed in Rack v2. + ## Does VCV Rack work with touch screens? Rack's window library GLFW does not support [touch input](https://github.com/glfw/glfw/issues/42), so Rack relies on the operating system to control the mouse cursor using the touch screen. diff --git a/Metadata.md b/Metadata.md index 65eff85..9711715 100644 --- a/Metadata.md +++ b/Metadata.md @@ -10,6 +10,7 @@ JSON paths are denoted in "flat format", as used by [jq](https://stedolan.github *String. Required.* The unique identifier for your plugin. +Case-sensitive. Slugs may only contain letters `a-z` and `A-Z`, numbers `0-9`, hyphens `-`, and underscores `_`. After your plugin is released, the slug must *never* change, otherwise patch compatibility would be broken. @@ -119,7 +120,7 @@ The human-readable name for the module. *Array of strings. Optional.* List of tags representing the functions and/or properties of the module. -All tags must match the [list of allowed tags](https://github.com/VCVRack/Rack/blob/v1/src/plugin.cpp#L540) in Rack, case insensitive. +All tags must match the [list of allowed tags](https://github.com/VCVRack/Rack/blob/v1/src/plugin.cpp#L540) in Rack, case-insensitive. ## `.modules[].description` diff --git a/Migrate1.md b/Migrate1.md index 3020ff8..8d9f390 100644 --- a/Migrate1.md +++ b/Migrate1.md @@ -1,4 +1,4 @@ -# Migrating v0.6 Plugins to Rack v1 +# Migrating v0.6 Plugins to v1 This is a step-by-step guide for migrating plugins using the Rack v0.6 API to Rack v1. There are three phases of porting. diff --git a/Panel.md b/Panel.md index 811d03f..9c6df51 100644 --- a/Panel.md +++ b/Panel.md @@ -12,7 +12,7 @@ Install [Inkscape](https://inkscape.org/), a cross-platform open-source vector g Design the panel, or open an existing .pdf, .ai, .svg, etc file and copy-paste the contents into your new document. -![](https://vcvrack.com/images/Fundamental/VCO.m.png) +![](images/VCO.png) Design recommendations from VCV: - Avoid gradients and photorealism. Use a flat style for panels and components. This increases clarity at all zoom levels, which is important when several other modules are on-screen. diff --git a/PluginDevelopmentTutorial.md b/PluginDevelopmentTutorial.md index afd6604..7edc295 100644 --- a/PluginDevelopmentTutorial.md +++ b/PluginDevelopmentTutorial.md @@ -6,7 +6,7 @@ - Familiarity with navigating the command line (`cd`, `ls`, etc). - Familiarity with modular synthesizers. [Digital signal processing (DSP)](DSP.html) knowledge is only required if creating sound generators and processors. - Download and install [VCV Rack](https://vcvrack.com/Rack.html). -- Download and extract the [Rack SDK](https://vcvrack.com/downloads/Rack-SDK-1.1.0.zip). +- Download and extract [Rack-SDK-1.1.1.zip](https://vcvrack.com/downloads/Rack-SDK-1.1.1.zip). This contains the Rack API headers and build system for compiling your plugin. - Follow the steps to [set up your build environment](Building.html#setting-up-your-development-environment) for your operating system. You do not need to build Rack from source if using the Rack SDK. diff --git a/VoltageStandards.md b/VoltageStandards.md index 7380eaf..b856ab6 100644 --- a/VoltageStandards.md +++ b/VoltageStandards.md @@ -1,7 +1,7 @@ # Voltage Standards In Rack, input and output values carried by patch cables are in voltage units (V). -You can measure absolute voltage levels using modules like Fundamental Scope. +You can measure absolute voltage levels using modules like VCV Scope. Rack attempts to model Eurorack standards as accurately as possible, but this is a problem for two reasons: there are very few actual "standards" in Eurorack (The only rule is that you can always find a module which breaks the rule), and there are a few differences between digital (finite sample rate) and analog (infinite sample rate). @@ -58,7 +58,7 @@ Low-frequency oscillators and clock generators should use 120 BPM (\\(f_0\\) = 2 ## NaNs and Infinity -If your module might produce [NaNs](https://en.wikipedia.org/wiki/NaN) or infinite output values when given only finite input, e.g. an unstable IIR filter or reverb, it should check and return 0 if this happens: `std::isfinite(out) ? out : 0.f`. +If your module might produce [NaNs](https://en.wikipedia.org/wiki/NaN) or infinite output values when given only finite input, e.g. an unstable IIR filter or reverb, it should check and return 0 when this happens: `std::isfinite(out) ? out : 0.f`. ## Polyphony diff --git a/MyModule.svg b/_static/MyModule.svg similarity index 99% rename from MyModule.svg rename to _static/MyModule.svg index a639ce7..89d5a31 100644 --- a/MyModule.svg +++ b/_static/MyModule.svg @@ -37,9 +37,9 @@ inkscape:bbox-nodes="false" inkscape:snap-bbox-edge-midpoints="false" inkscape:window-width="1600" - inkscape:window-height="882" + inkscape:window-height="900" inkscape:window-x="0" - inkscape:window-y="18" + inkscape:window-y="0" inkscape:window-maximized="0" inkscape:snap-bbox-midpoints="true" inkscape:snap-nodes="false" /> @@ -51,7 +51,7 @@ image/svg+xml - + diff --git a/images/VCO.png b/images/VCO.png new file mode 100644 index 0000000..f08affc Binary files /dev/null and b/images/VCO.png differ