More tonnetz transformation and documentation

This commit is contained in:
2023-12-30 14:31:30 +02:00
parent d5d7d5ca7f
commit 4ec0c66484

View File

@ -205,13 +205,11 @@ z1("1.0 047{10}")
## Cyclic methods
In addition to the transformations, Ziffers implements cyclic methods that can be used to cycle through the tonnetz space. Cyclic methods turns individual pitch classes to chords using the tonnetz. The cyclic methods are:
In addition to the traditional tonnetz transformations, Ziffers implements cyclic methods that can be used to cycle through the tonnetz space. Cyclic methods turns individual pitch classes to chords using the tonnetz. The cyclic methods are:
* <ic>hexaCycle(tonnetz: number[], repeats: number = 3)</ic>: Cycles through chords in the hexa cycle
* <ic>octaCycle(tonnetz: number[], repeats: number = 4)</ic>: Cycles through chords in the octa cycle
* <ic>enneaCycle(tonnetz: number[], repeats: number = 3)</ic>: Cycles through chords in the ennea cycle
* <ic>powerTowers(tonnetz: number[], repeats: number = 3)</ic>: Cycles through chords using the Power Towers
* <ic>cubeDance(tonnetz: number[], repeats: number = 3)</ic>: Cycles through chords in a Cube Dance
**HexaCycles** are sequences of major and minor triads generated by the <ic>p</ic> and <ic>l</ic> transformations . Let's take the following example starting with a <ic>C</ic> chord: <ic>C -> Cm -> Ab -> Abm -> E -> Em</ic>. You can start on the chord of your choice.
@ -219,12 +217,6 @@ In addition to the transformations, Ziffers implements cyclic methods that can b
Unlike HexaCycles and OctaCycles, **EnneaCycles** are four-note chord sequences. Considering the functions implemented for tetrachords in Ziffers, we can interpret these sequences as generated by <ic>p12, p23, and l13</ic> transformations repeatedly: <ic>C7 -> Cm7 -> Cm7b5 -> Ab7 -> Abm7 -> Abm7b5 -> E7 -> Em7 -> Em7b5</ic>.
**Power Towers** use four-note chords (<ic>halfdim7, m7 and 7 </ic>). The assembly chords are of type <ic>dim7</ic>. One of the many paths for succession has been chosen.
**Cube Dance** is another graph that is built primarily with HexaCycles, except that it adds <ic>augmented</ic> triads as assemblers. As with Power Towers, one possible path has been selected.
Both Cube Dance and Power Towers have many chords, so sometimes it will be convenient to slice up fragments of the cycles. Ziffers has some **Generative functions** (e.g., <ic>between(start, end)</ic>) that may be useful to you.
### Examples:
${makeExample(
@ -253,20 +245,6 @@ z1("s 0 3 2 1")
true,
)}
${makeExample(
"Cube Dance swing",
`
z1("0").cubeDance([3,4,5]).sound("sine").out()`,
true,
)}
${makeExample(
"Power Towers with pulse",
`
z1("2").powerTowers([2,3,7]).between(5,11).sound("sine").out()`,
true,
)}
## Cycles with vitamins and repetitions
Finally, cyclic methods in Ziffers can also be vitaminized with doses of different Tonnetz. However, this opens the way to different behavior with cycles.
@ -298,9 +276,9 @@ By default hexaCycles and enneaCycles have <ic>3</ic> repetitions, while octaCyc
* Remark E: These cycles in Tonnetz <ic>[3, 4, 5]</ic> are implemented based on the work of [Douthett & Steinbach (1998, pp. 245-247, 253-256)](https://www.jstor.org/stable/843877)
## Traversing methods
## More traversing methods
In addition to the cyclic traversing methods, Ziffers implements methods based on different theories that traverse the chords in the Tonnetz in different ways. These methods are:
In addition to the cyclical traversing methods, Ziffers implements traversing methods that traverse the Tonnetz in different ways. These methods are:
* <ic>powerTowers(tonnetz: number[], repeats: number = 3)</ic>: Cycles trough chords using the power towers
* <ic>cubeDance(tonnetz: number[], repeats: number = 3)</ic>: Cycles trough chords in a cube dance
@ -308,7 +286,28 @@ In addition to the cyclic traversing methods, Ziffers implements methods based o
* <ic>weitzmannRegions(tonnetz: number[])</ic>: Cycles trough chords in a Weitzmann region
* <ic>boretzRegions(tonnetz: number[])</ic>: Cycles trough chords in a Boretz region
We encourage you to explore these methods and their different parameters. The tonnetz traversing methods can be used in combination with the Ziffers generative methods to sequence, arpeggiate and to randomize the chords in different ways.
**Power Towers** use four-note chords (<ic>halfdim7, m7 and 7 </ic>). The assembly chords are of type <ic>dim7</ic>. One of the many paths for succession has been chosen.
**Cube Dance** is another graph that is built primarily with HexaCycles, except that it adds <ic>augmented</ic> triads as assemblers. As with Power Towers, one possible path has been selected.
**Octa Towers** TBD.
**Weitzmann Regions** TBD.
**Boretz Regions** TBD.
Both Cube Dance and Power Towers have many chords, so sometimes it will be convenient to slice up fragments of the cycles. We encourage you to explore these methods and their different parameters. The tonnetz traversing methods can be used in combination with the Ziffers generative methods to sequence, arpeggiate and to randomize the chords in different ways.
${makeExample(
"Cube Dance swing",
`
z1("0").cubeDance([3,4,5])
.sound("sine")
.ad(r(0.1,0.5),0.1)
.out()
`,
true,
)}
${makeExample(
"Selecting subset of chords from the cube dance",
@ -324,6 +323,19 @@ ${makeExample(
true
)}
${makeExample(
"Power Towers with pulse",
`
z1("1/4 2").powerTowers([2,3,7])
.between(5,11)
.arpeggio("e 0 3 1 2")
.sound("sine")
.adsr(0.01,0.1,0.1,0.9)
.out()
`,
true,
)}
${makeExample(
"Selecting chords from the weitzmann region",
`