Just as the transpositions of the diatonic scale can be generated by
Hook (2008)'s doi:10.1515/9781580467476-008 elementary
"signature transformation," the transpositional voice leadings of any
set can generally be decomposed into a small number of basic motions.
These motions correspond to the arrows in a set's brightnessgraph()
.
(The qualifier "generally" is needed because of certain problematic edge
cases, such as the perfectly even scales of edoo()
whose minimal voice
leadings always involve entirely parallel motion, which cannot be
derived from "mode shift" voice leadings represented on a brightness graph.)
vl_generators()
identifies these basic voice-leading motions.
Value
2-by-m matrix whose m columns represent the m distinct voice-leading generators. The top row indicates the generic size of each interval; the bottom row indicates the specific size. Results are sorted so that the first row (generic intervals) is strictly increasing.
Examples
diatonic_scale <- c(0, 2, 4, 5, 7, 9, 11)
melodic_minor <- c(0, 2, 3, 5, 7, 9, 11)
vl_generators(diatonic_scale)
#> [,1]
#> generic_intervals 4
#> specific_intervals 7
vl_generators(melodic_minor)
#> [,1] [,2]
#> generic_intervals 1 5
#> specific_intervals 2 9
vl_generators(j(dia))
#> [,1] [,2]
#> generic_intervals 2.000000 4.00000
#> specific_intervals 3.863137 7.01955
maj7 <- c(0, 4, 7, 11)
vl_generators(maj7)
#> [,1] [,2]
#> generic_intervals 1 2
#> specific_intervals 4 7