# trowaSoft-VCV
trowaSoft Modules plugin for [VCV Rack](https://github.com/VCVRack/Rack) v0.5.x and v0.6.x.
Current pack includes [trigSeq & trigSeq64](#trigseq--trigseq64), [voltSeq](#voltseq), [multiWave](#multiwave) (new 2018-06-24), [multiScope](#multiscope), and [cvOSCcv](#cvosccv).
For more information about these modules, please visit:
http://www.geekasaurusrex.net/page/trowaSoft-Sequencer-Modules-for-VCV-Rack.aspx.
For more information about Rack, please visit:
https://vcvrack.com/.
If you like the modules and wish to donate, you may do so [here](https://paypal.me/j4s0n). Any donation is much appreciated! Also note though that:
+ $5 USD buys the 'dev team' a Jack & Diet (programming fuel) at a neighborhood bar.
+ $10 USD buys the designer a bottle of wine.
## Binaries/Builds
Any builds that are currently available are at [Github Releases page](https://github.com/j4s0n-c/trowaSoft-VCV/releases) and [geeksaurusrex](http://www.geekasaurusrex.net/page/trowaSoft-Sequencer-Modules-for-VCV-Rack.aspx).
Recent builds should also be available in the [VCV plugin manager](https://vcvrack.com/plugins.html).
**VCV Rack v0.6.x**:
**2018-06-24**: The latest version is [v0.6.3](https://github.com/j4s0n-c/trowaSoft-VCV/releases/tag/v0.6.3) (for Rack v0.6.1).
**VCV Rack v0.5.x**:
2018-02-17: The last version is [v0.5.5.2](https://github.com/j4s0n-c/trowaSoft-VCV/releases/tag/v0.5.5.2). No more versions for Rack 0.5.x will be developed.
To build for your platform, please visit the [VCV rack documentation](https://github.com/VCVRack/Rack#setting-up-your-development-environment).
## Sequencers
Currently there are three (3) sequencer modules.
### trigSeq & trigSeq64
These are basic boolean on/off pad step sequencers (0V or 10V), based off the [Fundamentals SEQ3 sequencer](https://github.com/VCVRack/Fundamental).
+ **trigSeq** is 16-step; **trigSeq64** is 64-step.
+ Now 64 patterns. ~~16 patterns.~~
+ 16 channels (outputs).
+ Output modes: **TRIG** (trigger), **RTRG** (retrigger), **GATE** (continuous) (0 or 10V).
+ Inputs: Pattern, BPM, (step) Length, Clock, Reset.
+ Copy & Paste of channel or entire pattern.
+ Open Sound Control (OSC) interface (as of v.0.5.5.1). [more info](https://github.com/j4s0n-c/trowaSoft-VCV/wiki/Open-Sound-Control-(OSC)-Interface)
+ Advanced Randomization options (as of v.0.5.5.2) for all patterns, current edit pattern, or only the displayed channel. Chose from 'normal random' or 'structured' random patterns.
+ Hold mouse down and set multiple pads by dragging.
### voltSeq
**voltSeq** is a variable voltage output step sequencer (-10V to +10V), based off the [Fundamentals SEQ3 sequencer](https://github.com/VCVRack/Fundamental).
+ **voltSeq** is 16-step.
+ Now 64 patterns. ~~16 patterns.~~
+ 16 channels (outputs).
+ Output modes:
+ **VOLT** - Voltage (-10V to +10V): Output whatever voltage you want.
+ **NOTE** - Midi Note (-5V to +5V) ~~(-4V to +6V)~~: Output notes (12 notes per 1 V; 10 octaves). [Base pitch (0V)](https://github.com/j4s0n-c/trowaSoft-VCV/issues/9) is now C4 (as of v0.5.5.2). Range is C-1 to C9 as of v0.6.0.
+ **PATT** - Pattern (-10V to +10V): To control the currently playing Pattern (or Length) on another **trigSeq** or **voltSeq**. (Now 1 to 64 in range).
+ Inputs: Pattern, BPM, (step) Length, Clock, Reset.
+ Copy & Paste of channel or entire pattern.
+ Open Sound Control (OSC) interface (as of v.0.5.5.1). [more info](https://github.com/j4s0n-c/trowaSoft-VCV/wiki/Open-Sound-Control-(OSC)-Interface)
+ Advanced Randomization options (as of v.0.5.5.2) for all patterns, current edit pattern, or only the displayed channel. Chose from 'normal random' or 'structured' random patterns.
+ Shift Values (as of v0.5.5.2): +/- 1 Volt or 1 Octave or 1 Pattern for all patterns, current edit pattern, or only the displayed channel.
## multiWave
**multiWave** is a digital oscillator module with three (3) oscillators/clocks, each with two (2) configurable wave channel outputs. This module has been made to complement multiScope
and is new in v0.6.3.
+ Screen User Controls:
+ Click on a value to edit it directly (a text box should appear and allow you to type the value).
+ **Tab** or **Tab-Shift** will iterate through the editable text boxes.
+ Valid for all displayed values except for WAVE and AUX (AUX is only an editable textbox for pulse width when SQR/rectangle wave is selected).
+ CV Inputs & User Controls per Oscillator:
+ **SYNC** - (Right hand side) Reset/sync the oscillator (to phase 0). Currently this is CV only (no UI control).
+ **AMPL** - Amplitude (-10V to +10V).
+ **FREQ** - Frequency (1V/Oct) for the oscillator clock.
The Frequency knob rotates 360°. Hold down the **Shift** key for coarser control or the **Control** key for finer control while dragging up/down.
+ **PHASE** - Phase Shift (-10V to +10V).
+ **OFFSET** - Offset (-10V to +10V).
+ CV Inputs & User Controls per Channel Output:
+ **WAV** - Waveform Type (-5V to +5V): SIN, TRI, SAW, SQR.
+ **AUX** - Aux (-5V to +5V). If the CV input is active then, the knob value is ignored.
Currently only SAW and SQR have functions:
+ SAW: Slope (pos |/| or neg |\\|). 0 or positive CV for positive slope.
+ SQR: Pulse Width.
+ SIN and TRI adjustments will be added later when/if we think of another parameter for these waveforms.
+ **PHASE** - Phase Shift (-10V to +10V). Value is relative to the oscillator clock.
+ **MOD** - Amplitude modulation (-10V to +10V). Knob controls the mix between the raw signal and the modded signal.
+ **\*** - Button for modulation type (Digital or Ring). Currently this is UI only (no CV input).
+ CV Outputs per Oscillator:
+ **SYNC** - Triggers whenever the period restarts.
+ CV Outputs per Channel Output:
+ **X<n> or Y<n>** - RAW waveform without amplitude modulation (**MOD**).
+ **MOD** - The modulated waveform (based on the MOD knob and the incoming MOD signal input).
## multiScope
**multiScope** is a visual effects scope, with lissajous mode, that allows three (3) waveforms to be drawn on the same screen/canvas. (code based on [JW Modules FullScope](https://github.com/jeremywen) and [Fundamental Scope](https://github.com/VCVRack/Fundamental))
**WARNING**: New version seems to crash on Mac OS. If anyone more adept at OSX programming wants to figure out why, it would be **MUCH** appreciated. Otherwise, whenever there is time we will try to figure it out, but the multiScope module has been degraded to low priority.
+ CV Inputs per Channel:
+ **X** - X-value (horizontal component).
+ **Y** - Y-value (vertical component).
+ **C** - Color/hue (0V to +5V).
+ **A** - Alpha channel (0V to +5V).
+ **BLANK** - Blank ON or OFF. By default, Blank is off. ON is any input <=0 (really < 0.1V), otherwise it will be OFF.
You can use a **trigSeq** (in **CONT** mode, synchronized with a **voltSeq**) to control / hide lines that you do not wish to be shown.
+ **FC** - Fill Color hue (0V to +5V)
+ **FA** - Fill alpha channel (0V to +5V).
+ **R** - Rotation (-10V to +10V). Will either be a rotational rate or if the **ABS** button is on, it will be the absolute angular position.
+ **T** - Time.
+ **TH** - Line Thickness.
+ User Controls per Channel:
+ **X** - Offset (OFF) & Scale (SCL) knobs.
+ **Y** - Offset (OFF) & Scale (SCL) knobs.
+ **LNK** - (Toggle) Link the X-scale and Y-scale knobs together so they will change together (have the same value).
+ **C** - Color knob. If an input is active on the Color port, this is ignored. Highest setting will yield White now.
+ **A** - Alpha channel knob. If an input is active on the Alpha port, this is ignored.
+ **FC** - Fill Color knob. If an input is active on the Fill Color port, this is ignored. Highest setting yield give White now.
+ **Fill Color** - (Toggle) Fill on/off.
+ **FA** - Fill alpha channel knob. If an input is active on the Alpha port, this is ignored.
+ _Rotation Controls_:
+ **R** - Rotation knob. If an input is active on the Rotation port, this is ignored.
+ **ABS** - (Toggle) Turning ABS on will make the rotation inputs control the absolute angular position instead of a rate.
+ **T** - Time adjustment knob. Will be used along with the Time input port.
+ **TH** - Line Thickness. If an input is active on the Thickness port, this is ignored.
+ **EFFECT** - Effect knob.
+ **X*Y** - (Toggle) Toggle lissajous mode on / off (default is on).
+ User Controls for entire module:
+ **INFO** - (Toggle) Toggle input parameter information on / off (default is on). Located on the right-hand-side (RHS) bar.
+ **BG COLOR** - (Toggle) Toggle on-screen Background Color picker on / off (default is on). Located on the right-hand-side (RHS) bar.
+ **Background Color Picker** - Displayed on screen. Hue-Saturation-Light (HSL) sliders to pick the background color.
## cvOSCcv
**cvOSCcv** is a simple, generic Open Sound Control (OSC) module for outputting Rack CVs to OSC and reading in simple OSC messages into Rack CVs. This module is new in version 0.6.0.
+ **CV Inputs** - CV => OSC (8 Channels), each channel:
+ **TRG** - If active, then OSC messages will output the **VAL** CV input when triggered.
+ **VAL** - The value that will output over OSC. Currently sent as a float.
If there is no trigger present, the module will output whenever **VAL** changes at least 0.05 up to 100 Hz.
+ **CV Outputs** - OSC => CV (8 channels), each channel:
+ **TRG** - (0-10V) Triggers whenever an OSC message is received.
+ **VAL** - (Gate) Outputs the last OSC value received.
+ **User Controls**:
+ **CONFIG** - (Toggle) Button to toggle the configuration view. When an OSC connection is active, a blue light will appear on the button.
+ **OSC IP Address** - The IP address of the OSC client/server. Default is `127.0.0.1`.
+ **Out Port** - Port for sending messages.
+ **In Port** - Port for receiving messages. Currently, trowaSoft modules can NOT share the same ports.
+ **Namespace** - The OSC namespace. Default is `trowacv`.
+ **Auto Con** - Automatically reconnect on load from save. The connection will be restore if the connection was active (in the save file) and this is checked.
+ Per Channel:
+ **Address** - Endpoint address. Default is `/ch/{channel #}`.
+ **ADV** - (as of v0.6.2) Advanced settings for simple value conversions. Specify simple OSC data types (float, int, bool) and the CV and OSC ranges.
NOTE: To save Channel Address changes after a connection is active, simply hide the configuration screen again.