Announcing: Sapphire Elastika

Announcing: Sapphire Elastika

I’ve been down in the code bunker for the past two months working on my new module.

I’m excited to announce that Sapphire Elastika has just been released.

Elastika is a physical simulation that can be used as a filter, a resonator, a reverberator, or a sound generator by itself. There is a huge range of sound effects and textures it can create: metallic percussion, mystical drones, bells, wood blocks, gongs, even horrifying screeches. Some of my favorite discoveries are semi-chaotic modes of multi-stable oscillation.

Elastika simulates vibrations in a hexagonal mesh of balls and springs. The rest length and stiffness of the spring can be varied, along with a friction coefficient and a spreading of the range of ball masses. In addition to having spring forces acting on inertial balls, the simulation includes an adjustable magnetic field that acts on an electric charge on each ball. The magnetic field introduces a force acting at right angles to each ball’s movement, producing a curling movement and sustained feedback effects.

Here is a diagram showing the layout of the balls and springs.

Stereo output is derived from the movement of the balls marked L/out and R/out. Optionally, audio can be fed into the balls marked L/in and R/in.

The Elastika documentation page has a more detailed explanation of the physics and control parameters.

Here are some demo videos. Headphones are recommended to best experience the stereo field.

Feeding in a simple square wave to produce a gong-like sound:

In the next video, Seaside Modular’s Proteus generates a melody that is fed through Elastika, producing a texture that starts out like a steel drum and ends up more like electric guitar distortion:

This video shows Elastika producing sounds on its own without any audio input. It is possible to tune it into self-oscillating modes that sound a little like a flute or recorder, then more like a trumpet. Parts of this recording are reminiscent of tuning a shortwave radio. Starting around 3:30 are some more chaotic and drone-like sounds.

Here is another example of a generated sound texture. Using Instruo ochd to slighly permute the settings, Elastika exhibits indefinite reverberation while subtly changing texture throughout.

Even as its author, I don’t know the outer limits of Elastika’s expressive range. Elastika belongs in the realm of cellular automata and fractals — composite systems made of repeated parts that obey simple rules yet collectively exhibit complex emergent behaviors. In some cases, tiny adjustments to the controls can cause massive shifts in qualitative behavior.

As always, I am happy to answer questions and receive suggestions.

I’m especially interested in hearing any interesting sound textures you can create in Elastika. Please feel free to share patches and audio/video recordings here if you find something fun.


Wow - this is awesome work - original and unique! Great stuff.


Wonderful sounds. I am looking forward to trying this out. I’m thinking this might pair well with my Benjolin emulator, and/or alongside a separate unquantized free improv MPE voice

1 Like

Cool! I love networks. I’m going to use the Gong of Eternity. I have tried to get a good gong going with other modules, without great success. You demo immediately took me back to the movie 2001 and the through the portal scene.

Great, unique module!

1 Like

First impression: WOW!

Second impression: very thirsty.


1 Like


Yesterday I was reading a physics paper on M-Theory and it had the following image. Strikingly similar to your network. I suppose that should not be surprising since the paper was about D6-branes and 3-fold Calabi-Yau manifolds and brane-strings. All are dynamical membrane objects. 11-dimensional

1 Like

It’s funny because I use rack::simd::float_4 to represent all my 3D vectors (position, velocity, force, and acceleration). All along I kept thinking, should I be making this a 4D simulation? I’m wasting a dimension! LOL.

1 Like

That’s interesting. Those extra dimensions are always potentially useful. The “fractal Brownian motion” library I use for Meander’s time correlated noise started out in my 3D gaming and modelling work. It started out as 2D with correlations over X and Y spatial dimensions. Then I made it 3D with correlations over X and Y spatial dimensions and over T time dimension. Then I made if 4D with correlations over X, Y and Z spatial dimensions and T time dimension. It was fantastic for creating dynamic procedural 2D textures and 3D voxel(like) textures or particle swarms. I use the same library in my Calabi-Yau models and simulations in 10D on the GPU as massively parallel particle swarms on a 10D lattice that I can interject stochastic noise into.

One can never have too many dimensions… just ask David Hilbert. :grinning:

Edit: To be clear though, Meander only uses the 1D time correlated fBm noise.

1 Like

I had a Hilbert space walk-in closet added to my house. It is (6ft x 6ft x 6ft x …). It’s great for storing lots of stuff, but one time I made the mistake of walking too far along the hypotenuse. I got lost in there for several days. Now I always tie a mile-long rope around my waist and hook the other end to the doorknob.


Are we talking about the TARDIS here?


This looks real nifty, looking forward to coaxing this one to intriguing self-oscillations

1 Like

The last time I had this much fun, I was naked & covered in oil.

Thank you :wink:


I’m pretty sure I hear Queen’s “We Will Rock You” trying to come out of my speakers :wink:

And Pink Floyd’s “Welcome To The Machine”.

Cum on feel the noize…

It’s a busy place inside Elastika! I’m looking forward to what people do with it.

1 Like

Wow, very interesting! A worthy playmate for my beloved Rings. That flute example was quite striking. Thanks, and looking forward to playing with it.

1 Like

This sounds completely different from anything else around - and such a range of sounds. I look forward to exploring this and you have given us the first of many presets :slight_smile:

[EDIT] I was going to reconstruct the Gong of Eternity but before I connected anything from Ochd I tried it to see what it sounded like clean. Now going down a rabbit hole pressing random and saving interesting settings as presets.

1 Like

Fascinating! Looking forward to having a play

1 Like

That reminds me… I didn’t think much about what happens in Elastika when you use the “randomize” command. I have a feeling I should exclude some of the controls from randomization, especially the output level knob. Maybe the input level knob also, even though it can affect the quality of the output sound in addition to its volume. Thoughts, anyone?


I’ve been randomising it a lot using stoermelder strip, one of the first things I did was to exclude the input & output levels via strip.


What a fascinating module. It sounds really interesting and I’m having fun with the self oscillation unstable edges.

So a couple of minor comments. Bypass doesn’t route input to output. configBypass(INPUT_L, OUTPUT_L) is the API in the constructor. Also yeah some limited randomization may help. If you are building with c++17

template<typename T=rack::ParamQuantity, typename ...Args>
    T *configParamNoRand(Args... args){
        auto *res = configParam<T>(args...);
        res->randomizeEnabled = false;
        return res;

worked well for me. The outputs can get very hot. I can drive it into clipping easily but there’s an attenuator of course.

It seems it isn’t polyphonic. That’s cool but I think you might be at least failing to sum the inputs. If I send a poly input it just ignores the other channels. inputs[FOO].getVoltageSum() perhaps?

I could make it generate nans and not recover in some cases especially when sending it a noisy input suddenly. I wonder if you want to check for nans every 1000 frames or so and reset if so?

Elastika.vcv (6.1 KB)

But anyway was able to get a really sweet distortion sound out of it. Very nice.

I bet this would be popular as a VST effect also. Pretty unique circuit.