"Andrew":http://www.andrewsw.com requested more information on Set Theory, a branch of music theory that Forte Night deals with, in a comment to my last post. I was going to email him, but figured I'd post about it instead, so that anyone else who is curious can also partake of the information.
Now, IANAMT(I Am Not A Music Theorist) (I Am Not A Music Theorist, to those of you who aren't hip to the latest in Internet acronyms), and what I know is mostly from the perspective of having to write a program about it. Hence, I'm quite clear on the mathematics behind Musical Set Theory, but not very clear about the practical applications of it. However, I have a few friends who are very clear on it (they are composers) and I'll query them for more information which I'll add to the post later. I'll also forward specific questions people have about it along to them, just post them in the comments. Read on if you dare, things will get a little complex as we go.
By the early 20th century, the idea that a piece of music should always have a tonal base, "D-Minor" for instance, had grown tired. Before that, pieces were almost always written in terms of a specific key that was always returned to, which is where we get all the pieces that have names like "Concerto for Strings in C-minor" and "Sonata for Quartet of Contra Bassoons in F". People began to experiment with other methods of writing music and organizing their pitches.
Arnold Schoenberg broke the mold in the very early 1900's by writing atonal music, and using a 12-tone system he developed, where a composer arranges all twelve of the tones into an ordered row, and performs manipulations on that row to generate the pitches for the piece. That is refered to as Serialism, and is another thing I don't know much about.
Set Theory is related to Serialism, but revolves around the idea of organizing pitches into unique sets, and then organizing the sets by their properties, and then using related sets to make your music. It was pioneered by Allen Forte in a book he wrote called "Properties of Atonal Music". Set Theory is not a contrived theory, but was based originally on analysis of compositions by Schoenberg and other Serialist composers as an attempt to glean more order and understanding from their methods. Its important to note at this point that Set Theory and Serialism both deal only with the pitch content of a composition, and do not deal with things like tempo, rhythm, etc.
A pitch class set is any unordered set of unique pitch classes. Allen Forte dealt primarily with any set containing between 3 and 9 elements. Each element is a pitch class, which you and I know as just notes. There are 12 of them, and they are referred to numerically, with C being 0, so the pitch classes are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, and 11, which corresponds to C, C#, D, D#, E, F, F#, G, G#, A, A#, and B. Of course, all of those notes can be represented in several ways, for instance, F# can be E##, or Gb. A# could be Bb, or E could be D## or Fb. When to use each form depends on what key you are in, as well as various ease of readability semantics that musicians understand better than I. Also, we have the fact that while playing a piano, Eb is the same as D#, but on a string instrument that isn't the case, D# is actually a little lower than Eb. So, for simplicity and clarity, we primarily use the numbers for Set Theory stuff.
Say you have a group of notes, which makes up a chord and a 'set', [3,9,4]. That might be Eb, A and E, to a musician. That is a basic pitch class set. There are thousands of them, basically any combination of between 3 and 9 notes, without duplicates, but in any order. In order to categorize the notes, we have to group them by their various properties. Based on experimentation, Allen Forte determined several mathematical procedures that can group the different sets and show relationships between the sets.
Three basic transformations that can be performed on a given set are Inversion, Complementation, and Transposition. To invert
a set is to take every element, and subtract 12. Remember that since every note is represented from 0 to 11, subtracting 12 from 3 would result in 9, since when you go under 0, you 'wrap around' to 11, and continue going down. It is often helpful to visualize a clock face, with each hour being a different note (only the top is called 0, instead of 12). As you subtract, just go counterclockwise around the clock. The inversion of our set [3,9,4] would be [9,3,8]. Another way to use the clock metaphor is to imagine if you marked each note on the clock, and then got the mirror image of the marks, so each mark moves to the exact opposite position on the clock, flipping over the line between 0 and 6. For this reason, 0 and 6 invert to themselves, since they would be right on the 'mirror line'.
Complementation is the process of getting the complement
of a set. The complement of a set is simply the set that contains every element not included in the original set. The complement of our set [3,9,4] would be [0,1,2,5,6,7,8,10,11].
Transposition is the process of sliding the set up and down the scale, ie, subtracting or adding the same number from each note (remembering to 'wrap around' at 11). Using the clock metaphor again, we can imagine rotating the marks we made on the clock around, turning all of them at once as we move them around the clock face. The values can be transposed up or down by any value, but typically we transpose the set to that one of the values is equal to 0. In that case, our set might be transposed down by 3, giving us [0,6,1], or maybe down by 4, giving us [11,5,0]. This process will be used later to determine more about a set.
The inverse and complement of a set aren't very useful by themselves, but they are necessary to determine the two important values for a set, that being the Normal Form, and the Prime Form. The Prime Form is the most generalized form of a set, and is the 'umbrella set' that the original set belongs to. Many sets can all have the same Prime Form, and in doing so, expose fundamental relationships to one another.
To get the Normal Form of a set, we order the notes from largest to smallest, so [3,9,4] becomes [3,4,9]. Then, we transpose the set so that the first note is 0, sort it in order of largest to smallest. Then we transpose the original set again, but this time making the second note 0, then sort again. We do this as many times as necessary to generate all the possible 0 transpositions of the set. The first one (transposing down by 3) is [0,1,6], then the second one (transposing down by 4) is [0,5,11], and the third (transposing down by 9) is [0,6,7].
So now we have three sets, which are each various transpositions of the original set, sorted from smallest to largest:
One of these is the most compact
of all of them, and that one is the Normal Form of our original set. Compactness is determined by counting the interval between the first and last notes, a lower interval means a more compact set. In the case where two of the possible transpositions have the same interval from the first pitch to the last pitch, the one with the smallest second note is the most compact, if two sets have the same second note and the same last note, the one with the smallest third note is the most compact, and so on.
In this case, here are our three sets, and the intervals from the first note to the last:
- [0,1,6] = Interval of 6
- [0,5,11] = Interval of 11
- [0,6,7] = Interval of 7
As we can see, the set [0,1,6] is the most compact, hence, is the Normal Form of our original set. The process of getting the normal form of a set is called normalizing
The Prime Form is what we are really after here, and it is generated by taking the inversion
of the Normal Form, normalizing
that inverted set, and then comparing the two for compactness. The most compact of those two is the Prime Form.
In this case, if we go do the math (I'll go through fast this time), we get the inversion
of [0,1,6], which is [0,11,6], sort it to get [0,6,11], transpose each to zero and resort, giving us [0,6,11], [0,5,6] and [0,1,7]. The most compact of these three is [0,5,6]. If we compare [0,5,6] to [0,1,6] (our original Normal Form), then we see that [0,1,6] is the most compact of the two. Remember that if two sets have the same interval from first note to last note (6 for both sets, in this case) then we see which has the smallest second note.
Hence, [0,1,6] is both the Prime Form as well as the Normal Form of our original set, [3,9,4]. This is actually a special set, popular with Schoenberg and his followers, and was nicknamed "The Viennese Trichord." There are many sets that have the Prime Form of [0,1,6], and these are all sonically related chords. The Prime Form gives us a 'picture' of all the sets that it contains. These sets will sound similar in the same way that all Major chords sound similar in traditional tonal music.
The Prime Complement is another group of sets we can determine is related to the original set. I won't do the math this time, but to get a Prime Complement, you take the complement
of the Prime Form of a set and get the Prime Form of that complement. That Prime Form is another group of sets that will also be related to the original Prime Form's elements. The Prime Complement of our original set, and of the Prime Form [0,1,6] is [0,1,2,3,4,6,7,8,9].
Another way to identify a Prime Form is through its 'Forte Number', a number assigned by Allen Forte to each of the Prime sets. All possible Prime Forms for sets containing between 3 and 9 elements have a Forte Number. There are 226 such Prime sets, each of which has a Forte Number, and together encompass all possible sets of between 3 and 9 elements. The Forte Number for [0,1,6] is 3-5. The first number indicates the number elements in the set, and the second number is an arbitrary catalog identifier. The Forte Number of the Prime Complement above is 9-5. Note how the second number is the same and how the inverse of 3 is 9.
Another property of a pitch class set is it's Interval Vector. An Interval Vector is a count of how many of each musical interval are contained in the set. When speaking of Interval Vectors, we are usually referring to the Interval Vector of a set's Prime Form.
An Interval Vector takes the form of 6 digits, like 100011, where each digit is a count of the number of intervals of that value. An example is easier to understand. For our set [0,1,6], there are three different intervals, the interval between 0 and 6, between 0 and 1, and between 1 and 6. Since there is an interval of 1, we put a 1 in the first position, since there is no interval of 2, 3 or 4, then those positions are 0, there is 1 interval of 5, and 1 interval of 6. Hence, the Interval Vector for [0,1,6] is 100011. From a musical perspective, each interval is measured in terms of half-steps. Going up one number is equivalent to going up a half-step, so the interval between 0 and 1 is a single half-step, and would be called a "Minor Second". Two half steps would be a "Major Second", three half-steps a "Minor Third", four half-steps a "Major Third", five half-steps a "Perfect Fourth", and six half-steps a "Tritone." [0,1,6] contains a Minor Second, a Perfect Fourth, and a Tritone. On the other hand, the set [0,1,2,3,5,6] has the Interval Vector 433221.
When two sets have the same Interval Vector, they are said to be Z-Related. [0,1,6] has no Z-Relation. Z-Related sets, having the same interval quantities, will be sonically related to one another. The sets [0,1,2,3,5,6] is Z-Related to the set [0,1,2,3,4,7], because they both have the Interval Vector 433221.
There are a few other properties of sets that aren't implemented in Forte Night yet, such as "combinatoriality" that involve matrices that I don't fully understand yet. If I choose to implement these in Forte Night at some point, I'll read more about it, and post some details.
If you want to learn more, your best bet is to look up "The Structure of Atonal Music" by Allen Forte (ISBN: 0300021208) at your local library, which is the defining work for Musical Set Theory. If you'd like to see a chart of all 226 sets, download the source code to Forte Night (find it on the "projects":/projects/index.shtml page) and look at table.h, a file containing a structure of all the sets, in a fairly human readable form. You can also post questions below, and I'll forward them along to my composer friends for clarification if its something I can't answer myself. Thanks for reading.