Skip to contents

Calculates the "voice-leading signature" of the set's elementary transpositions as determined by vl_generators().

Usage

vlsig(set, index = 1, display_digits = 2, edo = 12, rounder = 10)

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