Some scalar structures can vary their specific pitches much more flexibly than others while retaining the same overall "color." For instance, the meantone family of diatonic scales is generated by a line of fifths and can only vary along one dimension: the size of the generating fifth. This literally defines a line in the MCT geometry, and if the scale moves off that line it ceases to have the same structure as the diatonic scale. (Notably, it stops being non-degenerate well-formed.) By contrast, the 5-limit just diatonic scale is defined by two distinct parameters: the size of its major third and the size of its perfect fifth. See "Modal Color Theory," pp. 26-27, for more discussion.
Arguments
- set
Numeric vector of pitch-classes in the set
- 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.
Details
The returned value is "essentialized," i.e. calculated by factoring out
degrees of freedom that are universal to the given hyperplane arrangement.
For instance, the set (0, 4, 8) has absolutely no room for variation in
the black arrangement, as none of its pitches can move at all. Unsurprisingly,
howfree(c(0, 4, 8), ineqmat="black") returns 0. But if we use the
modal color theory arrangement, i.e. howfree(c(0, 4, 8), ineqmat="mct"),
the result is still 0 even though for this arrangement we could transpose
the augmented triad to start on any pitch without altering its scalar structure.
For the MCT arrangement, chromatic transposition offers a degree of freedom
that is essentially invisible to the arrangement, so howfree() doesn't
report it in the value it returns for that arrangement. Similarly, the
anaglyph arrangements (see make_anaglyph_ineqmat()) factor out transposition
of each set individually, so howfree(..., inemqat="anaglyph") ignores two
degrees of freedom.
Examples
c_natural_minor <- c(0, 2, 3, 5, 7, 8, 10)
c_melodic_minor <- c(0, 2, 3, 5, 7, 9, 11)
just_diatonic <- j(dia)
howfree(c_natural_minor)
#> [1] 1
howfree(c_melodic_minor)
#> [1] 1
howfree(just_diatonic)
#> [1] 2
howfree(c(0, 4, 7))
#> [1] 2
howfree(c(0, 4, 7), ineqmat="white")
#> [1] 1
howfree(c(0, 2, 6), ineqmat="mct")
#> [1] 2
howfree(c(0, 2, 6), ineqmat="roth")
#> [1] 1
