Skip to contents

The "infrared" hyperplane arrangements are in some sense an extension of the "pastel" arrangements to be more like the Rothenberg arrangements. (This is the sense of the color-conceit name for the arrangments: they contain red-like colors that we don't see in ordinary use of modal color theory.) That is, the infrared arrangment for a given color contains all the pastel hyperplanes (except those filtered out when include_wraparound=FALSE), plus additional ones that make comparisons between generic intervals of different sizes (as the Rothenberg arrangements do). Unlike the Rothenberg arrangements, however, the infrared arrangments are central: every hyperplane passes through the "origin" generated by edoo(). It should be the case that every infrared hyperplane either belongs to the pastel arrangement or is parallel to one in a Rothenberg arrangement. This family of arrangements is conceieved primarily for the study of voice leadings rather than scales themselves.

Usage

make_infrared_ineqmat(card, include_wraparound = FALSE)

Arguments

card

The cardinality of the scale(s) to be studied

include_wraparound

Boolean: should hyperplanes that involve intervals that wrap around the octave be included? Defaults to FALSE.

Value

A matrix with card+1 columns and k rows (where k is the number of hyperplanes in the arrangement). When include_wraparound=TRUE, k is the cardth doubly triangular number.

Details

These arrangements are still somewhat experimental and may change. In particular, the ordering of hyperplanes currently is inconsistent between settings for include_wraparound.

Examples

# To see the effect of "include_wraparound" param, compare to
# pastel arrangments:
make_pastel_ineqmat(3)
#>      [,1] [,2] [,3] [,4]
#> [1,] -1.0    2 -1.0    0
#> [2,] -2.0    1  1.0   -1
#> [3,] -1.0   -1  2.0   -1
#> [4,] -3.0    3  0.0   -1
#> [5,] -1.5    0  1.5   -1
#> [6,]  0.0   -3  3.0   -1
make_infrared_ineqmat(3)
#>      [,1] [,2] [,3] [,4]
#> [1,] -1.0    2 -1.0    0
#> [2,] -3.0    3  0.0   -1
#> [3,] -1.5    0  1.5   -1
#> [4,]  0.0   -3  3.0   -1
make_infrared_ineqmat(3, include_wraparound=TRUE)
#>      [,1] [,2] [,3] [,4]
#> [1,] -1.0    2 -1.0    0
#> [2,] -2.0    1  1.0   -1
#> [3,] -1.0   -1  2.0   -1
#> [4,] -3.0    3  0.0   -1
#> [5,] -1.5    0  1.5   -1
#> [6,]  0.0   -3  3.0   -1

# In general, infrared arrangments are more complicated than pastel:
make_pastel_ineqmat(4)
#>            [,1] [,2] [,3]      [,4] [,5]
#>  [1,] -1.000000    2   -1  0.000000    0
#>  [2,] -1.000000    1    1 -1.000000    0
#>  [3,]  0.000000   -1    2 -1.000000    0
#>  [4,] -2.000000    1    0  1.000000   -1
#>  [5,] -1.000000   -1    1  1.000000   -1
#>  [6,] -1.000000    0   -1  2.000000   -1
#>  [7,] -2.000000    0    2  0.000000   -1
#>  [8,]  0.000000   -2    0  2.000000   -1
#>  [9,] -4.000000    4    0  0.000000   -1
#> [10,] -1.333333    0    0  1.333333   -1
#> [11,]  0.000000   -4    4  0.000000   -1
#> [12,]  0.000000    0   -4  4.000000   -1
make_infrared_ineqmat(4, include_wraparound=TRUE)
#>            [,1]      [,2]      [,3]      [,4] [,5]
#>  [1,] -1.000000  2.000000 -1.000000  0.000000    0
#>  [2,] -1.000000  1.000000  1.000000 -1.000000    0
#>  [3,]  0.000000 -1.000000  2.000000 -1.000000    0
#>  [4,] -2.000000  1.000000  0.000000  1.000000   -1
#>  [5,] -1.000000 -1.000000  1.000000  1.000000   -1
#>  [6,] -1.000000  0.000000 -1.000000  2.000000   -1
#>  [7,] -2.000000  0.000000  2.000000  0.000000   -1
#>  [8,]  0.000000 -2.000000  0.000000  2.000000   -1
#>  [9,] -4.000000  4.000000  0.000000  0.000000   -1
#> [10,] -1.333333  0.000000  0.000000  1.333333   -1
#> [11,]  0.000000 -4.000000  4.000000  0.000000   -1
#> [12,]  0.000000  0.000000 -4.000000  4.000000   -1
#> [13,] -4.000000  0.000000  8.000000 -4.000000   -1
#> [14,] -1.600000  0.000000  0.800000  0.800000   -1
#> [15,]  4.000000 -8.000000  0.000000  4.000000   -1
#> [16,] -0.800000 -0.800000  0.000000  1.600000   -1
#> [17,] -2.666667  1.333333  1.333333  0.000000   -1
#> [18,] -1.333333 -1.333333  2.666667  0.000000   -1
#> [19,]  0.000000 -2.666667  1.333333  1.333333   -1
#> [20,]  0.000000 -1.333333 -1.333333  2.666667   -1
#> [21,] -2.000000  2.000000 -2.000000  2.000000   -1