opycleid.musicmonoids

This module includes musical monoids and groups commonly encountered in TMT.

Noll_Monoid

opycleid.musicmonoids.Noll_Monoid()

This monoid of 8 elements acts on the set of the twelve pitch classes encoded with the usual semi-tone encoding, i.e. the set with .

It is defined by Thomas Noll as the monoid generated by the two transformations and such that and

References

Thomas Noll: The topos of triads, In: Colloquium on Mathematical Music Theory, Volume 347 of Grazer Math. Ber. Karl-Franzens-Univ. Graz, pp. 103–135, (2005).


TI_Group_PC

opycleid.musicmonoids.TI_Group_PC()

This group is the commonly named group which acts on the set of the twelve pitch classes encoded with the usual semi-tone encoding.

It is isomorphic to the dihedral group of order 24, and is generated by the following two transformations.

  • The transformation is called the transposition operation, and is such that
  • The transformation is called the inversion operation, and is such that

Example

from opycleid.musicmonoids import TI_Group_PC

my_group = TI_Group_PC()
print(my_group.get_operation("D","A")) ## ['T7', 'I11']
print(my_group.apply_operation("I11","B")) ## ['C']
print(my_group.mult("I11","T3")) ## "I8"

References

Alissa S. Crans, Thomas M. Fiore & Ramon Satyendra: Musical Actions of Dihedral Groups, The American Mathematical Monthly, 116:6, pp. 479-495, (2018).


TI_Group_Triads

opycleid.musicmonoids.TI_Group_Triads()

This group is the commonly named group which acts simply transitively on the set of the 24 major and minor triads, where (resp. ) represents a major (resp. minor) triad with root in the usual semi-tone encoding of pitch classes.

It is isomorphic to the dihedral group of order 24, and is generated by the following two transformations.

  • The transformation is called the transposition operation, and is such that
  • The transformation is called the inversion operation, and is such that

In effect, the and operations act element-wise on the pitch classes constituting the chords.

Example

from opycleid.musicmonoids import TI_Group_Triads

my_group = TI_Group_Triads()
print(my_group.get_operation("E_M","Gs_m")) ## ['I7']
print(my_group.apply_operation("I7","B_M")) ## ['Cs_m']
print(my_group.mult("I7","T4")) ## "I3"

References

Alissa S. Crans, Thomas M. Fiore & Ramon Satyendra: Musical Actions of Dihedral Groups, The American Mathematical Monthly, 116:6, pp. 479-495, (2018).


PRL_Group

opycleid.musicmonoids.PRL_Group()

This group is the group commonly used in neo-Riemannian theory, which acts simply transitively on the set of the 24 major and minor triads, where (resp. ) represents a major (resp. minor) triad with root in the usual semi-tone encoding of pitch classes.

It is isomorphic to the dihedral group of order 24, and is generated by the following two transformations.

  • The transformation is called the leading-tone operation, and is such that
  • The transformation is called the relative operation, and is such that

Though not a generator, the operation , called the parallel operation, is often considered, and is such that .

Example

from opycleid.musicmonoids import PRL_Group

my_group = PRL_Group()
print(my_group.get_operation("E_M","Gs_m")) ## ['L']
print(my_group.apply_operation("LPR","B_M")) ## ['C_m']
print(my_group.mult("R","LPR")) ## "PL"

References

  • Alissa S. Crans, Thomas M. Fiore & Ramon Satyendra (2018): Musical Actions of Dihedral Groups, The American Mathematical Monthly, 116:6, 479-495.
  • Neo-Riemannian theory.

UTT_Group

opycleid.musicmonoids.UTT_Group()

This group is called the group of Uniform Triadic Transformations (UTT) and was introduced by Julian Hook in his Ph.D. dissertation. It acts on the set of the 24 major and minor triads, where (resp. ) represents a major (resp. minor) triad with root in the usual semi-tone encoding of pitch classes.

The UTT group is isomorphic to the wreath product of order 288 and its elements are usually notated as , with , , and . Their action is as follows.

  • The UTT sends the major triad to , and the minor triad to .
  • The UTT sends the major triad to , and the minor triad to .

Example

from opycleid.musicmonoids import UTT_Group

my_group = UTT_Group()
print(my_group.get_operation("E_M","Gs_m"))
## Returns
## ['<4,1,->', '<4,3,->', '<4,9,->', '<4,7,->', '<4,2,->',
##  '<4,11,->', '<4,6,->', '<4,10,->', '<4,4,->', '<4,0,->',
##  '<4,5,->', '<4,8,->']
print(my_group.apply_operation("<7,6,->","A_M")) ## ['E_m']
print(my_group.mult("<3,5,->","<2,9,->")) ## "<7,0,+>"

References

Julian Hook: Uniform triadic transformations, Journal of Music Theory, 46(1/2), pp. 57–126, (2002).


Left_Z3Q8_Group

opycleid.musicmonoids.Left_Z3Q8_Group()

Like the group and the group, this group is an extension of by which acts simply transitively on the set of the 24 major and minor triads as defined above.

It is generated by the following two transformations.

  • The transformation such that
  • The transformation such that

Example

from opycleid.musicmonoids import Left_Z3Q8_Group

my_group = Left_Z3Q8_Group()
print(my_group.get_operation("E_M","Gs_m")) ## ['J0']
print(my_group.apply_operation("J0","Gs_m")) ## ['Bb_M']
print(my_group.mult("J3","T2")) ## "J1"

References

Alexandre Popoff: Building Generalized Neo-Riemannian Groups of Musical Transformations as Extensions, Journal of Mathematics and Music, 7(1), pp. 55–72, (2013).


Right_Z3Q8_Group

opycleid.musicmonoids.Right_Z3Q8_Group()

This group is the right version of the 'Left_Z3Q8_Group' above. It also acts simply transitively on the set of major and minor triads, and is generated by the following two transformations.

  • The transformation such that
  • The transformation such that

Example

from opycleid.musicmonoids import Right_Z3Q8_Group

my_group = Right_Z3Q8_Group()
print(my_group.get_operation("E_M","Gs_m")) ## ['J8']
print(my_group.apply_operation("J0","Gs_m")) ## ['D_M']
print(my_group.mult("J3","T2")) ## "J1"

References

Alexandre Popoff: Building Generalized Neo-Riemannian Groups of Musical Transformations as Extensions, Journal of Mathematics and Music, 7(1), pp. 55–72, (2013).


UPL_Monoid

opycleid.musicmonoids.UPL_Monoid()

A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.

It is generated by the following three relations.

  • The relation is the symmetric relation such that we have for , and for . This is the relational analogue of the neo-Riemannian operation.

  • The relation is the symmetric relation such that we have for , and for . This is the relational analogue of the neo-Riemannian operation.

  • The relation is the symmetric relation such that we have for , and for . It relates major and minor triads to augmented triads.

Note that for any of these generators, two triads are related if they differ by a single semi-tone move.

Example

from opycleid.musicmonoids import UPL_Monoid

my_group = UPL_Monoid()
print(my_group.get_operation("E_M","F_aug"))
## Returns ['PUPUU', 'UPUU', 'UPUPU', 'PUPUPU']
print(my_group.apply_operation("U","F_aug"))
## Returns ['Cs_M', 'F_M', 'A_M', 'D_m', 'Fs_m', 'Bb_m']
print(my_group.mult("U","UUPUU")) ## "UPUU"

References

Alexandre Popoff, Moreno Andreatta, Andrée Ehresmann: Relational PK-Nets for Transformational Music Analysis, arXiv:1611.02249.


S_Monoid

opycleid.musicmonoids.S_Monoid()

A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.

It is generated by the relation defined as the symmetric relation such that we have , , , and for . This relations is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by a single semi-tone move.

Example

from opycleid.musicmonoids import S_Monoid

my_group = S_Monoid()
print(my_group.get_operation("E_M","F_aug"))
## Returns ['SSSS', 'SSSSSS']
print(my_group.apply_operation("S","E_M"))
## Returns ['E_m', 'Gs_m', 'C_aug']

References

Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).


T_Monoid

opycleid.musicmonoids.T_Monoid()

A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.

It is generated by the relation defined as the symmetric relation such that we have, for ,

  • and

This relation is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by two semi-tone moves.

Example

from opycleid.musicmonoids import T_Monoid

my_group = T_Monoid()
print(my_group.get_operation("E_M","F_aug"))
## Returns ['TT', 'TTT']
print(my_group.apply_operation("T","E_M"))
## Returns ['C_M', 'Gs_M', 'F_m', 'A_m', 'G_aug']

References

Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).


K_Monoid

opycleid.musicmonoids.K_Monoid()

A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.

It is generated by the relation. This is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by the movement of two notes by a semitone each, and the remaining note by a tone.

References

Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).


W_Monoid

opycleid.musicmonoids.W_Monoid()

A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.

It is generated by the relation. This is the same as the relation introduced by Douthett in his work on parsimonious graphs. Two triads are related by if they differ by the movement of a single note by a semitone, and the remaining notes by a tone each.

References

Douthett, J., Steinbach, P.: Parsimonious Graphs: A Study in Parsimony, Contextual Transformations, and Modes of Limited Transposition, Journal of Music Theory, 42(2), pp. 241-263, (1998).


ST_Monoid

opycleid.musicmonoids.ST_Monoid()

A monoid which acts on the set of the 28 major, minor, and augmented triads, where (resp. , ) represents a major (resp. minor, augmented) triad with root in the usual semi-tone encoding of pitch classes.

It is generated by the two relations and described above.