« November 2007 | Main | January 2008 »

December 03, 2007

NIME Progress Report #7

Most of the progress this week was made on the score/performance plan. I've made some additions to what I turned in on Wednesday: the game now has a bit more geography and has a mechanism for awarding points. I've been practicing with this score and I'm actually really happy with the results: being in control of all the elements of the game has made it easier to sketch out a consistent performance.

The main problem I'm still struggling with is how to end the piece, since all of the actions I set in motion during the performance are continuous (or at least take a long time to fade out). The stopgap solution is to introduce a master volume control and just fade that shit out when I feel like it. A better strategy might be to send a "terminate" message over OSC when a win/lose condition is reached. I'll think of something.

Someone stop me before I markov again

Since I had already written the necessary code for my last mapping project, here's the Thesis Title Generator. I scraped the ITP thesis pages for titles, dumped them all into a text file, and trained my Markov algorithm on them. The program generates strings that very much resemble, but are not (or at least, rarely) identical to, thesis titles from years past. Some recent favorites:

  • massive Narrative, and their interactive Shoes
  • Be My Father
  • The Spectacular Interactive Network City

Mapping: Weekly Response Project

A few weeks ago, Rachel had us fill in a sheet of "responses" to the content of every week of the course. The space allotted to each response was small: one line, maybe one or two sentences (more if your handwriting was small). Later, she directed us to use these responses as the raw material for a map. The class was divided into groups, each group taking responses from a different week (or combination of weeks). I worked with Riddhima, mapping the responses for weeks two and three.

The resulting map is here.

Okay, so it's only a map in a very abstract sense: It's a program that generates text from the weekly responses using a Markov chain algorithm. Here's how it works: the program parses all of the source text (in this case, the student "responses"), and breaks it into groupings of n letters; these are called n-grams (or k-grams). It then calculates the probability of any other letter occurring after each n-gram. For example, given this source text:

and
animal
androgynous
animosity
anchor

The n-gram an would have a 40% probability of being followed by d, a 40% probabiliy of being followed by i, and a 20% probability of being followed by c. The program above then does a random walk through the map, printing out letters according to their probability, then feeding the next n-gram back into the algorithm; the result is a generated text that outwardly shares many of the surface features of the source text, while not being identical with any portion of it.

In essence, the program is building a probability map of the raw text. In the process, it reveals the lexical and structural similarities in all of our responses. The resulting texts are humorous (or at least, I think they are!), but the process of generating them is subversive: just like a well-made map, it subjects the underlying topography to new readings.

Source code is available on request (if you really need to see a trivial implementation of a Markov chain in Perl...). The original transcription is here.