Meeting with Machover at MIT

Well today was the day! My meeting with professor Machover at the MIT Media Lab went better than I ever could have dreamed. We talked for about forty minutes. He listened to my thesis ideas and project, pointed out some resources and told me I was headed in the right direction. He liked the design plans I have so far and shared some words of wisdom on music. Being single-handedly responsible for the composition program, he was also able to discuss the more technical side of algorithmic composition.

After a lengthy conversation with Tod, he was kind enough to walk me over to the office of his research assistant for the Hyperscore project, who took a great interest in my program after talking for a short while. I was able to get contact information from both Machover and his assistant, both of whom expressed a great interest in keeping up with the project and hearing how my endeavors go. Perhaps I can have some professional beta-testers for the program!

I'll post more specific details of everything later. Today was all a little surreal. I love my project.

Questions for Tod Machover

These probably need to be refined and I need to think of a few more, preferably more over-arching questions so I can get the most out of my time with Machover. Here's what I've got so far, in order of importance:

  • Given your experience with assisted-composition tools such as Hyperscore, what are your thoughts on completely autonomous randomly-generated music?
  • How, in your opinion, should one approach simulating the human's creative ability to compose?
  • Do you think there would be enough demand for a generative mp3 player to warrant serious commercial consideration?

Also, if anyone reads this post before Thursday and would like the chance to have a music-related question answered by a famous composer, theorist, and musician, comment back and I'll consider asking it if I have any time left after I pose my questions.

Tod Machover

Tod Machover

  • World-renowned composer and music technology innovator
  • Professor of Music and Media at the MIT Media Lab
  • Head of the Hyperinstruments group at MIT
  • Designed custom instruments for renowned artists including Prince and Peter Gabriel
  • Contributed to the development of Guitar Hero
  • Composed a huge number of pieces and worked on several operas

And the best part? I will be getting fifteen to thirty minutes of his time in three days! I can't wait to talk to him and hear what he has to say about algorithmic composition. He's a BIG deal. He's won numerous awards and is on the cutting edge of digital music.

I'm psyched out of my mind right now.

Interval Analysis

In order to make a better progression module that retains both originality and coherence, I need a method for evaluating certain qualities of progressions. One can break progressions into individual chords for easier analysis. Even better, one can break chords down into intervals for the most specific analysis. Intervals, which are more specific than individual notes, yet more general than chords, provide a good basis upon which to judge qualities of chords and progressions with fair accuracy.

I made up three criteria for intervals and evaluated every interval in the minor key based on the criteria (which have values between one a five, inclusive). Higher mood values indicate a 'happier' feel while low mood values indicate a 'somber' feel. High suspense values indicate a sense of tension in the interval, while low values designate chords with greater stability. Low consonance values indicate a clashing of harmonics, which high values indicate a relatively consonant interval.

Below is the table of intervals and quality values I wrote down. 'Bad' intervals, or those with a consonance value of 1 have been marked in red.

Interval: Mood, Suspense, Consonance
1-2: 1,5,2
1-3: 2,2,5
1-4: 2,3,4
1-5: 3,4,4
1-6: 2,4,4
1-7: 2,3,2

2-3: 1,4,1
2-4: 3,2,3
2-5: 2,3,3
2-6: 2,5,1
2-7: 4,2,4

3-4: 3,4,2
3-5: 4,2,4
3-6: 5,1,5
3-7: 5,2,4

4-5: 3,4,2
4-6: 3,3,3
4-7: 4,3,3

5-6: 3,4,1
5-7: 4,2,4

6-7: 4,4,1

Markov Drumming Ideas

I need to create a list of statistical attributes that can be analyzed and linked to form a statistical Markov profile for drum styles. I also need to establish how attributes will be stored. Here are some ideas:

Format for statistical attribute: Node-(Trigger:Boolean Operator:Trigger...)=[Correlation],[Strength]

Examples
Snare-(Beat5:AND:CHatLast1)=26.73,2
Snare-(Beat5:AND:!CHatLast1:AND:ChatLast2)=53.9,4

The above attributes specify a few things. First, there is a 26.73% chance that a snare hit will directly follow a closed hi-hat hit on beat 5 (meaning the hi-hat hit falls on beat 4 and the snare hit falls on beat 5). Second, there is a 53.9% chance that a snare hit will follow a closed hi-hat hit by two beats on beat 5 provided that it does not directly follow a closed hi-hat hit (meaning the hi-hat hit falls on beat 3, beat 4 must not be filled by a hi-hat hit, and the snare hit falls on beat 5).

I think that these kinds of logical combinations will allow a thorough analysis of percussive styles.

Absolute Beat
The most basic trigger, this fires on a specific beat number.

Modulus Beat
Very similar to the absolute beat trigger, this trigger fires for each beat number computed modulus a certain divisor. In other words, it may fire every fourth beat, or every other beat, etc.

More on triggers later.

Markov Drumming Ideas

The Problem: Given a Markov analysis module, particularly for percussion, analyzing pieces of different styles (or even a single piece with slight variations in style) and averaging them into a primary statistics file would cause the file to become a "soup" of conflicting styles. This mushy average would turn into a rather nasty output. It's like taking vibrant blue and green, both very nice colors when taken separately, and combining them to get a nasty brown.

Possible Solution: When analyzing pieces, create statistical profiles of each segment (on an individual measure, or maybe a 4-measure basis) and compare the divergence of the statistics. If the divergence measure surpasses a certain threshold (which the user may set), then the segments are treated as separate styles that use separate statistical profiles. If they don't diverge by much, then the statistics can safely be averaged and saved to the main statistical profile for that style. It's like averaging all the shades of red and all the shades of green separately, so as to avoid mixing to get brown. Furthermore, an overarching statistical profile for style transitions could be made so that the drummer knows how often Style A moves to Style B and when, based on the segmented analysis of each piece. In this way, the analysis could conceivable decipher and reproduce an entire sequence of Intro, Verse, Chorus, Verse, etc. without actually understanding what each part means, just knowing that the statistical profiles for each diverge and transition into each other in certain parts of the composition.

Music, the Brain, and Ecstasy (4)

Music, the Brain, and Ecstasy (Robert Jourdain)
Chapter 4: Harmony

  • Harmony is essentially the "depth" dimension of music
  • Dissonance is greater between lower notes and it is for this reason that bass notes should be well-spaced
  • The effect or "feeling" of a chord depends mostly on its context within a larger harmonic progression, not solely upon the identity of the chord
  • Notes 1, 3, 4, and 5 in a scale tend to appear more in musical phrases, especially in positions of emphasis
  • "Triads are at the heart of the harmony we are accustomed to"
  • "Western music is built on variations of a few dozen standard progressions"
  • Harmony is all about offsets - relations between notes and chords, not the identity of individual members
  • A group of composers known as serialists, including Arnold Schoenberg, Béla Bartók, and Igor Stravinsky tried discarding tonal centers (thus effectively removing harmony), resulting in a kind of atonal music that few listeners could grasp and even fewer enjoyed

Saving & Loading

Although it might not seem likes a big step, the ability to save and load project data is pivotal in almost every program. Imagine having to always type an essay in a single sitting, and then having to retype it when you want to make corrections. We simple wouldn't be able to function efficiently without the ability to save and load.

Today I finished a basic saving/loading system that allows my program to save project files and load them again when the user wants. The system saves all instrument and composition data, including all the individual plugin configurations. It wasn't an easy task, but it works, and it makes testing everything a lot easier, since now I can simply make a save file that contains the configurations for all my testing instruments and use it over and over again.

Progress!

Progress Report #6

Advisor
On Friday I met with Mr. Taranto, ran my ideas by him and filled him in on everything I was planning to do. He seemed very interested and impressed by the scope of the project. He said he'd gladly be my advisor. So I guess that's pretty much that as far as advisors are concerned! With my programming abilities and his musical expertise, I think we'll make a killer team.

Goals/Deadlines
Since I've not had good luck with setting abstract goals in the past, I'm going to set more manageable, concrete ones this week that I know I can achieve. In particular, I'd like to really get cranking on all the books I've ordered pertaining to my thesis, so that I can absorb knowledge to use in the creation of my program.

  1. Read through page 200 in Music, the Brain, and Ecstasy
  2. Read through page 50 in Sweet Anticipation: Music and the Psychology of Expectation
  3. Again, try to have something audible for the class to listen to for the next status seminar.

Goals 1 and 2 should be met by next Monday, if not earlier. Goal 3 should be met by the next status seminar.

So basically my week is going to involve a LOT of reading and absorbing information. I think they're reasonable goals that will help me move towards a greater understanding of music that will ultimately manifest itself in my programming.

Contour and Arpeggiation

One of the easiest trends for brains to identify in listening to music is that of contour. Contour is the direction of a certain instrument in terms of pitch. For instance, walking your fingers up the keys of a piano would constitute an unbroken, upwards contour. Contour is a simple way to create pleasant-sounding order in music. An arpeggio is the technical term for musically walking along a contour - that is, playing a continuous scale either up or down.


A simple arpeggio, notice the note is simply increasing by a step each time. This pattern represents a simple, upwards contour.

I started writing a new plugin for my program that will focus on the orderly but random manipulation of contours to produce pleasing background patterns for music. I am starting with simple contours: up and down. I plan to experiment with nested contours, that is, contours within contours. It's easier to understand this graphically:


This time, the inner contour is increasing by two steps with each note and goes four notes before resetting. The outer contour, however, increases the starting position of the inner contour by a single step each time the inner contour finishes its four notes, then the whole process repeats with the inner contour's new starting position.

Although this seems very simple on sheet music (and would seem even simpler in sound form), contour isn't quite so easy for computers to comprehend, especially with several layers of nested contours. I think, however, that creating a program that understands the manipulation of contours will allow a great variety of generated patterns that please the ear.