Package: pcsets
pcsets:Pitch Class Sets for Pythonversion 2.0.2Bruce H. McCosarWelcome, and thank you for downloading pcsets. This is the thirdofficial (non-beta) release. With this release, I start the pcsetstutorial see "About this Package", below).Learning about Pitch Class Sets is easy -- the four modules presentedhere are, like many Python programs, self documenting. They work wellwith pydoc <http://docs.python.org/lib/module-pydoc.html>.Learning how to use these for practical compositional purposes, on theother hand ... well, that takes a lot of individual experimentation. Ihave started a short tutorial, which will eventually demonstrate someof the techniques I've learned. However, you are a much better judgeof what you want to know than I -- please, try the module out, andmost of all, have fun learning something new.About Pitch Class Sets======================Pitch Class Sets are a mathematical model for analyzing and composingmusic. Each note 'C' through 'B' has an equivalent pitch class number0 through 11. Sets of these numbers may be operated on by mathematicalfunctions such as transpose and invert.The goal of this project is to, eventually, have:* A Python library capable of fully implementing Pitch Class Setsand their common operations, as well as several conveniencefunctions to bring these abstract concepts to the real world.(Mapping pitch classes to note names, for instance).* A tool for composition.  Some applications are harmonization,chord voicing generation, and melodic motif creation.* More exotic goals -- creation of new chordal elements, musicalprogressions, and harmonic relationships.About this Package==================The API will not change for any of the modules referred to as 'core'.Bugs will be fixed and new modules will be added, but you won't wakeup one day and find that PcSets wants input in statcoulombs or DutchGuldens. In the version 2 series, the core will always behave likethe core. Occasionally new functionality will be introduced, but theoriginal functionality will never be 'broken' -- that's why I spent allthat time writing unit tests.THE COREThis is the core as of 2.0.0:pcsets.pcsetThe base class, PcSet, includes methods that operate on singlesets, such as inversion and transposition.pcsets.pcopsOperations on two or more sets, such as subset_of(a,b).pcsets.catalogGenerates the entire catalog of 224 prime sets as a Pythonobject. Since this takes a while to generate, it saves thecatalog in a pickle file (catalog.pkl) for future use.pcsets.noteopsThe 'universal translator' from PcSets to named notes andvice versa.Any *new* modules will enter as 'experimental', however, not core.Experimental modules can change at any time.EXPERIMENTAL MODULESWith version 2.0.1, I introduced the first experimental module:pcsets.tonerowImplements the ToneRow class.  Unlike PcSets, which areunordered, a ToneRow consists of all 12 pitches in an*ordered* arrangement.There is a lot of good information on this subject in the Straus bookreferenced below. I've also put a lot of time into writing documentationstrings for the module; a run through it with pydoc will probably tellyou somewhere between too much and far too much ;-)Another experimental module in development (and still in hiding,until I settle on a usable, workable interface):* Operations on the familiar chords and scales -- sort of a noteopsfor the common language of chord-scale theory.These modules won't make it to the core until at least version 2.1.THE TUTORIALFinally, I've made a start on the tutorial.  My hope is that workingthrough the documentation -- even for features that haven't been addedyet! -- will let me streamline the API and introduce more relevantfeatures in future releases.Be sure to check back at the project website for updates.  I seem tohave embraced Google Code's slogan, "Release early, release often."http://code.google.com/p/pcsets/