pcsets: Pitch Class Sets for Python

Pitch Class Sets are a mathematical model for analyzing and composing music. Each note ‘C’ through ‘B’ has an equivalent pitch class number 0 through 11. Sets of these numbers may be operated on by mathematical functions such as transpose and invert.

I became interested in pitch class sets as an offshoot of my earlier work in jazz (see “Who am I?“). At the end of this file is a list of Web references that might provide an introduction to the theory.

I also posted the original version of pcsets (the version 1 series) directly to this blog — you can follow the music theory or python tag on this site to go back to where it all began.

I decided to write a Python module after finding most of the programs available online were GUI-only / interactive only (or worse . . . applets). For various reasons, I needed to be able to set up long computational chains on a group of pitch class sets. Typing them into a web browser one at a time and poking buttons was not an option!

I released the module to the public under the GPL for three reasons:

  1. It might serve as an educational tool for music theory and Pitch Class sets.
  2. The addition of functions to connect set theory to the more traditional chord/scale theory might lead to innovative, new types of music software.
  3. There wasn’t a module available that provided the same functionality.

Web References

Text References

  • The classic of the field, The Structure of Atonal Music, by Allen Forte (1973).
  • A relatively new (but extremely thorough and readable) work, Introduction to Post-Tonal Theory, by Joseph Straus (3rd ed., 2005).

Leave a Comment