Probabalistic music

Newbie here! I understand synthesis but haven’t got to grips with the modules yet.

Here’s what I’d like to do. Perhaps you can tell me if it’s possible in VCV and, if so, what modules I should eb using.

Set a root key, let’s say Cmaj. Play C chord Put C in Probability generator./dice machine This gives a % chance of what the next chord will be. Eg, 40% chance it’s F, 40% chance it’s G and 20% it’s Am Play the chord Back to the generator so, eg, from the Am there’s a 30% of F, 20% of Dm, 20% of G, 20% of Em, 10%of C

and so on…

Is something like this possible in VCV?

I’ve struggled to find modules that dso the % calculation and play pre-programmed chords.

Would very much appreciate any advixe.

Thank you, Ian

Perhaps this ?

see also this thread

I found this article, for a Jupyter notebook example of a Markov chain generated chord progression:

Markov Chain for music generation by Alexander Osipenko in @TDataScience https://towardsdatascience.com/markov-chain-for-music-generation-932ea8a88305

2 Likes

I’m also curious if there’s a way to set up probabilistic choices between 3 or 4 options. With two options, you can use a Bernoulli gate. You can chain these together, but this is not the same as setting a probability between 3 or 4 options.

1 Like

I can’t think of any obvious way of doing it imediately but if you get desparate then Prototype lets you write you’re own module in a variety of scripting languages. Actually, looking at it the above mentioned Markov Chain sequencer is the most likely candidate.

1 Like

Just some thoughts…

It might be worth looking at computerscare I Love Cookies, it could get you part of the way.

An expression like this will give you input A 40% of the time, input B 40% and input C 20% {AAAABBBBCC}

And it has multiple expressions. You would need to work out how to switch between them, using switch based on what value was used last?

You could use it to index into the VCV Chord module to pick the desired chord.

2 Likes

Hi @iantrader101,

What you are describing is indeed one of the main applications I had in mind when developing the Markov Sequencer. https://github.com/philippesalembier/SckitamVCV#markovseq-- It has 8 states (that you may associate with a CV indicating the chord) and you can fully specify the probabilities to go from a given state to any state.

If you need some help with this sequencer, please let me know. I would be happy to help.

2 Likes

Hi @gabrielreygoodlatte ,

I am not sure the Markov Sequencer is the only option for this, but it can indeed be used to define probabilistic choices among up to 8 states. Moreover, if necessary, these probabilities may depend on the current state of the sequencer.

1 Like

Hey @Jens.Peter.Nielsen - Thank you. @philippe.salembier has replied, too, so I’ll take a look at that.

Great article, thanks for the link. The principle seems straight forward although I got a bit lost with the technicalities :slight_smile:

Hi @gabrielreygoodlatte - reading the thread so far, I think Markov might be the way to go.

Hey @dag2099 - Yes, I think it’s Markov. I used to program a bit in BASIC and love the idea of writing my own modules but it’s waaaay beyond my capabilities.

1 Like

Hi @PaulPiko - That looks way cool!! Will have to investigate, thank you.

VCV Chords was one of the first modules I came across when searching but I’d like to do this free :slight_smile: if possible, at least until I know what I’m doing :slight_smile:

Hi @philippe.salembier - thank you so much. I’m a total VCV newbie so might well need some help setting it up but I will see how far I get first :slight_smile: Appreciate your offer , thank you.

Hello again - well, that didn’t take long :slight_smile:

I’ve read the instructions but I’m afraid I’ve absolutely no idea where to start, what to plug into the inputs or outputs :frowning: I guess being a total VCV newbie doesn’t help.

Would very much appreciate some sort of (simple) starter patch.

Thank you.

Simple Starter patch : :smiley:

SimpleProba - 09052020.vcv (51.7 KB)

4 Likes

8-random.vcv (20.7 KB)

2 Likes

Here is a simple example:

Chord_Prog_Markov_Seq.vcv (21.8 KB)

The “sample and hold” module generates random pitches which are quantized by the Re-Wind quantizer. In this quantizer, I have defined 6 scenes corresponding to the notes of 6 chords of C major, from I to vi. Then, with the MarkovSeq, I have specified the following chord progression scheme:

Chord_Diagram

This is done with the following part of the module:

Screenshot 2020-05-09 at 13.43.23

State 1 is associated to chord I. On the upper left side of the figure, you see that from there, their is almost a uniform probability to go to any chord from 1 to 6 (the probability to remain in state 1 is somewhat lower). Then, on the right side, you see the probabilities for state 2 associated to chord ii. From here, you have a rather low probability to remain with the same chord, but higher chances to go state 1(I chord), 3 (iii chord) or 5 (V chord). And so forth for the remaining states.

The last point is to associate CV to the chord. This is done with this part of the module:

Screenshot 2020-05-09 at 13.43.07

The knob for state 1 is at 0. So the CV at the output of the sequencer for this state will be zero and it will select the first scene of the quantizer (the one associated with the notes of the C major chord). The knob for state 1 is at a higher value (0.99) so that the sequencer output will select the second scene of the quantizer… and so on…

I hope this will help you to start.

3 Likes

You should at least take a look at some of the examples for Prototype, it’s massively easier than writing your own module. I used it to do the AI behavior of the paddles in this patch https://www.youtube.com/watch?v=S9nUd3bn050. (Sorry to self link).

Thank you, that is a super patch and I can see how it comes together now

Thank you. That’s really interesting. I will study it to see how it works.

Thank you very much. TBH, I still struggle to follow the logic but at least I have a working model so I’ll experiment with that. Many, many thanks, much appreciated.