Hi Johnny
I think you got it all right. A useful abstraction for Markov chains is the list-wrandom object in the list-abs collection. Also see the c_markov and c_markovanal objects in the rj-library. They provide both analysis and generation of markov processes.
Ciao
Frank

On 20.11.2010, at 19:43, Johnny Ferguson <[email protected]> wrote:

Hi,

I just read about Markov chains and how they can be applied to selecting pitches using probability. One thing I'm wondering is how we assure that our note selection matches the distribution of probability.

Let's say our current note was C4.

For the next note:

P(D4) = 0.3
P(E5) = 0.2
P(F4) = 0.5

Would we simply generate a random number R (0..1) and say:

if R < 0.3 then
 nextNote -> D4
elsif R < (0.3 + 0.2) then
 nextNote -> E5
else then
 nextNote -> F4

I only ask, because if our random number function wasn't well- distributed, we might actually see higher probabilities for certain notes than we've intended.

Simply put, what is the most effective, efficient, and accurate way to
select the next state based on a list of note-probability pairs
connected to the current state?

I'm all right with math, but probability is not one of the areas I'm
very strong in. If anyone has a simple way of explaining this, I'd
greatly appreciate it.

I can see that markov chains could be applied to far more things than
pitch (modulation, rhythm, structure, etc.), so I want to get at least a decent grasp on how we implement them reliably before I start going nuts with the idea.

-Johnny

_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to