Algorithmic Composition
4 credits
Tutorial Description
This tutorial builds on the tools and skills developed in "Virtual Music," and will oversee completion of a computer program to algorithmically generate "Irish" fiddle music through a combination of context-free grammars and Markov chaining. Code will be written primarily in Lisp, though C and Python are likely to be used as well. The code will be fully documented, complete with a clean API and in-depth discussions of the processes used.
To be discussed
- Composing Indian classical music using FSMs. This gives what seems to be a pertinent example of single-voice music composition using a computer, employing a very simple model of a finite state machine. I'm not exactly sure how they designed the FSM yet, whether it was intuitively engineered or deduced through analysis of existing melodies.
CCSCNE
Additions to code from over spring break
- Ability to export .dot files, using graph.lisp...
- for Markov chains used used in composing
- binary tree representation of a tune's repetition structure on every level (this isn't working quite right)
MIDI> (make-tree '(1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8))
((((((1) (2)) ((3) (4))) (((5) (6)) ((7) (8)))) ((((1) (2)) ((3) (4))) (((5) (6)) ((7) (8))))))
MIDI> (print-tree *)
(A)
(A A)
(A B A B)
(A B C D A B C D)
(A B C D E F G H A B C D E F G H)
NIL
- Conditional probability calculation
- for event pairs
- entire tunes, either as average pair probability, or product of all grain probabilities
- Picky composition function, (picky-compose ...), where a tune is only accepted and printed if its total probability is between two thresholds. There are some issues with calculating a tune's overall probability, because the machine's floating point numbers don't always have enough significant digits to multiply 64 small factions together.
Other Stuff
- Code - A place to keep current an past copies of code
- Bib - Bibliography page
- discussions in Jim's