Given an input scale, return a "palette" of related scalar colors. All the returned
scales are the image of the input under some ineqsym(). The symmetry group used to
define the orbit comprises the symmetries of the MCT arrangements given by
makeineqmat(). Although scale_palette() gives the option of finding palettes
with respect to other hyperplane arrangements, note that they may not all have the same
underlying symmetries. It may not be the case that all scales in a palette have the same
properties with respect to an arbitrary arrangement.
Arguments
- set
Numeric vector of pitch-classes in the set
- include_involution
Should involutional symmetry be included in the applied transformation group? Defaults to
TRUE.- ineqmat
Specifies which hyperplane arrangement to consider. By default (or by explicitly entering "mct") it supplies the standard "Modal Color Theory" arrangements of
getineqmat(), but can be set to strings "white," "black", "gray", "roth", "infrared", "pastel", "rosy", "infrared", or "anaglyph", giving theineqmats ofmake_white_ineqmat(),make_black_ineqmat(),make_gray_ineqmat(),make_roth_ineqmat(),make_infrared_ineqmat(),make_pastel_ineqmat(),make_rosy_ineqmat(),make_infrared_ineqmat(), ormake_anaglyph_ineqmat(). For other arrangements, this parameter accepts explicit matrices.- 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.
Examples
# The palette of a minor triad is all inversions of major and minor:
minor_triad <- c(0, 3, 7)
scale_palette(minor_triad)
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 0 0 0 0 0 0
#> [2,] 3 4 5 5 4 3
#> [3,] 7 9 8 9 7 8
# But 12edo is a little too convenient. The palette of the just minor triad
# involves some less-consonant intervals:
just_minor <- j(1, m3, 5)
scale_palette(just_minor)
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
#> [2,] 3.156413 3.863137 4.980450 4.843587 4.136863 3.019550
#> [3,] 7.019550 8.843587 8.136863 8.980450 7.156413 7.863137
# The palette of the diatonic scale includes all 42 well-formed heptachord colors:
dia_palette <- scale_palette(sc(7, 35))
dim(dia_palette)
#> [1] 7 42
table(apply(dia_palette, 2, iswellformed))
#>
#> TRUE
#> 42
# The Rothenberg arrangements do not have the same symmetries as the MCT arrangements,
# so Rothenberg properties are not preserved in a palette:
proper_trichord <- c(0, 5, 6)
roth_palette <- suppressWarnings(scale_palette(proper_trichord, ineqmat="roth"))
apply(roth_palette, 2, isproper)
#> [1] TRUE TRUE TRUE FALSE FALSE FALSE
# Not all the scales in this palette are "proper" even though the input was!
