Calculates the "voice-leading signature" of the set's elementary transpositions
as determined by vl_generators()
.
Arguments
- set
Numeric vector of pitch-classes in the set
- index
Integer: which voice-leading generator should be displayed? Defaults to
1
, the one which induces the least amount of motion.- display_digits
Integer: how many digits to display when naming any non-integral interval sizes. Defaults to 2.
- edo
Number of unit steps in an octave. Defaults to
12
.- rounder
Numeric (expected integer), defaults to
10
: number of decimal places to round to when testing for equality.
Value
List with three elements:
"vl" which shows the distance (in
edo
steps) that each voice moves"tn" which indicates the (chromatic) transposition achieved by the voice leading
"rotation" which indicates the scalar transposition caused by the voice leading
Details
Note that the voice leadings determined by vlsig()
can be different from the
corresponding ones at the same \(T_n\) level in vl_rolodex()
. The latter function
prioritizes minimal voice leadings, whereas vlsig()
prioritizes elementary voice
leadings derived from a set's brightnessgraph()
. In particular, this means that
vlsig()
voice leadings will always be ascending, involve at least one common tone,
and involve no contrary motion. See the odd_pentachord
voice leadings in the Examples.
Examples
major_scale <- c(0, 2, 4, 5, 7, 9, 11)
vlsig(major_scale) # Hook's elementary signature transformation
#> $vl
#> [1] 0 0 0 1 0 0 0
#>
#> $tn
#> [1] 7
#>
#> $rotation
#> [1] 4
#>
pure_major_triad <- j(1, 3, 5)
vlsig(pure_major_triad, index=1)
#> $vl
#> [1] 0.00 1.12 1.82
#>
#> $tn
#> [1] 4.98045
#>
#> $rotation
#> [1] 1
#>
vlsig(pure_major_triad, index=2)
#> $vl
#> [1] 0.71 0.00 1.82
#>
#> $tn
#> [1] 8.843587
#>
#> $rotation
#> [1] 2
#>
odd_pentachord <- c(0, 1, 4, 9, 11) # in 15-edo
vlsig(odd_pentachord, index=2, edo=15)
#> $vl
#> [1] 2 3 4 0 1
#>
#> $tn
#> [1] 8
#>
#> $rotation
#> [1] 2
#>
vl_rolodex(odd_pentachord, edo=15)$"8"
#> [1] -3 1 0 -1 -2