Chaos 01: A Minimal Chaotic Drone from Stock VCV Modules

By Brian Greenforest ·

Ten elementary modules make the motion. Five more turn it into sound. Chaos 01 puts a nonlinear dynamical system directly into the cables of a free VCV Rack patch.

I wanted a minimal chaotic drone whose mechanism I could actually follow: stock mixers and VCAs, a compact feedback core, and a sound worth leaving running. I could not find a published patch that met this requirement. So I built one, and I am releasing it here for the next person who searches.

Download Chaos 01 · VCV patchListen to the two-minute render

Free, open patch by Brian Greenforest. MIT license. Saved with Rack 2.6.6 and VCV Free 2.6.4. Download and discuss Chaos 01 on Patchstorage. Also submitted to VCV Community’s Music & Patches.

Let the circuit play

The supplied sound patch, rendered for two minutes at 48 kHz using the actual Rack 2.6.6 engine and unmodified VCV Free 2.6.4 modules. All module parameters and all 27 cables are preserved. A capture sink replaces the audio hardware and applies the saved Audio-2 DC-filter setting. The published recording has a constant playback-gain adjustment and one-second edge fades; it has no added reverb, compression, or other effects.

Download the 24-bit WAV · 16.5 MiB · Render settings and measurements

Open it and listen

  1. Open the downloaded brian-greenforest-chaos-01.vcv in VCV Rack 2.
  2. Set the engine sample rate to 48 kHz. The saved integration gains are calibrated for that rate.
  3. In Audio-2, select your audio driver and output device. The file remembers “MacBook Pro Speakers”; choose the output that exists on your computer.
  4. Start at a low playback level and adjust the VCA Mix master level. The patch is mono; Audio-2 duplicates its connected left input to the right output.
  5. Let it run. Its coordinate offset starts the core near (x, y, z) = (0, 0.1, 0). Reopen the supplied file to restart. Initializing the modules would replace the carefully set gains with their defaults.

The mathematical core is eight CV Mix modules and two VCA modules in 30 HP. Noise, VCF, VCO, VCA Mix and Audio-2 complete the 15-module sound patch. Everything comes from VCV’s Fundamental and Core plugins.

Three states, two products

The core implements a sampled approximation to the Nosé–Hoover system, also listed as case A in J. C. Sprott’s Some Simple Chaotic Flows. At parameter one, its equations fit in three lines:

dx/dt = y
dy/dt = −x − y·z
dz/dt = y² − 1

Read these as instructions to three accumulators. The current y pushes x. The next derivative pushes y back toward the center while z changes its damping. The square of y, measured against one, changes z. Each state changes the conditions under which the other states evolve. The deterministic nonlinear feedback is the source of the chaotic control motion.

Use one volt per state unit. A CV Mix output returned to one of its own inputs at exactly unity gain remembers the previous sample. A second input supplies the increment:

next state = previous state + h·derivative
h = 1 / 48000 second

Rack’s engine processing order makes the return cable a one-sample memory. Other cables also introduce sample delays, so the actual patch is a discrete, cable-delayed realization of the continuous equations. Its saved small gains are part of the circuit; rounding them by eye changes it.

Measured x versus y trajectory and x, y, z histories over 120 seconds in the actual Rack engine
The actual core state during the audio render, sampled for plotting at 100 Hz. Download the state trace. The x–y projection shows how the path folds through its state space.

A stock VCA can do the multiplication

The VCV VCA passes a signed signal, but its linear control operates between zero and ten volts. Offset the control and then subtract the unwanted linear term:

Cz = 5 + z/2
Cy = 5 + y/2

p = y·Cz/10 = y/2 + y·z/20
q = y·Cy/10 = y/2 + y²/20

dy/dt = −x + 10·y − 20·p
dz/dt = 20·q − 10·y − 1

That is why there are two VCAs. One forms the cross-product; the other forms the square. Both have linear response and full level. The product identities hold while y and z stay between −10 and +10 V, keeping the controls within range. During this render, y stayed between −4.19 and +3.77 V and z between −3.91 and +3.56 V.

The startup offset uses u = y − 0.1 as the stored coordinate and a separate mixer to recover y = u + 0.1. It places the system at its starting point without continually adding a startup ramp.

Read the patch from left to right

The first eight modules are CV Mix; the next two are VCA. Their outputs have the following meanings. The CV Mix source also makes the addition and offset behavior explicit.

PositionModuleOutput / role
1CV MixCz = 5 + z/2
2CV MixCy = 5.05 + u/2 = 5 + y/2
3CV Mixy = u + 0.1
4CV Mixx, with unity feedback
5CV Mixu, with unity feedback
6CV Mix(y² − 1)/20
7CV Mixz, with unity feedback
8CV Mix(−x − y·z)/20
9VCAp = y/2 + y·z/20
10VCAq = y/2 + y²/20

The x accumulator’s derivative gain is h. The u and z accumulators use 20h because their derivative inputs are divided by twenty. All three direct feedback gains are exactly one.

Take x from position 4, y from position 3 and z from position 7 to modulate another voice. An added VCV Scope makes the evolving coordinates visible; the supplied patch leaves that display out to keep the module count down.

Turning the state into a drone

The RED output of Noise enters the VCF. The core controls cutoff with q, resonance with z and drive with p. The filter’s low-pass output reaches both VCA Mix channel 1 and the VCO’s V/OCT input. The u state enters the VCO FM input; the VCO sine reaches VCA Mix channel 2. The mix goes to Audio-2.

That gives the motion several ways to become audible: spectral brightness, resonance, drive and oscillator frequency. The noise is a source of sound in this voice; it never returns to the mathematical core. You can change the voice while keeping the ten-module state machine intact.

I like synthesis that exposes a surprising amount of behavior in very few operations. The companion project, SqBell: Gaussian synthesis with square waves, pursues that idea inside a Korg minilogue xd oscillator: weighted sign changes build a controllable spectral bell.

Take the patch, connect its states to something you love, and share what you make on Patchstorage.