Don Cross / CosineKitty / Sapphire

I like this idea, but I don’t want to add this into Rotini and Pivot because I’m planning on a series of other vector operators and I want to keep them as all as simple as possible. I prefer the philosophy of factoring out concepts into separate specialized modules, unless doing so makes what remains hard to use in the typical cases.

But I do like the idea of a Sapphire Merge module specialized for 3D vectors, including the additive part in the merge: vector = (P[0]+X, P[1]+Y, P[2]+Z). Sapphire Merge could be super-thin, maybe 2 or 3 HP wide, and I might be able to stack two independent merge units in one panel.

This could also be a dedicated module, but I’m not as interested in it because swapping vector components isn’t a normal vector operation in math. I’m following my intuition: a vector isn’t just an ordered sequence of 3 numbers, but a single mathematical entity of its own. I’m following a line of thought that physical simulations have produced very interesting sounds, and physical simulations treat vectors as fundamental entities inside an arbitrary coordinate system.

I guess I’m trying to optimize these 3D vector modules for physical realism, which still allows you do to all the weird stuff you want with the individual vector components and merge them together into a “hacked” vector.

I hope this makes sense and doesn’t sound too negative/dismissive… I hope you keep the ideas coming because they are fun and thought-provoking.

No need to worry - I’m just throwing out ideas. I’m certainly not offended if you don’t like them or don’t take action on them.

I more understand your reluctance to implement any kind of swapping of coordinates. I played around with Computer Scare Toly Pools manipulating the audio rate vector inputs to Rotini and enjoyed the results. But I get how that violates the spirit of your module.

But having independent X, Y, Z inputs seems no different to me than your existing breakout of X, Y, Z from the output vector. It seems very logical and balanced to me. To me a user is just as likely to want independent X, Y, Z inputs as outputs. Just giving you my rationale, no offense taken if you still don’t like the idea.

I don’t know if it was intentional, but I noticed that TOUT can receive input directly from TIN.

So TOUT can receive a vector from the left, provides port outputs, and passes on the vector to the right.

The TIN is not symmetric - it only accepts vector info from the port inputs. You might consider accepting vector input from the left that is summed with any signal from the input ports.

Perhaps the ultimate vector utility module would be a combination of TIN and TOUT:

  • Receives a vector from the left
  • Receives a vector as X, Y, Z inputs
  • Receives a vector as a 3 channel poly signal at P input
  • Sums values from all three sources above
  • Scales the vector with a Level control (maybe with a CV input as well?)
  • Outputs the final vector at X, Y, Z and P outputs
  • Sends the final vector to the right

The above would kind of be a Swiss Army knife for vector processing. Construct a vector P from X, Y, Z. Break down a P vector into X, Y, Z. Offset a vector. Scale a vector. Or any combination thereof.

The last thing I was thinking about was adding polyphony to your suite. One poly port can support up to 5 vectors. You could cap the polyphony at the X, Y, Z inputs at 5 to coincide with the P input/output. The number of channels appearing at P would always be a multiple of 3. I think it would work well for everything except Tricorder. There I suppose you could have an option to select which channel to monitor.

I hope my brainstorming so much is an indication of how much I like what you are doing with vectors.

1 Like

I really like this idea! I will ponder that. I prioritized providing dual monophonic / polyphonic vector output because most of the time I’m using the individual components as CV. But on the input side, I’m mostly dealing with “pure vectors”. VCV Merge works fine for the cases where I need to hack a vector out of components, although it is bulkier than I need. I could probably fit at least 2 vector merge units into a single panel maybe 4 HP wide, even with a LEVEL control group. (I call the combination of manual knob, attenuverter knob, and CV input a control group. I wonder if there is a standard term for this idea?)

I’ve been thinking along these lines also. I have gotten a lot of mileage from basic VCV modules that support polyphony: Split, Merge, ADSR, CV Mix, etc. I want to convince myself that any new modules I create that could be done with other modules offer a dramatic improvement in the user experience.

There is already precedent in Nucleus and Polynucleus. They each have 5 vector outputs. You select which vector you want by clicking to the right of the desired row, and a yellow arrow appears as an indicator. I would definitely do the same for any future modules that offer multiple vectors that could be graphed.

This is really fun stuff!

Having fun with Rotini creating the cross product of vectors derived from a 6 note sine wave chord. I add a tiny bit of vibrato via an LFO to give just a bit of motion. Later on I switch 3 of the source notes to triangle waves. The green cables are the original sine (or triangle) waves. The red cables are the complex waves derived from the vector cross products.

I don’t remember what notes I used for the chord. It is fun to explore different input notes.

I route the raw signals to one Crystal Palace Perspex, which slowly crossfades from one note to the next. The nine cross product waveforms are routed to a second Crystal Palace Perspex.

Sapphire Rotini in the Crystal Palace.vcv (4.8 KB)

I believe the cross product waveforms at the Rotini X, Y, and Z outputs are the equivalent of ring modulation, plus one or two extra peaks (when working with sines). Like with simple ring modulation, the extra peaks do not correspond to the source frequencies.

3 Likes

I really like these sound textures!

It’s cool how you approach this from a different mindset: more of an FM operator, which I hadn’t even thought of. I started Frolic and Glee with the idea of slow LFO-style CV control, and I also was (and still am) fascinated by the idea of creating novel physics simulations by hooking vector operators together into ad hoc analog computers.

Then you had the idea of audio-rate, which leads to a whole new realm of use cases. Very cool collaboration… I’m enjoying this a lot!

1 Like

Yeah, at first I thought it was similar to frequency modulation. But now I am pretty sure cross products on audio rate dynamic vectors is more akin to ring modulation. But the cross product definitely adds its own twist (extra frequency peaks)

1 Like

Hey everyone, here is my first 2.4.8 release candidate for Sapphire.

  • New module: Pivot
  • Glee with the 4 chaos modes, as discussed above.
3 Likes

Don’t forget you have the new Rotini in there as well!

I just realized the Pivot does the coordinate swapping that I was asking for, except it has continuous morphing between the different configurations.

One more variation where I replace the Bogaudio VCOs / LFO with Venom VCO Labs.

The middle VCO Lab is in LFO mode with 8 different signals at various rates for different modulation. The 6 note chord played by the other two VCOs (three notes each) is entirely different from before, I just picked 6 notes within a 2 octave range. Two LFO signals provide vibrato. Two modulate the shape of the sine wave. One modulates the sine phase at ~200Hz, and another modulates the FM amount. The last two modulate the output panning.

Venomous Sapphire Rotini in the Crystal Palace.vcv (7.8 KB)

4 Likes

Here is the patch.

1 Like

My Friday evening fun time… yes, some slow chaotic generative modulation!

“Crescent Saturn Sunrise”

Here is the patch.

4 Likes