@@ -4,7 +4,7 @@ VCV was founded by Andrew Belt in 2016 and is based in Tennessee, USA. | |||
Its flagship product VCV Rack was released on September 10, 2017 at [Knobcon](https://knobcon.com/) after two years of development. | |||
It was based on an unreleased C++ modular audio engine written by Andrew in 2012. | |||
VCV collaborates with [Grayscale](http://grayscale.info/) to design the [Fundamental](https://vcvrack.com/Fundamental.html) plugin, commercial VCV modules, and the UI design of Rack. | |||
VCV collaborates with [Grayscale](http://grayscale.info/) to design the [Fundamental](https://vcvrack.com/Fundamental) plugin, commercial VCV modules, and the UI design of Rack. | |||
## Mission Statement | |||
@@ -32,7 +32,7 @@ The **TO DEVICE** section sends Rack signals to a hardware audio device for play | |||
After a driver is selected, a particular **device** can be chosen for the driver. | |||
The **sample rate** is the number of audio samples per second for the audio device to process. | |||
Note that this rate is different than Rack's [engine sample rate](https://vcvrack.com/manual/MenuBar.html#sample-rate), which determines the number of samples per second for Rack modules to process. | |||
Note that this rate is different than Rack's [engine sample rate](https://vcvrack.com/manual/MenuBar#sample-rate), which determines the number of samples per second for Rack modules to process. | |||
If set to different rates, sample rate conversion will occur, resulting in slightly higher CPU usage, slightly less audio fidelity, and slightly more latency. | |||
The **block size** sets the number of samples to store in the audio buffer before releasing to the audio device. | |||
@@ -12,7 +12,7 @@ These are good guesses, but "VCV" was chosen simply because it is easy to rememb | |||
## Where is the "Rack user folder"? | |||
The Rack user folder stores data readable/writable by Rack. | |||
You can open it by choosing `Help > Open user folder` in the Rack [menu bar](MenuBar.html), or by navigating to | |||
You can open it by choosing `Help > Open user folder` in the Rack [menu bar](MenuBar), or by navigating to | |||
- MacOS: `Documents/Rack/` | |||
- Windows: `My Documents/Rack/` | |||
@@ -59,27 +59,27 @@ If any of these symptoms occur, you can attempt to treat them using the followin | |||
Note that some tips have trade-offs or might not provide any benefit for your situation. | |||
- Rack DSP: | |||
- Use Rack's [CPU meter](MenuBar.html#cpu-meter) to identify high-CPU modules that you could remove or replace. | |||
- Use Rack's [CPU meter](MenuBar#cpu-meter) to identify high-CPU modules that you could remove or replace. | |||
- Turn off the CPU meter when you don't need it. | |||
Measuring the CPU time of each module in your patch consumes significant CPU. | |||
- Increase [VCV Audio](Core.html#audio)'s block size to the highest tolerable number. | |||
- Increase [VCV Audio](Core#audio)'s block size to the highest tolerable number. | |||
This results in proportionally higher audio latency but proportionally decreases block processing overhead and allows higher jitter in sample processing CPU times. | |||
- Use the lowest tolerable Engine [sample rate](MenuBar.html#sample-rate). | |||
- Use the lowest tolerable Engine [sample rate](MenuBar#sample-rate). | |||
Engine CPU usage is almost exactly proportional to its sample rate. | |||
- Disable modules in your patch that you aren't currently using by right-clicking on their panels and choosing Disable. | |||
- Rack multi-threading: | |||
- To maximize the number of modules in your patch without audio stuttering, increase the number of Rack engine threads until no stuttering occurs. | |||
See [Threads](MenuBar.html#threads). | |||
See [Threads](MenuBar#threads). | |||
- To reduce power usage and temperature, use the smallest number of Rack engine threads that does not cause audio stuttering. | |||
- Graphics: | |||
- Decrease Rack's frame rate to the smallest tolerable value. See [Frame rate](MenuBar.html#frame-rate). | |||
- Decrease Rack's frame rate to the smallest tolerable value. See [Frame rate](MenuBar#frame-rate). | |||
- Use a dedicated (discrete) graphics card, such as Nvidia or AMD. | |||
Rack is not designed for integrated graphics such as Intel HD/Iris. See [System Requirements](Installing.html#system-requirements). | |||
Rack is not designed for integrated graphics such as Intel HD/Iris. See [System Requirements](Installing#system-requirements). | |||
- Make sure your graphics drivers are up-to-date. | |||
- If using an Apple Retina display on your Mac, set the Rack app to use [Low Resolution Mode](https://www.maketecheasier.com/launch-apps-low-resolution-mac/). | |||
- Use Rack in [fullscreen](MenuBar.html#fullscreen) mode so the graphics card does not need to render the OS user interface and other applications. | |||
- Use Rack in [fullscreen](MenuBar#fullscreen) mode so the graphics card does not need to render the OS user interface and other applications. | |||
- Audio hardware: | |||
- Use a dedicated audio interface rather than your motherboard's audio hardware. | |||
@@ -103,7 +103,7 @@ Note that some tips have trade-offs or might not provide any benefit for your si | |||
This means that any hiccups/stuttering you hear in real-time will not be present when the recording is played back. | |||
- Computer hardware: | |||
- Although Rack's [System Requirements](Installing.html#system-requirements) suggest that computers as old as 2013 can run Rack, it is recommended to use a computer from 2016 or later that is designed for gaming. | |||
- Although Rack's [System Requirements](Installing#system-requirements) suggest that computers as old as 2013 can run Rack, it is recommended to use a computer from 2016 or later that is designed for gaming. | |||
There are many gaming laptop and desktop computers on the market for as low as $300, the price of an average hardware Eurorack module. | |||
Unfortunately, Apple's MacBook Air and older MacBook Pro models are not designed for gaming (despite their high price!) and are therefore not recommended for VCV Rack. | |||
@@ -2,17 +2,17 @@ | |||
VCV Rack is virtual modular synthesizer platform for Windows/Mac/Linux that simulates Eurorack modules, in addition to original modules that go beyond hardware. | |||
Once [VCV Rack](https://vcvrack.com/Rack) is installed and launched for the first time (see [Installing](Installing.html)), you will see a rack with a template patch. | |||
Once [VCV Rack](https://vcvrack.com/Rack) is installed and launched for the first time (see [Installing](Installing)), you will see a rack with a template patch. | |||
 | |||
The [*VCV Audio*](Core.html#audio) module is the portal between the virtual and physical world. | |||
The [*VCV Audio*](Core#audio) module is the portal between the virtual and physical world. | |||
It sends audio from VCV Rack to your speakers and audio device (e.g. sound card or external audio interface). | |||
It can also receive audio from microphones and your audio device's inputs. | |||
1\. To set up *VCV Audio*, click its display to set the audio driver, device, and optionally sample rate and block size. | |||
[*VCV MIDI-CV*](Core.html#midi-cv) converts MIDI notes from a MIDI device (such as a keyboard or controller) to virtual voltages in Rack. | |||
[*VCV MIDI-CV*](Core#midi-cv) converts MIDI notes from a MIDI device (such as a keyboard or controller) to virtual voltages in Rack. | |||
It can also use your computer's keyboard as a basic MIDI keyboard. | |||
2\. Use the QWERTY and ZXCVB rows of your keyboard to generate MIDI notes, which are converted to 1V/oct and gate signals. | |||
@@ -5,7 +5,7 @@ | |||
VCV Rack is free software, so you may simply download and run the software to see if it works. | |||
However, if Rack does not run or you are experiencing performance issues, make sure you have at least the following hardware. | |||
(Also see [How do I improve performance of VCV Rack?](FAQ.html#how-do-i-improve-performance-of-vcv-rack)) | |||
(Also see [How do I improve performance of VCV Rack?](FAQ#how-do-i-improve-performance-of-vcv-rack)) | |||
- Operating system: MacOS 10.7+, Windows 7+, or Linux (such as Ubuntu 16.04+) | |||
- CPU: Intel/AMD 64-bit processor from \~2011 or later | |||
- Graphics: Dedicated graphics card from \~2013 or later with the latest driver software update: | |||
@@ -38,7 +38,7 @@ Plugins extend VCV Rack's functionality by adding one or more modules to use in | |||
Plugins are typically installed via the [VCV Library](https://library.vcvrack.com/). | |||
See the *VCV Library Instructions* section at the bottom of the VCV Library page. | |||
If your computer is offline, you may download plugins using another computer and transfer `<Rack user folder>/plugins-v*` (See [Where is the “Rack user folder”?](FAQ.html#where-is-the-rack-user-folder)) to the offline computer. | |||
If your computer is offline, you may download plugins using another computer and transfer `<Rack user folder>/plugins-v*` (See [Where is the “Rack user folder”?](FAQ#where-is-the-rack-user-folder)) to the offline computer. | |||
Downloading plugins directly from the VCV Library is not supported at this time. | |||
## Installing plugins not available on the VCV Library | |||
@@ -46,7 +46,7 @@ Downloading plugins directly from the VCV Library is not supported at this time. | |||
*Install third-party plugins at your own risk. Like VST plugins, installing plugins from unknown sources may compromise your computer and personal information.* | |||
Plugins for Rack are distributed as ZIP files with the format `<plugin slug>-<version>-<arch>.zip`, e.g. `MyPlugin-1.0.0-mac.zip`. | |||
Download the plugin ZIP package from the vendor's website to `<Rack user folder>/plugins-v*` (See [Where is the "Rack user folder"?](FAQ.html#where-is-the-rack-user-folder)). | |||
Download the plugin ZIP package from the vendor's website to `<Rack user folder>/plugins-v*` (See [Where is the "Rack user folder"?](FAQ#where-is-the-rack-user-folder)). | |||
Do not extract the ZIP package yourself. | |||
Rack will extract and load the plugin upon launch. | |||
@@ -54,7 +54,7 @@ Note: Plugins must be built (compiled) before Rack can load them. | |||
GitHub hosts plugin source code, not plugin binaries, so GitHub's green "Clone or download" button will *not* give you a plugin binary. | |||
However, some plugin maintainer make plugin builds available in the "Releases" section of their GitHub repository. | |||
Note: The "major" version number (e.g. the `1` in `v1.2.3`) must match the major version number of Rack. See [ABI/API Version](Version.html). | |||
Note: The "major" version number (e.g. the `1` in `v1.2.3`) must match the major version number of Rack. See [ABI/API Version](Version). | |||
<a id="running"></a> | |||
@@ -4,7 +4,7 @@ | |||
## Global commands | |||
Key commands documented in Rack's [menu bar](MenuBar.html) are not documented here. | |||
Key commands documented in Rack's [menu bar](MenuBar) are not documented here. | |||
- **Enter** or **right-click on rack**: Launch the Module Browser to add modules to the rack. | |||
- **F1**: Open Rack manual in your browser. | |||
@@ -199,7 +199,7 @@ Generates complex envelopes or cycles via a large selection of general parameter | |||
Clones the functionality, panel design, and component layout of a hardware module on the market. | |||
Remember to follow the [VCV Plugin Ethics Guidelines](PluginLicensing.html#vcv-plugin-ethics-guidelines) and only clone hardware with permission from its owner. | |||
Remember to follow the [VCV Plugin Ethics Guidelines](PluginLicensing#vcv-plugin-ethics-guidelines) and only clone hardware with permission from its owner. | |||
If there is a [ModularGrid](https://www.modulargrid.net/) page for the hardware module, add the [modularGridUrl](Manifest#modules-modulargridurl) property. | |||
@@ -92,7 +92,7 @@ Rack must be restarted to load new plugin updates. | |||
## Help | |||
### Manual | |||
Opens [this manual](QuickStart.html). | |||
Opens [this manual](QuickStart). | |||
### Open user folder | |||
Opens the [Rack user folder](FAQ.html#where-is-the-rack-user-folder) in Windows Explorer, Apple Finder, etc. | |||
Opens the [Rack user folder](FAQ#where-is-the-rack-user-folder) in Windows Explorer, Apple Finder, etc. |
@@ -25,7 +25,7 @@ Design recommendations from VCV: | |||
Do not use other people's intellectual property (IP) without their permission. | |||
See the [VCV Plugin Ethics Guidelines](PluginLicensing.html#vcv-plugin-ethics-guidelines). | |||
See the [VCV Plugin Ethics Guidelines](PluginLicensing#vcv-plugin-ethics-guidelines). | |||
Don't hesitate to ask the [VCV Community](https://community.vcvrack.com/c/development) for design help. | |||
You may find several graphic designers seeking programmers for collaboration. | |||
@@ -4,9 +4,9 @@ | |||
- Familiarity with C++, although creating Rack plugins is a great way to learn programming and C++. Rack plugins are written in [C++11](https://en.cppreference.com/w/cpp/11). | |||
- 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. | |||
- Familiarity with modular synthesizers. [Digital signal processing (DSP)](DSP) knowledge is only required if creating sound generators and processors. | |||
- Download and install [VCV Rack](https://vcvrack.com/Rack.html). | |||
- Follow the steps to [set up your build environment](Building.html#setting-up-your-development-environment) for your operating system. | |||
- Follow the steps to [set up your build environment](Building#setting-up-your-development-environment) for your operating system. | |||
You do not need to build Rack from source if using the Rack SDK. | |||
- [Download the latest Rack SDK](https://vcvrack.com/downloads/) and extract. | |||
This contains the Rack API headers and build system for compiling your plugin. | |||
@@ -23,7 +23,7 @@ You may wish to add this line to your `~/.bashrc` or other shell environment, so | |||
The `helper.py` script included in the Rack SDK is an easy way to create a plugin template. | |||
You can run it with no arguments to show documentation. | |||
Choose a [slug](Manifest.html#slug) for your plugin, a unique string containing letters, numbers, `-`, or `_`. | |||
Choose a [slug](Manifest#slug) for your plugin, a unique string containing letters, numbers, `-`, or `_`. | |||
We will use `MyPlugin` for this tutorial. | |||
Run | |||
```bash | |||
@@ -47,7 +47,7 @@ Manifest written to MyPlugin/plugin.json | |||
Created template plugin in MyPlugin/ | |||
Initialized empty Git repository in /home/VCV/MyPlugin/.git/ | |||
``` | |||
You can change this manifest later by editing `plugin.json`. (See [Manifest](Manifest.html)). | |||
You can change this manifest later by editing `plugin.json`. (See [Manifest](Manifest)). | |||
To test your build system, you may run `make` in the plugin directory. | |||
If it succeeds, an "empty" plugin will be built containing no modules. | |||
@@ -55,7 +55,7 @@ However, this is an good opportunity to check that your build environment is set | |||
## Creating panels | |||
For each module you wish to create, follow the [Panel Guide](Panel.html) to design an SVG panel graphic. | |||
For each module you wish to create, follow the [Panel Guide](Panel) to design an SVG panel graphic. | |||
For this tutorial, we will create a module with the slug `MyModule` and panel file [MyModule.svg](_static/MyModule.svg). | |||
Save this file to `res/` and run | |||
@@ -83,7 +83,7 @@ Open `MyModule.svg` with Inkscape, open the Layers panel, and hide the `componen | |||
## Implementing the DSP kernel | |||
Rack modules have four basic components, as we saw in the [Panel Guide](Panel.html). | |||
Rack modules have four basic components, as we saw in the [Panel Guide](Panel). | |||
- **Param**: Read with `params[...].getValue()` | |||
- **Input**: Read with `inputs[...].getVoltage()` | |||
- **Output**: Write with `outputs[...].setVoltage(voltage)` | |||
@@ -136,10 +136,10 @@ This file contains warnings about plugins that fail to load and error messages i | |||
## Beyond the tutorial | |||
The Rack API is very flexible for creating custom [DSP](DSP.html) algorithms and custom interactive widgets handling many types of events from the keyboard, mouse, etc. | |||
The Rack API is very flexible for creating custom [DSP](DSP) algorithms and custom interactive widgets handling many types of events from the keyboard, mouse, etc. | |||
See the [Rack API headers](https://github.com/VCVRack/Rack/tree/v1/include) or the [Rack API documentation](https://vcvrack.com/docs/namespaces.html) for the full reference, or review the source code of the many open-source plugins if you prefer learning by example. | |||
The [Voltage Standards](VoltageStandards.html) article defines the behavior for handling signals in a consistent way. | |||
The [Voltage Standards](VoltageStandards) article defines the behavior for handling signals in a consistent way. | |||
You can find a wealth of information on the [Developer category](https://community.vcvrack.com/c/development) of the [VCV Community](https://community.vcvrack.com/) forum by searching or creating a new thread. | |||
@@ -147,8 +147,8 @@ You can find a wealth of information on the [Developer category](https://communi | |||
Eventually you may want to release your hard work. | |||
See [Plugin Licensing](PluginLicensing.html) for information about following Rack's license, particularly if developing a commercial plugin. | |||
See [Plugin Licensing](PluginLicensing) for information about following Rack's license, particularly if developing a commercial plugin. | |||
It is recommended to add a `LICENSE.txt` file to your plugin's root folder that specifies your preferred license (whether open-source or proprietary). | |||
Review your `plugin.json` [manifest](Manifest.html) file for correctness, spelling, and capitalization. | |||
Review your `plugin.json` [manifest](Manifest) file for correctness, spelling, and capitalization. | |||
Finally, submit your plugin to the [VCV Library](https://github.com/VCVRack/library#adding-your-plugin-to-the-vcv-library-for-open-source-plugins) to allow users to easily download your plugin from their VCV account. |
@@ -9,7 +9,7 @@ But with polyphonic cables, you only need to patch one set of modules and then c | |||
## Example | |||
In the screenshot below, [*MIDI-CV*](Core.html#midi-cv) is configured to generate 8 channels by right-clicking on its panel, choosing a number of "Polyphonic channels", and optionally choosing a "Polyphony mode" to specify how MIDI notes are assigned to polyphonic channels. | |||
In the screenshot below, [*MIDI-CV*](Core#midi-cv) is configured to generate 8 channels by right-clicking on its panel, choosing a number of "Polyphonic channels", and optionally choosing a "Polyphony mode" to specify how MIDI notes are assigned to polyphonic channels. | |||
Its V/OCT and GATE ports then become polyphonic outputs, and their signals can be sent to other polyphonic modules, carried by polyphonic cables. | |||
 | |||