From 84f8e53ffbcd9815a81937b80aab6edc760cc763 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Thu, 19 Jul 2018 09:18:46 -0400 Subject: [PATCH] Tweaks --- Bridge.md | 6 ++++-- Core.md | 4 ++-- DSP.md | 6 +++--- images/flamegraph.png | Bin 0 -> 18355 bytes 4 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 images/flamegraph.png diff --git a/Bridge.md b/Bridge.md index e211ad9..b2dfbd7 100644 --- a/Bridge.md +++ b/Bridge.md @@ -3,7 +3,7 @@ Rack is a standalone DAW-like application and not a VST/AU plugin because of the major limitations of these formats. It is common to think of physical modular synthesizers as entire self-contained DAWs, so many people use Rack as a complete DAW to compose music and build patches without other software. -However, *VCV Bridge* allows audio, MIDI, DAW transport, and DAW clocks to be transferred between Rack and your DAW through the included VST/AU Bridge plugin. +However, *VCV Bridge* allows audio, MIDI, DAW transport, and DAW clocks to be transferred between Rack and your DAW through the included VST/AU instrument/effect Bridge plugins. The setup order between Rack and your DAW does not matter. @@ -19,7 +19,9 @@ The 16 automation parameters in the VST/AU Bridge plugin simply generate MIDI-CC ## Setting up Bridge in your DAW - Make sure the VST or AU Bridge plugin is installed, and launch your DAW. -- Add the "VCV Bridge" plugin to a track. +- Add the "VCV Bridge" instrument or "VCV Bridge fx" effect plugin to a track. + - The instrument plugin is easier for sending MIDI to Rack, although it also supports audio input if supported by your DAW. + - The effect plugin is easier for sending audio to Rack, although it also supports MIDI input if supported by your DAW. - Open the plugin parameters to reveal the Bridge port setting and 16 automation parameters. ### Ableton Live diff --git a/Core.md b/Core.md index 7fd011e..4cd92dd 100644 --- a/Core.md +++ b/Core.md @@ -52,9 +52,9 @@ Each MIDI interface module (described below) supports the following drivers. - Gamepad - Computer keyboard -The *gamepad* MIDI driver allows USB video game controllers to be used for CV and gate sources, as inexpensive alternatives to actual MIDI controllers. +The *gamepad* MIDI driver allows USB video game controllers to be used for CV and gate sources, as an inexpensive alternative to MIDI controllers. Gamepad buttons are mapped to MIDI note gates starting with `C-1`, `C#-1`, `D-1`, etc. -Each joystick axis is mapped to MIDI CC messages starting with `CC0`, `CC1`, `CC2`, etc. with a nonstandard extension that allows negative CC values to be used. +Joystick axes are mapped to MIDI CC messages starting with `CC0`, `CC1`, `CC2`, etc. with a nonstandard MIDI extension that allows negative CC values to be used. The *computer keyboard* MIDI driver generates MIDI notes when keys are presses while the Rack window is focused. Using two rows of keys, the virtual MIDI keyboard spans approximately 2½ octaves and can be shifted down and up with the `` ` `` and `1` keys. diff --git a/DSP.md b/DSP.md index fd3f512..1f730b1 100644 --- a/DSP.md +++ b/DSP.md @@ -324,16 +324,16 @@ Most people now call this architecture x86_64 or the somewhat non-descriptive "6 The most important additions to this architecture are the [single instruction, multiple data (SIMD)](https://en.wikipedia.org/wiki/SIMD) extensions, which allow multiple values to be placed in a vector of registers and processed (summed, multiplied, etc) in a similar number of cycles as processing a single value. These extensions are necessary for battling the slowing down of increases in cycle speed (currently around 3GHz for desktop CPUs) due to reaching the size limits of transistors, so failure to exploit these features may cause your code to run with pre-2004 speed. -A few important ones including their introduction date are as follows. +A few important ones including their first CPU introduction date are as follows. - [MMX](https://en.wikipedia.org/wiki/MMX_(instruction_set)) (1996) For processing up to 64 bits of packed integers. - [SSE](https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions) (1999) For processing up to 128 bits of packed floats and integers. - [SSE2](https://en.wikipedia.org/wiki/SSE2) (2001) Extends SSE functionality and fully replaces MMX. - [SSE3](https://en.wikipedia.org/wiki/SSE3) (2004) Slightly extends SSE2 functionality. - [SSE4](https://en.wikipedia.org/wiki/SSE4) (2006) Extends SSE3 functionality. -- [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) (2008) For processing up to 256 bits of single or double precision floats. +- [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) (2008) For processing up to 256 bits of floats. - [FMA](https://en.wikipedia.org/wiki/FMA_instruction_set) (2011) For computing \\(ab+c\\) for up to 256 bits of floats. -- [AVX-512](https://en.wikipedia.org/wiki/AVX-512) For processing up to 512 bits of single or double precision floats. +- [AVX-512](https://en.wikipedia.org/wiki/AVX-512) (2015) For processing up to 512 bits of floats. You can see which instructions these extensions provide with the [Intel Intrinsics Guide](https://software.intel.com/sites/landingpage/IntrinsicsGuide/) or the complete [Intel Software Developer’s Manuals](https://software.intel.com/en-us/articles/intel-sdm) and [AMD Programming Reference](https://developer.amd.com/resources/developer-guides-manuals/). diff --git a/images/flamegraph.png b/images/flamegraph.png new file mode 100644 index 0000000000000000000000000000000000000000..0f234198fb9045367db2c4281b52a391072c806a GIT binary patch literal 18355 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 literal 0 HcmV?d00001