Ideas for any interested developers

(I’m just noticing this thread, and some of these ideas make for lovely demos/presets for my module BASICally. So as I read through these ideas, I’ll add the code I come up with to create them, and they’ll likely show up as a preset in a future release of BASICally.)

For the sequencer with multiple reset positions, here’s what I’ve come up with:

' Trigger to IN9 reinitializes the sequencer.
' Trigger to IN1 resets to pos1.
' Trigger to IN2 resets to pos2.
' Trigger to IN3 resets to random position.
' Trigger to IN4 moves to next step in sequence.
' OUT1 is the output.

WHEN start() or trigger(in9)
  CLEAR ALL
  ' Could be notes or numbers or combination.
  values[0] = { c3, d#3, g3, a#3,
                d4, a3, g3, e3 }
  length = 8 ' Can be longer!
  current = 0
  pos1 = 0
  pos2 = 5
  out1 = values[current]
END WHEN

WHEN trigger(in1)
  current = pos1
  out1 = values[current]
END WHEN

WHEN trigger(in2)
  current = pos2
  out1 = values[current]
END WHEN

WHEN trigger(in3)
  current = floor(random(0, length))
  out1 = values[current]
END WHEN

WHEN trigger(in4)
  current = mod(current + 1, length)
  out1 = values[current]
END WHEN
4 Likes

Oh! That’s great! I guess Basically might be a great module for these kind of things!

After reading this thread:

I’m pitching a module idea I had a while ago. A Markov Chain module in VCV to experiment with ragas (or any other style of music).

We already have VCV Library - unless games mr. chainkov but unfortunately it is bound to the 12 fixed voltages, and if I’m not mistaken only records note to next note occurrences (instead of triplets, or more), and only records pitch, leaving out glide, duration and volume.

I’d be interested in a Markov Chain module (or Kolmogorov equation based module) that we could feed song information and would build histograms out of the combinations of changes of pitch, volume, gate duration over different time lengths or a varying number of notes. Ideally it would be agnostic about pitch/volume/duration/etc. and just have a number of inputs with corresponding outputs to reproduce the character the original input, but it might be difficult with the difference in voltages and gates the way we use them in VCV.

I believe ragas would be very well captured and thus be well reproduced by a module like this because each raga style has such specific rules about the scale, note changes and rhythm.

Of course it isn’t limited to raga’s. You could feed it any song and it would reproduce a melody that has a similar character. But if music isn’t your thing you could feed it something like stock exchange data, meteoor impact data, or whatever else you’d like.

If we would add the big button functionality as is implemented in VCV Library - Stellare Modular Turing Machine I think we would have a very musical module that doesn’t create random melodies, but well informed melodies.

Of course we don’t have to limit ourselves to melodies, we could do chord progressions as well if we fed it a tuple that captures a chord.

You could even split up a single song in its structural parts: intro, verse, chorus, bridge, ending, etc., feed them into separate instances of the module and reproduce melodies from these instances in sequence to reproduce a full song with a similar feel per part.

3 Likes

I would use such a module! I love Markov chains and use them a lot in my Meander module for generative chord progressions.

A first order Markov chain need to have a transition probability matrix for moving from one note in the scale to any other note in the scale for melody and likewise for chords. The Sckitam MarkovSeq allows such transition probabilities to be set up for 8 transition nodes, which is enough for diatonic scale melodies and chords. But, somewhat tedious to set up.

I like the idea of a raga expert system. Obviously my postings about ragas are very simple pseudo-ragas and do not capture any of the true raga rules of practice.

1 Like

Thank you so much for telling me about VCV Library - Sckitam MarkovSeq. It’s pretty much the output part of what I described above regarding pitch and volume. 16 floats times 8 is a nice number to start playing with. And of these 16 channels I could use a few channels for gate length. If only it had an expander to fill its transition matrix based on input values, or a menu option to import csv’s. Or is there perhaps a magic stoermelder module that can save the day?

PS: I also need to take a closer look at Meander, because I missed the part about Markov chains.

1 Like

Here is a demo of what I have been working on in terms of generative ragas, or in this case, a “Pseudoraga”. This makes use of several contributors patches, including: @abluenautilus , @kwurqx and perhaps more. The primary voices for this are Seaside Modular’s Proteus with Jawari and Proteus with Surge XT Wavetable VCO. My Meander is contributing some melody and bass patterns. Quantization occurs via the Impromptu Adaptive Quantizer which “learns” the scale as provided by the Proteus Ahir Bhairav scale. The tabla emulation is provided by @kwurqx and based on Karplus strong waveguide.

Pseudoraga.vcv (1.1 MB) Be sure to click on the Master Reset button to get everything in sync.

6 Likes

Look in the Meander “Harmony Progression Presets”. Any Markov chain progression will have Markov in the name.

I should probably note that I worked with the Sckitam MarkovSeq developer a couple of years ago to make MarkovSeq compatible with my Meander “octal radix” chord degree and scale interval sequencing. This is somwhat involved, but the octal radix format is degree.octave where degree is an integer from 1 to 7 and octave is an integer from 0 to ~7 .

For chords, the 1-7 corresponds to the circle of 5ths degrees I-VII . For melody, the 1-7 corresponds to scale intervals 1st-7th .

These relative “degrees” will be played in the current Meander mode and root scale.

Meander has DEGREE / GATE inputs inside the circle of 5ths circle and at the top of the Melody part column. For this usage, run a volt/degree number to both the DEGREE and GATE inputs. This allows Meander to understand how to apply these CVs. You can also use an external MIDI keyboard or TWELVE-KEY module to send v/oct to the DEGREE inputs and gate to the GATE inputs for either harmony or melody and play chords or scale notes on the keyboard white keys where C=1.x and B=7.x .

1 Like

impressive and so beautiful ! Congrats, i love that patch !!

1 Like

Amazing, sounds really good. Excellent work!

Relatedly I have a version of this raga in hardware; it uses the hardware versions of jawari and proteus, and has tabla samples provided by Squarp Rample:

8 Likes

That is truly amazing. I can only imagine how much work went in to patching this up and developing the live performance. Great job!

2 Likes

I have one idea that is haunting me for weeks now. It is a bit silly, but I think it might be useful in some cases. So the idea is – inertia module. It’s kinda like slew+envelope follower+lowpass filter or something. It is perfectly possible that this thing already exists and I just don’t know about it

  1. Slew limiting (not exactly limiting). So say you have a gate that goes 0 to 5v. As you know, slew limiter would make it go in and out smoother. Inertia would do that too and also change this gate a bit:

  1. It can be used as an envelope follower. I don’t know yet how slew limiter and envelope follower are constructed, but they are similar and I actually used slew limiters as envelope followers in VCV before. You just set the module so it would ignore the audible frequencies and now it just creates an overall contour of a signal. By the way, I really love FM-OP module by Bogaudio, but it really needs an ENV output… Well, maybe not “needs”, but I want it to have it, haha. Alright anyway, so inertia should do that too, I think, with a little twist, of course. It would add some bumps to the envelope and probably it would add to gain to the audible signal, cause it would make an amplitude bigger or wider. But if it’d be created like I want it to be created i.e. following the physics, on the minimum attack-release settings (passing the audio freqs) it would also probably lower the sound at the end of an envelope. Like this:

image

So the lower the amplitude, the lower the frequencies. Maybe not linear, cause I think the relation between amplitude and speed of an object is non-linear. Maybe I am wrong… But if you want to experiment with this idea - just try different formulas… Or maybe include them as different settings… I don’t know, haha.

  1. Low pass. Well, this one is easy. It is everything I already mentioned. Kinda like slew limiting or an envelope follower depending on the settings it would pass only the lower frequencies through.

  2. VCA. I think it should have an inertia knob. At 0 it would make absolutely nothing to the sound. At -10 it would kill the sound completely (or so I think at least). So -10v and CV input should make a weird but probably nice VCA…

Alright, so what if we set it to +10 instead? I don’t know… Self-oscillation? Cause what I think is that -10 to 0v is “positive inertia”, the real stuff that we see in real world. So from 0 to 10v should be the “negative inertia”? You feed a trigger to it and it just starts oscillating uncontrollably. To the point where it goes to Mhz range eventually. We can’t allow that to happen, haha. Ah, but if it is negative inertia, it should actually kill the sound anyway! Cause if it makes an amplitude bigger on the positive inertia, it should make it smaller on the negative setting… So it would be something like a hi-pass gate. Well, you decide! Hahaha. My job here is done! See you next time when something would haunt me for a long time

P.S. it might be something unusable, but if you want to try it - please share it here!

4 Likes

Love this idea!

It reminded me to a paper by synth designer Peter Blasser (Ciat Lonbarde) “Deconstructing the triangle wave”.

The inertia wave you draw has a similar quality as a drawing of Peter:

image

It is a fascinating text.

1 Like

It made me think of this one :

A module that interests me a lot, for sure… The list of things you can do with it :

  • a rich oscillator with 5+ octaves of temperature-compensated V/O and CV over skew
  • a quadrature sine wave oscillator
  • an LFO divider
  • a filter with controllable, skewable resonance, from a light touch to screaming glitches
  • an envelope generator with nuanced, natural sounding control over the minutiae of the attack and decay stages
  • an intuitive sine wave skew LFO
  • a phase locked loop
  • a voltage controlled exponential slew limiter
  • a slew limiter with controllable overshoot and settling (like a Wogglebug)
  • a percussive sound generator
  • etc

Bref, I’d be super interested to see something like that in VCV !!

2 Likes

Oh, interesting, I’ll read it later

Hmmm, it is similar to what I was thinking about! Nice, so it exists therefore it is possible to do in VCV… I think

Well, I whipped out this BASICally script that maybe does the inertia part, albeit with an extremely naïve notion about how physics works:

WHEN start()
  pos = in1
  velocity = 0
  ' Maximum acceleration per sample.
  ' Should be computed from something more
  ' intuitive.
  max_accel = 0.001
  ' Maximum amount of ground pos can cover
  ' in a sample.
  max_vel = 0.07
  ' A friction coefficient to prevent
  ' infinite wobble around IN1?
  friction = 0.00009
END WHEN

ALSO 
diff = in1 - pos
IF velocity > 0 THEN
  velocity = max(velocity - friction, 0)
ELSE
  velocity = min(velocity + friction, 0)
END IF
if diff > 0 THEN
  velocity = velocity + min(max_accel, diff)
ELSE
  velocity = velocity + max(-1 * max_accel, diff)  
END IF
IF velocity > 0 THEN
  velocity = min(velocity, max_vel)
ELSE
  velocity = max(velocity, -1 * max_vel)
END IF
pos = pos + velocity
out1 = pos
END ALSO

Those variables max_accel, max_vel, and friction values are worth playing with.

Just throwing out some half-baked implementation for you.

3 Likes

Ooooh! Cool! I’ll try it right now! Thanks!

It also somehow reminded me of this :

3 Likes

New idea - Quantinuity. So it is a quantizer that tracks the distance between continuous and quantized values. For example, 0v is C4, right? So 0,01 is something that is a bit higher than C4. And our quantizer would output a quantized note and a distance, difference between input and output, in this case it would be, coincidentally, the raw signal and a quantized one. But if you think about it, the value of this “difference output” would always be 0 to whatever the scale is (I prefer the interactable quantizers), so the maximum would be something a bit short of 1v.

Why it might be interesting to the users? Well, to me it is interesting because I was thinking of a gliding melody with a couple of accentuated tones. It is not fully quantized, but it put accents on the scale notes. I can think of vcv rack implementation with a couple of modules, like this for example (quantizer mode set as “Down”, for the difference to be positive).

It is easy to do, but I wonder why I can’t find any quantizers that would do that? So I want one! Also it would be cool to have an ability to rescale/offset this output (like on the screenshot) and make it exponential or linear if needed…

**I forgot to invert Level CV, so 0 would be the loudest. Sorry! The way it presented it actually accentuates the notes half between the usual scale. Or so I think now

4 Likes

Hi! I had an idea and figured I might use this thread so it can live together with other (much wilder! haha) requests. This one goes to @CountModula and @trickyflemming. First of all, I’m super grateful for the work both of you put into Rack. I was looking into the Leibniz subsystem by Xaoc Devices today and playing with some stuff in Rack, namely Lunetta Modula’s Binary 8 and Hetrick CV’s Analog to Digital, trying to get a feel for it. I wish there was just a few more ways to scan through the different binary values in these modules (similar to what is achieved by tweaking the value knob on Binary 8; or the offset knob in Analog to Digital when nothing is patched to the input; or patching an LFO to the input of Analog to Digital). I believe adding a couple of inputs would do the job:

A. Scan input - allows you to scan through the different binary values by sending it voltage (this is already possible on the ADC modules by both Hetrick and Lunetta Modula, but I don’t know if the inputs are calibrated to go though all the 256 values in order, like the Xaoc’s stuff does);

B. Clock input - each pulse advances a single value;

C. Reset input - send it a trigger to reset the value to the first one (zero).

Anyway, I’ll just stack this onto the wishlist in case either of you decides to upgrade their module and add some extra features! In my opinion those changes would allow for very creative uses, specially when it comes to sequencing. Needless to say, these modules are already super functional and fun to use in their current state and I’m aware that my requests cover use cases which are specific to me, and not everyone. Also, I know next to nothing about coding or binaries, so thanks again for being awesome and baring with me. Bye!