"Reverse bernoulli gate": is there a simpler way to choose between multiple modulations?

I’m trying to randomly switch between 3 possible modulations of a signal: a sine wave, noise, and nothing.

So, I’ve hooked up this patch:

Every time the LFN crosses zero, the S&H is triggered to make a new selection from its internal white noise source. That selection then gets scaled between 0 and 3.75V, then forwarded on to the 8:1 unit, which switches between the three possible inputs (0V to 1.25V = sine wave, above 1.25V to 2.5V = noise, and 2.5V to 3.75V = nothing), the final output of which goes to Y on the scope (in real life, I’d send the output to the modulation target).

What I like about this:

  • I like to be able to control the frequency of, durations of, and delay times between zero crossings. I can modulate the LFN to change how frequently it crosses zero, or replace it with something else that has different zero-crossing behaviour, to get the switches in modulation source to occur with duration/frequency that I like.

What I am not thrilled about:

  • Having to do more math to address the 8:1 if, say, I want to change the number of potential modulations or weight them in various ways, etc.

  • Most importantly, this seems like something I should be able to do in less than 7 modules.

I’m not wedded to this particular way of controlling how/when a new modulation is selected, I just happened to build this one. But I’ve looked around for a simpler way, without success. Is there no simpler way?

Thanks!

Maybe one of the rchoices modules could simplify this? https://library.vcvrack.com/rchoices

I haven’t used this, but it might also be able to do larger scale choices: https://library.vcvrack.com/GoodSheperd/SEQ3st

I’m interested in creating tools for this kind of purpose if there aren’t already any available that are really convenient. I’m guessing that there is some creative use of existing modules that could work though.

1 Like

I’ve made ATOMS to handle the “variously weighted switch” part of this problem. You can order inputs/outputs along two disks, and then rotate those disks to get different routings.

The channels on the disks get routed based on proximity and range of each input/output, you can set positions and ranges (right-click) individually.

It has no randomness to it though, so that still has to come from another module.

Wouldn’t say it’s simple or really convenient, more of an exploration on how to represent this kind of switch visually.

4 Likes

Being Friday night, I’ve drunk a little too much wine to really read through and understand your problem.

Going purely from the title though, I can say that when I was looking for a reverse Bernoulli gate, Noobhour Baseliner did the trick.

By that I mean whereas a Bernouli gate has one input and the output it comes out of is determined by probability, baseliner has multiple inputs and the one that comes out of the single output is determined by probability.

(which as it happens is quite similar behaviour to what djandino has posted below)

2 Likes

You can use ML Modules 8 to 1. Set 3 channels and Random order

4 Likes

Wow, thanks so much for the quick and helpful responses, all. I now have lots of fun experimenting to do. Stay tuned!

@hamptonio @djandino @steve @unlessgames

3 Likes

It isn’t quite in the library yet, but it should be soon: my new Guilden’s Turn module (brand is ZetaCarinae) might also do some of what you want. It takes 4 inputs and one of them is output, according to a Markov process that you have a lot of control over:

4 Likes

That looks super promising for a bunch of stuff, including melody generation. Looking forward to it!

Just saw the new version of your modules come in via the plugin manager tonight, can’t wait to get some time (hopefully over the next week?) to play with 'em!

1 Like

I’ve ended up using this idea in a patch over on my music thread. Thanks again, folks!

@hamptonio @djandino @steve @unlessgames