Music Theory and MIDI with Charlie Gillingham of Counting Crows

This is an old video, but it’s buried in our YouTube channel so I wanted to expose it. Lots of great information here I wish I had time to work on.


Very cool. I’m passing this along to my son. He graduated from Huntington Beach High last year, and he absolutely loves music and programming.


Oh my! You guys brought in Charlie Gillingham to teach you music theory? Talks at Google eat your heart out! :-D.

But you bombarded him with questions and he got in rough. There are some fundamentals most of you were not grasping I’m afraid.

He’s done his best explaining harmonicity at 24:54, but there’s an easier way to explain it with multiples of frequencies: Two tones at an interval of an octave for instance, have a dubble frequency of one another. This makes every other peak and slope of the waves in synch. An interval of a fifth is 1 and 1/2 times the frequency. So less peaks and slopes are in synch. The higher the divisor of this fraction (after the 1) between frequencies, the less synchronicity in peaks, and the less the tones sound in harmony.

But probably the most important problem is the hidden variable at 46:17. A bit later, Matt, you talk about including the key and chord into the encoder, but this is fundamentally problematic. You see, in principle, a chord can be in different keys at the same time, and a composer can write more than one chord over a period of time while the piece is in those two (or sometimes more) keys at the same time. (That’s what Charlie meant by the hidden variable. A very fitting terminology I think). It’s particularly stimulating for our brain to suddenly notice that we were listening in a different key for a while, without clear brusque cut.

Most (3 or 4-tone) chords exist in at least three keys. It’s the composer’s job to confirm a key in what is called a cadence. If you use partial chords (which is kind of cheating, but even Mozart did that sometimes), it can be many more keys at the same time. There are even these four special 4-tone chords that exist in six keys each. (They’re sometimes called skeleton chords).

So encoding the key at a particular moment is not practical, and would be severely limiting. However, having an HTM system that detects a range of possible keys and chords at a particular point would be a very interesting solution.

At another point someone talked about chords being notes played together, but that is not necessarily true. Actually a chord can also be a sequence of single notes, that are part of a particular set that forms a chord. An arpeggio is an obvious example, but many pieces of music have only one chord for several bars. In the ouverture of Das Rheingold Wagner used one single chord for more than 4 minutes, with different instruments tuning in and out at different moments, spanning many octaves. All one chord to depict the creation of the world out of chaos.

This is something the sequential nature of HTM should be able to deal with better than classical NN, I think.