/sn-vcv

VCV modules for the sn experimental additive synthesizer

Primary LanguageC++GNU General Public License v3.0GPL-3.0

build

sn

A set of VCV Rack 2 plugins for the sn experimental additive synthesizer which uses the sn function as the generator function instead of the more usual sine. The modules comprise:

  • a stackable VCO, which generates an audio signal with a smoothly adjustable waveshape
  • a stackable LFO, which generates a low frequency control voltage signal with a smoothly adjustable waveshape.

The modules don't do anything particuarly radical but are an interesting way to add subtle variations to a sound. e.g. the Greensleeves demo is an example of using the sn-vco to add some tonal interest to an otherwise fairly plain rendering.

Contents

Background

Mathematically a sine function is a special case of the Jacobi elliptic sn function (in the same way that a circle is a special case of an ellipse). The sn VCV modules use the sn function rather than the sine function to generate harmonically rich waveforms that are also continuous and differentiable.

By modifying the parameters of the sn function it is possible to smoothly morph between a sine wave, a square (well, square'ish) wave, a triangular'ish wave and a sawtooth. There is a web app which may make this a bit clearer than this umm, very extremely brief explanation, and there is a little more detail here if you're really curious.

Parameters

The modules share a common set of parameters that determine the wave shape:

Parameter Range Name Description
ε ±1 eccentricity Sets the eccentricity of the sn generator function
s 0-5 sensitivity Fine adjust for the eccentricity set by the ε control
θ ±90° rotation Sets the rotation angle of he sn generator function
a 0-1 amplitude Sets the amplitude of the harmonic component
δx ±1 shift-x Sets the horizontal shift of the sn generator function
δy ±1 shift-y Sets the vertical shift of the sn generator function
Φ ±90° phase Adjust the phase offset of a harmonic (LFO only)
m 1-5 multiplier Base frequency multiplier

Installation

VCV Rack Library

The sn modules are available in the VCV Rack 2 library:

https://library.vcvrack.com/?brand=sn

Installation instructions are the same as for any library module and can be found at the bottom of the page or in the Installing Rack plugins section of the VCV Rack 2 manual.

Manual

  1. Download the zip file for your platform from the Releases section.

  2. Unzip the downloaded file and copy the unzipped plugin to the VCV Rack 2 plugins directory:

    • MacOS + Intel: ~/Documents/Rack2/plugins-mac-x64/
    • MacOS + ARM: ~/Documents/Rack2/plugins-mac-arm/
    • Linux: ~/.Rack2/plugins-lin-x64/
    • Windows: My Documents/Rack2/plugins-win-x64/
  3. Restart VCV Rack 2 and the plugins should be available in the library.

See also:

  1. Installing plugins not available on the VCV Library
  2. FAQ: Where is the “Rack user folder”?

Building from source

  1. Install the VCV Rack SDK

  2. Set the RACK_DIR environment variable:

export RACK_DIR=<Rack SDK folder>
  1. Build and install the sn-xxx plugins:
git clone https://github.com/transcriptaze/sn-vcv.git
cd sn
make

Modules

sn-vco is a more-or-less standard VCO module except that it produces a sn output rather than a sine which (as described above), allows the waveshape to be morphed between a sine, square, triangular and sawtooth wave.

sn-vcox is an expander module for the sn-vco module that adds a harmonic component to the output of sn-vco. Multiple expanders can be stacked to create a waveform using harmonics and/or variations.

sn-lfo is a more or less standard LFO module except that it produces a sn output rather than a sine, allowing the waveshape to be morphed between a sine, square, triangular and sawtooth wave and pretty much everything in between. Although it can be used on its own, the module is really intended to be used as the base for stacked sn-lfox expanders.

sn-lfox is an expander module for the sn-lfo module that adds a harmonic wave to the output of sn-lfo. Multiple expanders can be stacked to create a waveform using harmonics and/or variations.

Demo Patches

Basic operation

The basic patches have been kept as simple as possible and require only the VCV Fundamental modules included with VCV Rack 2. They are mostly intended just to demonstrate the basic setup and operation of the modules rather than as shining examples of the art of synthesis.

Hooks up 3 standard LFOs to a single sn-vco module to demonstrate the basic waveshaping operation of the sn-vco module.

The patch connects three standard LFOs to ε, δx and δy inputs of a single sn-vco module to output a continuously varying waveform. Not very inspired and sounds pretty bland but should (hopefully) give some idea of the operation of the module.

Extends the basic sn-vco patch with two sn-vcox expanders stacked on to the sn-vco module.

Three independent LFOs are used to drive the parameter inputs of the sn-vco module and sn-vcox expanders so that the resulting waveform is the sum of three more or less independent harmonics, each of which is shape-shifting in its own particular way. A little more interesting than just the basic sn-vco patch but it's not going to win any awards.

Replaces the LFOs in the basic sn-vco patch with three independent sn-lfo modules each with its own waveform. The effect is to make the sn-vco output morph in some weird and unexpected ways - most of which don't sound good but at least a bit more perk-up-your-ears interesting.

Replaces the independent LFOs in the basic sn-lfo patch with an sn-lfo module and two stacked sn-lfox expanders for a slightly different effect. Oddly ambient'ish in a way .. maybe with some reverb ..

MIDI

The MIDI demos are more complex patches that use the sn-xxx modules in combinations to render MIDI files of complete songs.

Relatively simple arrangement of Greensleeves using a stack of sn-vco and sn-vcox modules for the VCO audio generator and a stack of sn-lfo and sn-lfox LFOs to continuously vary the waveshape, volume and ADSR envelope. A lot of the credit has to go to the SurgeXT Reverb2 which adds some much needed depth to the rendering.

Requires:

YouTube

A somewhat more ambitious patch that uses the sn-lfo/x plugins to modulate just about every CV it can reach. The result is a rendering where pretty much everything is changing all of the time - seldom dramatically but enough to be interesting. Starting from halfway decent source material didn't hurt either :-).

Requires:

YouTube

Acknowledgements

For beta testing:

License

The source code and panel files are licensed under Gnu General Public License v3.