Skip to contents

Voice leadings between members of a single set class are well characterized by the Modal Color Theory arrangements of makeineqmat(). Those arrangements do not tell the whole story for relationships between inequivalent sets. (For instance, under what circumstances are two brightnessgraph() structures equivalent when set and goal belong to different set classes?) Such relationships are described by the "anaglyph" arrangements produced by this function. (The name for the arrangements alludes to those 20th-century 3D movie glasses which produce a stereoscopic effect by using lenses of different colors for each eye. Like those glasses, the anaglyph arrangements "see" two scalar colors at once.)

Usage

make_anaglyph_ineqmat(card)

Arguments

card

Integer: the cardinality of the two sets to be compared.

Value

A matrix with 2*card+1 columns and k rows, where k is either 4 times an entry of A050509 in the OEIS if card is even, or an entry of A033594 if card is odd.

Details

Note that, unlike for most other hyperplane arrangements, for anaglyph arrangements card is only half the size of the data you're working with, since anaglyph arrangements compare two sets of size card. In general, when useing anaglyph ineqmats with other functions, such as signvector() or howfree(), you should enter the two sets to be compared as a single vector, i.e. c(set, goal). See the use of howfree() in the example.

Examples

min7 <- c(0, 3, 7, 10)
maj7 <- c(0, 4, 7, 11)
just_min7 <- j(1, m3, 5, m7)
just_maj7 <- j(1, 3, 5, 7)

# The 12tet and just pairs have the same anaglyph signvector:
anaglyph_tetrachords <- make_anaglyph_ineqmat(4)
signvector(c(min7, maj7), ineqmat=anaglyph_tetrachords)
#>  [1] -1  0  1  1  1  1  1  1  1  0 -1  1  1  1  1  1 -1  0 -1  1  0  1  0  1 -1
#> [26]  0 -1  1  1  1  1 -1  0  0  1  1  0  0  1  1
signvector(c(just_min7, just_maj7), ineqmat=anaglyph_tetrachords)
#>  [1] -1  0  1  1  1  1  1  1  1  0 -1  1  1  1  1  1 -1  0 -1  1  0  1  0  1 -1
#> [26]  0 -1  1  1  1  1 -1  0  0  1  1  0  0  1  1

# They therefore have equivalent brightness graphs:
brightnessgraph(min7, maj7)

brightnessgraph(just_min7, just_maj7)


# The pair is able to vary along two dimensions in anaglyph space:
howfree(c(min7, maj7), ineqmat="anaglyph")
#> [1] 2