Define hyperplanes for quasi-white arrangements
Source:R/make_white_ineqmat.R
make_white_ineqmat.Rd
Although the hyperplane arrangements of Modal Color Theory determine most
scalar properties, there are some potentially interesting questions which
require different arrangements. This function makes "quasi-white" arrangements
which consider how many of a scale's intervals correspond exactly to the
"white" or perfectly even color for their generic size. That is, for an
interval x
belonging to generic size g
in an n
note scale, does
\(x = g \cdot \frac{edo}{n}\)? This may be relevant, for instance, because
two modes have identical sum brightnesses when the interval that separates
their tonics is "white" in this way. Mostly you will want to use these
matrices as inputs to functions with an ineqmat
parameter.
Details
In many cases, it is desirable to use a combination of the MCT ineqmat
from
makeineqmat()
and the quasi-white ineqmat
from make_white_ineqmat()
. Generally
these are distinct, but they do have some shared hyperplanes in even cardinalities
related to formal tritones (intervals that divide the scale exactly in half).
Therefore, the function make_pastel_ineqmat()
exists to give the result of combining
them with duplicates removed. (The moniker "pastel" is
meant to suggest combining the colors of MCT arrangements with a white pigment
from quasi-white arrangements.)
Examples
major_triad <- c(0, 4, 7)
howfree(major_triad)
#> [1] 2
howfree(major_triad, ineqmat=make_white_ineqmat(3))
#> [1] 1
# Because it's now constrained to preserve its step of exactly 1/3 the octave.
just_major_triad <- j(1, 3, 5)
howfree(just_major_triad)
#> [1] 2
howfree(just_major_triad, ineqmat=make_white_ineqmat(3))
#> [1] 2
# Because this triad's major third isn't identical to 400 cents which equally
# divide the octave.
ait1 <- c(0, 1, 4, 6)
quantize_color(ait1, reconvert=TRUE)
#> [1] 0.000000 1.090909 4.363636 6.545455
# quantize_color() doesn't match (0146) exactly because it's only looking for
# any set in the same 3-dimensional color as 0146.
quantize_color(ait1, ineqmat=make_white_ineqmat(4), reconvert=TRUE)
#> [1] 0 1 4 6
# Now that it's constrained to respect ait1's minor third from 1 to 4, the set 0146
# is now the first satisfactory result that quantize_color() finds.