Skip to content

dysonance/Stochatto.jl

Repository files navigation

Stochatto

Build Status

Coverage Status

codecov.io

Introduction

Stochatto is a Julia package that aims to facilitate efficient research in algorithmic music composition. The name is meant to be a play on words, blending the term stochastic, a mathematical term describing a random process, and staccato, a musical term denoting short and punctuated note articulations.

Example

using Stochatto, Random, Distributions, MusicManipulations

Random.seed!(12)                # set random number seed for reproducibility
key = Key(NOTE_RANGE[1], MINOR) # use c minor scale
n = 64                          # generate 64 notes
initial = key.root + OCTAVE * 6 # start sequence at C6
precision = SIXTEENTH           # round to nearest sixteenth note
notegen = Normal(0, 2.5)        # distribute next note normally around current note
beatgen = Poisson(1)            # divide quarter note durations by drawing from poisson

# create engine and generate note sequence
engine = Engine(key, notegen, beatgen)
notes = generate(engine, n, initial, precision)
[println(note) for note in notes]

# generate a musical score from the stochastically generated series of notes
musescore("tmp.pdf", notes) # create and open sheet music pdf
run(`open tmp.mid`)         # open musescore app to listen to song

Example Score Output

References

See the below list of related tools to dig deeper into all of the currently available functionality available for work in this field.