Sapphire Nucleus

Announcing: Sapphire Nucleus

I’m pleased to announce the release of Sapphire Nucleus on the VCV Rack Library for all users of VCV Rack 2. And for developers, source code is available.

Here is a quick get-started video. It demos a few of the fun sounds Nucleus can make. There is no talking, just patching.

I originally envisioned Nucleus as another low-frequency chaotic oscillator to accompany Frolic and Glee, only with more outputs.

I was inspired by the Instruō øchd and its 8 coordinated outputs, which are very fun to use in generative works where you want lots of automated CV-driven movement. Instead of øchd’s array of 8 triangle waves at different frequencies, Nucleus would provide 12 different low-frequency chaotic outputs that operate with similar frequency spectra. The hope was that this would make it easier to create highly complex generative patches, and that those patches would be completely unpredictable over very long spans of time.

As soon as I had an early version of Nucleus working, I experimented with increasing the simulation rate so that the low-frequency signals would become audible. I was surprised and delighted to find that I could safely extend Nucleus’s frequency range quite far into the audible band without destablizing the simulation or overloading the CPU.

This discovery led in a different development direction where, against my initial judgment, I decided to make Nucleus work well in both roles: low frequency CV and audio voice. Here is an example of two Nuclei, one in each role. The top Nucleus generates 7 control voltages and one feedback voltage. Three of the control voltages are used to modulate the lower Nucleus, which serves as an audible voice.

There is an additional AUDIO/CONTROL toggle button on the Nucleus panel that enables/disables a DC-reject filter on the 12 outputs. This allows the patch designer to indicate that Nucleus should remove unwanted DC components when the outputs are intended as audio signals.

Independently, there is a SPEED knob that allows adjusting the simulation speed over 12 octaves of frequency, with most of that range at frequencies below human hearing.

Internally, Nucleus works as a simulation of five particles operating in an imaginary universe with simple laws of physics. The particles are labeled A, B, C, D, and E. The A particle is the input particle: there are 3 input ports that allow setting the position vector of the A particle (its X, Y, and Z coordinates).

As the 3 input voltages make particle A move around, that movement causes disturbances in the force interactions between all the particles. Thus the other particles, B, C, D, and E, begin moving around also. The 12 outputs are the resulting 4 position vectors of the particles B, C, D, and E.

There is an input drive knob and an output level knob. Just like in Elastika, both are helpful for management (one can never say control with a straight face) of the simulation behavior.

The documentation page has a more detailed explanation of the physics and control parameters. The short version is: I call this module Nucleus because I was inspired by the idea of protons in a real atomic nucleus. They repel each other with an electrical force that obeys an inverse square law. Yet they stay in the nucleus due to the strong nuclear force, which operates only at very short distances. Likewise, the five particles in Sapphire Nucleus experience a combination of a repulsive force that obeys an inverse square law and an attractive force that obeys a direct square law. I also add an adjustable magnetic force that operates at right angles to both particles’ velocity vectors, just to make things more fun.

Overall, Nucleus is a close cousin of Elastika: operating it is more like riding a horse than driving a car. If you expect complete control over your patches, Nucleus probably isn’t going to make you very happy.

However, if you approach Nucleus with an intention of discovery and curiosity, it can take you in some very fun and unpredictable directions.

I leave you with one more example video. Using feedback loops, Nucleus is capable of auto-glitching:

I hope I have sparked your curiosity and that you will try using Nucleus in your patches. As always, I love getting feedback and questions. Please let me know if you have any questions, run into problems, or have any suggestions for how to improve it in a future release.


Congratulations on release of your very interesting new module! I had some fun driving it with my Benjolin Oscillator last night.

I had an idea for some enhancements, or maybe a new but related module.

I first started thinking, what if you allow the particles to have different weights to generate more differentiation between the various outputs? Then I realized, OK, just add some neutrons. They are only 0.14% heavier, but uncharged. So they would not participate in the electrical force repulsion. That should give some different results.

Then I thought, add some electrons and create an entire atom! That has massive differences in weight, as well as opposite charge. Of course you won’t be solving Schrodinger’s equations, but I’m sure you could come up with something. Maybe call the new module Fusion - no atomic fusion going on, but fusion of audio with atomic physics.


I like this idea! This could be as simple as another control group to add a variable amount of divergence of the particle masses. Even a tiny amount of variation could dramatically change the system’s resonance… who knows until we try it?

This is also very interesting. So a neutron should not repel anything, but it should attract neutrons and protons. That will definitely change the sounds it makes, but I have no idea how! Perhaps a toggle button for each particle that turns repulsion on/off?

1 Like