Don Cross / CosineKitty / Sapphire

I love this idea. I remember doing some initial early tests and found the results unpleasant, but the main reason I left out audio rate support was because of numerical stability problems when \Delta t got too large. Making an option like this could also trigger an oversampling mode to mitigate that problem, which would increase CPU overhead, but I’m OK with that for a non-default option.

I will give it a shot and see what happens! It is possible I was too hasty to dismiss the value of audio-rate signals because they were also going to cost me extra development time to support.

2 Likes

Update: I went ahead and implemented a “turbo mode” option in a new branch called audio_rate_chaos.

It’s actually pretty fun! Go into the right-click menu of Frolic or Glee, select Turbo Mode, and you get a +5 bonus on top of whatever the SPEED value is. Because each SPEED unit represents a doubling of speed, it scales just like V/OCT. So the +5 bonus multiplies the speed by 2^5=32.

It turns out I forgot that I had already implemented oversampling! This means in turbo mode you WILL use a LOT more cpu. You might want to turn on the CPU monitor in VCV Rack (F3) and watch what happens when you turn on turbo mode and turn SPEED all the way to 7.

But the sounds aren’t as horrible as I remember. There is some potential here for interesting mixing. I’ll be interested to see what you come up with.

2 Likes

I recorded a little demo of turbo mode for anyone who is curious but isn’t a developer or doesn’t want to spend time building the source code.

However, anyone can download this experimental plugin from the “Artifacts” area at bottom of this page. Download and unzip the file appropriate for your operating system. This will contain the Sapphire vcvplugin file. Follow standard instructions for manually installing a plugin.

Let me know what you all think…

2 Likes

I downloaded and tested (I do need to test compilation soon).

I definitely see sound design potential. Passing output with high chaos through heavy reverb gives a nice pitched noise. X and Y give closely related stereo output.

It seems like Glee chaos control is broken

1 Like

Hmm… I’m not sure. I think it works, it’s just that there’s no “stable” mode in Glee like there is in Frolic. Glee always seemed to vary its behavior based on the chaos parameter, but not in a super obvious way. If you sweep from low to high chaos values, you will see a subtle change in shape of its “probability cloud”.

Glee is based on the Aizawa attractor, which subtly changes shape when the c parameter is varied.

But as I look at the formulas for this attractor, I wonder why I settled on changing c and not any of the other parameters? So there could be room for better adjustment of chaos. I do remember I had to keep c within a small range or the particle could zoom off to infinity.

It’s very possible I could add more options to Glee to vary other of its parameters: a, b, d, e, f. This is an exciting idea because I wanted to create some new chaos generators anyway.

I just tried Frolic as an FM and/or PM modulator, and got interesting results

I’m not seeing it. Nor am I hearing any qualitative difference in timbre when running at audio rate.

Could we somehow put two Glees side by side, initialize them at the same sample, the subtract their respective X values? Start them at the same chaos value and verify that the difference is a flat line zero volts.

Then adjust the chaos of one of them slightly. If I’m right, they should start to diverge dramatically within a minute or so, even with a small change in chaos.

I agree with you, I can’t hear any difference with my human ears when I run Glee at audio rates and tweak the chaos knob.

I figured out how to do my experiment. This video shows that Glee’s chaos knob does change something about its output. Take a look at the peak-to-peak voltage on the scope when the two diverge.

But the chaos knob isn’t as obvious/dramatic in its behavior as I would like. It clearly doesn’t change the output enough to be audible or to visually differ much.

I won’t break backward compatibility, but I’m strongly considering providing better options in the right-click menu.

1 Like

I have another experimental build to play with. This time I have added a new chaos mode to Glee that you can select in the right-click menu. Glee’s CHAOS knob is the same by default, but you can change it to a more fun mode now.

Download the plugin here.

2 Likes

Wow! It suddenly becomes way more interesting, as he said with Glee. That change is definitely a keeper!

Having fun modulating the speed at audio rates. The shape of the modulator has a tremendous effect on the result.

I’m glad you like it!

Glee is based on the Aizawa attractor:

\frac{dx}{dt} = (z-B)x - Dy
\frac{dy}{dt} = Dx + (z-B)y
\frac{dz}{dt} = C + Az - \frac{1}{3} z^3 + (x^2+y^2)(1+Ez) + Fx^3z

where (x, y, z) is the particle’s position vector, and A, B, C, D, E, F are tunable constants.

The three equations define the velocity vector of the particle in terms of its current position. In other words, you take where the particle is, (x, y, z), plug their values into the right hand sides of the equations, and out pops the velocity vector (\frac{dx}{dt}, \frac{dy}{dt}, \frac{dz}{dt}).

This means if you know where the particle is, you can calculate which direction it is moving and how fast, and update the position a little bit based on each small time step dt.

OK, all of that preface was to explain this part: the boring CHAOS knob behavior in Glee (now called “Subtle” mode) is because I chose to vary the C parameter. I can’t remember why I didn’t do more exploration, but I suspect I was in a hurry to get Glee out as a companion to Frolic as a “bonus module”.

The more interesting behavior of “Islands of Stability” comes from varying the A parameter instead.

So the great news is we still have B, D, E, and F to play with, or even combinations of varying more than one of them at a time. And I will be working on that over the next few days, to see if there are any other potential chaos modes that are different enough from Default and Islands of Stability to be included also.

This is not a simple thing though because I have to be careful that I choose safe ranges of the parameters to avoid two problems: divergence and convergence. Divergence means the thing can spiral off to infinity. Convergence means the point can wander to a location where the calculated velocity is (0, 0, 0) and get stuck there forever.

Anyway, stay tuned here and I will be releasing more experimental plugins over the next few days.

I would love to see+hear an example! Can you post a patch or video here?

OK, I have updated Glee to have 4 different chaos modes. They are all named after fruit, and the first letter tells you which of the Aizawa parameters is being controlled by the CHAOS knob:

  • Apple
  • Banana
  • Cantaloupe
  • Elderberry

It turns out that the D and F parameters weren’t very interesting, any more than C is. But I provide Cantaloupe for backward compatibility.

I also added redundant menu options to the SPEED and CHAOS knobs. I left these options in the main context menu because I have a feeling a lot of people don’t think to right-click on knobs, but they often will right-click on the panel out of curiosity.

Here is the plugin build.

@DaveVenom I think you will have fun with this one!

1 Like

You know I did! I particularly like looking at Elderberry on the Tricorder.

I tried feedback by using VCO Lab to modulate the Glee speed, and then the Glee Y output to modulate VCO Lab linear FM and/or phase, or … So many different things to try, and they all sound interesting.

Now I am eagerly anticipating what Rotini and Pivot will bring to the table. I see Rotini in your build, but it doesn’t seem to be functional - the output is always 0

Awesome!

Rotini is a super-simple cross product calculator. If either cable is unplugged, it will be treated as a (0, 0, 0) vector, and the cross product of (0, 0, 0) with any other vector is also (0, 0, 0).

You will also get zero out if you feed in two vectors but they point in exactly the same (or exactly opposite) directions. The cross product of any two parallel 3D vectors is (0, 0, 0). And this can easily happen if you put monophonic inputs in: (a, 0, 0) x (b, 0, 0) = (0, 0, 0) for all real numbers a and b, because they are both parallel (aligned along the x-axis).

A special case of parallel vectors is when both A and B inputs to Rotini are the same 3D vector. So if you plug in two different Frolics with default settings, close the patch and open it again, the Frolics will be generating identical trajectories in lockstep. Then Rotini will output… you guessed it… zero.

So you could try feeding the P (polyphonic 3D) output port from different Frolic/Glee with different settings into Rotini’s A and B inputs:

I’m pretty happy with Glee/Aizawa now. Today I’m going to explore the other parameters in Frolic/Rucklidge, to see if Frolic can gain any fun new chaos modes too.

Oh man, I forgot it requires vector inputs. Thanks

1 Like

Yeah, I explained all this not just for you, but for anyone else here reading. Even I, the developer, kept thinking something was wrong when I got stuck with flatline output, LOL. Then I would think about it and go, oh yeah, parallel vectors.

Oh man Rotini is fun! It is like another form of FM.

I have another idea. You could make Rotini and Pivot wider, and make A and B two columns of inputs with X, Y, Z, and P for each. Then the user can construct each vector with three ordinary mono inputs. The X, Y, and Z inputs could be additive with P. Of course this can all be done with merge utilities, which is what I did to create vectors using audio signals. But putting it all in one module would be much more elegant.

It might be nice to also have permutation knobs and CV for the A and B inputs. Meaning a knob plus CV that would swap X, Y, and/or Z in various permutations.