Skip to content

MarkovModel

A Markov model records which symbols tend to follow which, then uses those odds to produce fresh sequences. The order sets how much history each step looks back on. A first-order model (order 1) looks at one symbol to pick the next (bigram probabilities). A second-order model (order 2) looks at the previous pair (trigram probabilities), and so on.

Train the model with learn(), then make new sequences with generate(). A symbol can be anything. For music it is usually a pitch.

Creating a MarkovModel

You can create a MarkovModel using the following functions:

MarkovModel()
MarkovModel(order)
Parameter Type Default Description
order int 1 How many previous symbols each step looks back on.

For example,

model = MarkovModel(3)

Functions

Once a MarkovModel model has been created, the following functions are available.

Function Description
model.clear() Empty the model, forgetting everything it has learned.
model.learn(listOfSymbols) Learn the patterns in a sequence of symbols.
model.put(tupleOfSymbols) Add a single transition to the model by hand.
model.get(tupleOfSymbols) Pick a random symbol to follow a context, weighted by how often each was seen.
model.getTransitions(tupleOfSymbols) Return every symbol that has followed a context, with how often each did.
model.generate() Generate a new sequence in the style the model learned.
model.getNumberOfSymbols() Return how many different symbols the model has learned.
model.getNumberOfTransitions() Return how many transitions the model has learned.