Modeling Expressive Performance


Download the Xcode project file.
Download the paper.

10/1/2008
Survey Presentation Day, spent time in the morning preparing my slides. The "Virtual Music" book I got a few weeks back is a really great source, and as a result I focus heavily on Cope's method. I would like to balance this out with other, (both similar and different) projects in the field of algorithmic music composition.

10/6/2008
picked up two books from interlibrary loan today: "Evolutionary computer music" and "Understanding music with AI: perspectives on music cognition. I'm hoping that these books will help address my narrow focus on Cope's method.

10/13/2008

Met with Jim today, trying to focus in on a project the incorperates what I've been researching, but is scalable and accomplishable. I'm thinking that I want to focus on rhythm perception. So the question now is to determine the best way to do this. I've been reading a lot about neural nets and genetic algorithms, although these algorithms might be cumbersome to implement.

10/15/08

Still thinking about this. Read a good article describing Markov chains, and this seems to be a good way to move forward. Interestingly, this article, published by MIT press describes a system of celluar automata modeled after conway's game of life. Seems like markovs are a good way to represent automata.

11/23/08

So it's been a while since i have update this log. The truth is, however, things are looking good. It looks like my project is going to be implementing a system that uses The Viterbi Algorithm and the Forward-Backward algorithm to track beat offsets in musical performace. This could be expressive deviations, as in retardandos or jazz improvisation. This could also work to identify different genres or performers. In any case, I will be training a transition/observation model using machine learning techniques. The language is C++, and I have found a good open source midi library to facilitate the io. I am using xcode as my dev IDE. It offers many useful debugging and organizational tools. Additionally, the dev tool Interface Builder might allow me to build a user interface for my program, allowing the user to adjust various model parameters. Logic Pro 8 will serve as the midi production enviroment. I must figure out if there's a way to get midi into my system in real time. This would greatly simplify the training process.

11/25/08

things are actually starting to work!
I just got Viterbi up and running, and I can feed the program a performance, and it detects where it thinks the beats are. Using theÊGaussianÊdistributionÊwe talked about, it seems pretty accurate. Right now i'm using a totally random transition matrix, (.083, .083 ...) so, as expected viterbi reports that the probability of seeing the the optimal path as very small. I'm about to implement forward-backward to see if I can train the transition matrix and observation matrix, and raise these probabilities. I'm also looking at how to go about training the models in real time. It seems like the libjdkmidi library i'm using only works with files, but there's a coremidi hardware access layer in mac os x that might be useful.