2020 — All-Combinational Hexachord Tester

download code here :: c++ code

MIRROR INVERSION, which will be our chief concern in this study, is a phenomenon not confined music. It is a structural form in nature itself; therefore its appearance in music should not surprise no one. (Rochberg, 1965)

We, human, thinker, creator, composer have always been drawn towards new ways to organize or conceptualize the various components of a given system. Western music tradition makes no exception. At the turn of the 20th century, interest for a refreshing way of organizing harmony and melody arose: twelve-tone technique, or dodecaphony. Leaving out and even avoiding any reference to the codes of functional diatonic music, this radical approach steered abruptly our view of music. The very first individuals that delved into this realm of new possibilities are Charles Ives, Josef-Mattias Hauer and of course the famous Arnold Schoenberg. Although those composers left wonderful and intricate music behind, they did not explicitly discussed nor documented some specific theorical concepts. One of them is around the issue of constructing a distinct type of twelve-tone row that is characterized by its all-combinatoriality.

All-Combinatoriality: the capacity of a collection to create aggregates with forms of itself and its complement under both transposition and inversion. (Babbitt, 1987).

The objective of this project was to create a C++ program that could test a given hexachord entered by the user and output if true/false the hexachord adheres to the all-combinational properties covered (and if so with which point(s) of inversion).

The core reference for this project was “The Hexachord and its Relation to the 12-Tone Row” by George Rochberg (1955, Theodore Presser Company). In this book, Rochberg dissects the subject of all-combinationality when building twelve-tone rows. He proceeds empirically by firstly demonstrating assorted rows taken from various works by Schoenberg, then gradually identifying patterns or laws that he finally consolidate in a set of 3 clear rules. Those rules are the following:

RULE 1. Any one horizontal interval plus the mirror interval (or point of inversion) cannot equal 12 (or a multiple of 12).

RULE 2. Any two horizontal intervals plus mirror interval cannot equal 12 (or a multiple of 12).

RULE 3. Any double one interval plus the mirror interval must not equal 12 (or a multiple of 12).

Notes about hexachordtester.cpp ::

To run the program, the user must first compile the file then run the program entitled “hexachordtester” with the desired hexachord included in the same command, as follow:
./hexachordtester 0,1,2,3,4,5