Ideas for any interested developers

Another reply (another idea): via a specific module, I think it’s not possible… but, by developing a parallel standalone application (if not integrated in VCV Rack) who analyzes the patch file, and check all installed modules on your system. For each missing module, possible to modify the patch (it’s a jSon file) by “replacing” by appropriate ghost module.

1 Like

Module idea: Countermeasure

I’d like a module to which you pass a clock signal that will count down bars from a number you set (it assumes everything is 4/4 for simplicity’s sake) and you can set either a one shot trigger (fire trigger after bar X) or a loop (fire trigger every X bars for Y loops or infinite), with a reset so it starts counting again from the starting point back down to zero.

First part…

It has a visible large font countdown showing in bars and beats e.g. 003:03… 003:02… in red telling you when it will next fire and the text and module surround turns red and pulses when at the penultimate bar, 000:04… 000:03…

The second part is… send out a gate for Y bars

Once the target is reached in the countdown you can set a number of bars duration for it to send out a high gate signal and it will do this and then either completely stop or start the next countdown loop. When it is running the text and module turns blue and the countdown changes to show how many bars/beats until the output gate drops low.

Controls…

  1. Knob (and CV input) - X aka COUNTDOWN_LENGTH - for setting bars to count down before gate goes high… 1 to 8 then 16 to 256 (power of 2 exponential)

  2. Knob (and CV input) - Y aka LOOP_LENGTH - for setting bars to count down before gate goes low… 1 to 8 then 16 to 256 (power of 2 exponential)

  3. Knob (and CV input) - Z aka NUM_ITERATIONS - for setting number of loops… 0 to 16

  4. Infinite loops override toggle switch - INFINITE_LOOPS_YN

  5. CV out - LOOP_START - trigger on starting loop/one shot after countdown

  6. CV out - LOOP_END - trigger on ending loop/one shot

  7. CV out - LOOP_STATE - gate either low (counting down before loop/one shot) or high (inside loop/one shot)

  8. CV input - CLOCK - ext clock, suggest same pulse standard used by CLOCKED

  9. CV input - RESET - resets everything and starts a fresh countdown plus resets the loop counter to zero.

I thought about adding a pause button, but suggest that keep it simple and if the clock pulse drops then so does the countdown until it returns and picks up where it left off.

I suggest red and blue as these seem the most obvious visual contrast and people with colourblindness would notice.

Main use case for this module would be things like marking off ‘verse’ and ‘chorus’ sections in one shot mode and setting up drum fill sections in loop mode.

My idea is that by only being driven by pulses and assuming a 4/4 the module doesn’t need to know the actual BPM, just react to each pulse. In fact you could even have a ‘beats only’ mode where all counts are in terms of pulses and bars aren’t mentioned if you wanted to use this with different time signatures it would become completely time signature agnostic.

2 Likes

Just pitching an idea for an oscillator. Conceptually it’s actually about silencing parts of an oscillator´s waveshape according to some on/off pattern.

Somewhat inspired by similar unusual functionality of the Roland Alpha Juno 1 DCO https://www.polynominal.com/site/studio/gear/synth/Roland_alpha_juno/roland-alpha-juno1-manual.pdf

So…could be just the “pulse pattern generator” that can be used as an oscillator. And/or it could be used to modulate other stuff. At audiorate it could modulate audiorate signals, e.g. audiorate oscillator wave shapes. And off course you could offer some internal shapes to modulate. But…also keep and output for the pattern(s) to modulate external stuff.

E.g. using amplitude modulation to create similar patterns as seen from the Roland Alpha Juno 1 DCO.

E.g. turning the first a half of a Saw into this (by zeroing parts out) |
||_|\

Or the first half a 50% pulse into this (by zeroing parts out). ||_||__||

In this example video I used a Trgger-Gate sequencer to create the on/of patterns and amplitude modulation to actually silence out part of an oscillator´s waveshape, according to that pattern.

This is just a crude example and proof of concept. And pretty sloppy at that. But I hope good enough to get the general idea.

Would also be nice to be able to modulate the patterns. E.g. Switching individual steps on-/of or set/modulate patterns via CV (e.g converted to binary) to set patterns, And/or introduce binary logic to set/modulate patterns. And or not just have triggers/gates (0/1) but also CV Voltages as in a CV sequencer. The various/varying amplitudes would effect the waveshape of the oscillator/signal being modulated in way more ways (if AM is used).

Note that relative shifting of phase and varying pulsewidth also have their effects. And of course the relative frequency ratios of the patterngenerator and the oscillator/signal being modulated.

Anyway…many more options to have fun with the concept can be thought of.

There are some obscure elements n this example. There is a (very fast) slew limiter in there, which I used as a sort-of crude ‘averaging’ Low Pass filter and shape modulator. The precision delay is just there because I kept running into sync/phase issues, that I just manually corrected.

2 Likes

(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!