The properties and methods are grouped into categories below.
The static or class methods that are generators are described under Generators
Properties for TTO rotations
These property methods have a limited meaning for ToneRow objects and are only available to PSet and PCSet objects.
These methods take one positional argument, which can be any of PSet, PCSet, list, tuple, or set and return a PCSet or boolean as appropriate. They mimic the Python built-in set methods of the same name. In the description, A is used to denote the current object, and B is the object that is passed in as an argument.
It is worthwhile to note that the behavior of some of these methods are duplicated elsewhere and that they are included here for ease of use with other set methods. The following methods have the same behavior as the method they are listed with:
These properties are related to the object’s set-class and are therefore not available to ToneRow objects, since all tone rows have the same set-class, which is the aggregate of the given modulus.
The following non-TTO transformations are available for PCSet objects only
The following properties are only available for PSet objects.
Neo-Riemannian transformations and their related methods are only available for PSet objects. The following methods return new PSet instances, modified by the appropriate Neo-Riemannian Transformation. If the root, third, and fifth can not be found, or there are more than one, the given set is returned unmodified. These transformations preserve order and change only one pitch by one or two semitones (depending on the transformation) N.B. - While all major/minor triads are supported for all transformations, other trichords or sets with other cardinalities may give unexpected results. The only requirements are that the set has a modulus of 12, and a determinate root, third and fifth.
Composite transformations (i.e. transformations created by performing P, L, or R )
All Neo-Riemannian Transformations are involutions and are equivalent to a TnI operation, though order is preserved. The following methods are not transformations but are available for working with Neo-Riemannian transformations: When the argument takes a string as input, the string is not case-sensitive and characters other than p, l, r, n, h, and s are ignored
The following examples show the Neo-Riemannian transformation methods in action:
a = PSet(0, 4, 7, ordered=True) b = a.H() print a.P().L().P() == a.H() == b Out: True print a.paths(a) Out: ['PP', 'RR', 'LL'] print a.paths(b) Out: ['LPL', 'PLP'] c = a.transform('prl') for each in a.neo('prl'): print each Out: [0, 3, 7] [-2, 3, 7] [-2, 2, 7] print c Out: [-2, 2, 7] for each in a.cycle('pl'): print each Out: [0, 3, 7] [0, 3, 8] [-1, 3, 8] [-1, 4, 8] [-1, 4, 7] [0, 4, 7]
N.B. - The output for .cycle(‘pl’) is a hexatonic system (Richard Cohn). In the example above, this was the “Northern” cycle.