musicMCT (development version)
-
vl_generators()
now gives correct results for sets which failoptc_test()
-
minimize_vl()
now returns better results whenmethod="hamming"
by allowing for voice crossings (#4). -
brightness_comparisons()
andbrightnessgraph()
gain agoal
parameter that allows voice-leading brightness relationships between different sets to be studied. - New
fpmod()
allows for safer modulo division in contexts with octave equivalence. - New
clampitt_q()
finds the sets that are “Q-related” to an input (Clampitt 1997, 2007). -
vlsig()
parameterindex
now defaults toNULL
, returning a matrix of all elementary voice-leadings. - New
inter_vlsig()
finds elementary voice leadings between sets of different Tn-types. - Parameter
n
fortni()
gains a default value ofNULL
, in which case the indexn
is chosen to create the contextual inversion which keeps the first and last entries ofset
fixed. -
primary_colornum()
gains asignvector_list
parameter to pass tocolornum()
, allowing it to work properly for hyperplane arrangements other than the “modal color theory” arrangement. - New
make_infrared_ineqmat()
adds a new family of hyperplane arrangements for studying voice leading.
More flexible handling of OPTIC symmetries
- Set theory functions including
tn()
,tni()
,startzero()
, and so on gain anoptic
parameter, which allows the user to specify the OPTIC symmetries to consider. - New
normal_form()
calculates the normal form of a set under any combination of OPTIC symmetries, following the algorithm described by Hook (2023, 416-8).
musicMCT 0.2.0
CRAN release: 2025-07-21
New ineqmat features
- New
make_black_ineqmat()
andmake_gray_ineqmat()
allow new transposition-sensitive hyperplane arrangements to be studied; ineqmat parameter for other functions (e.g.signvector()
now accepts “black” and “gray” as options. - New
make_offset_ineqmat()
creates version of standard ineqmats (MCT, white, black, etc.) which have been translated to be centered on an arbitrary set. - Creation functions for ineqmats (
makeineqmat()
,make_black_ineqmat()
,make_white_ineqmat()
,make_roth_ineqmat()
) now return a consistent value (integer(0)
) rather than various errors whencard
is small. - New data set
roth_ineqmats.rda
with precomputed results frommake_roth_ineqmat()
; accessed with newget_roth_ineqmat()
. - New data sets for pastel and white arrangements (for cardinalities <= 6) uploaded to modalcolortheory repository and linked in the documentation for
make_white_ineqmat()
.
New behaviors for quantization functions
- Affected functions are
quantize_color()
,quantize_hue()
, andset_from_signvector()
. - Upon failure, quantization functions now return a result whose format matches expected success format depending on value of
reconvert
parameter. That is, ifreconvert=TRUE
, failure to quantize results in aNA
vector (as before), but ifreconvert=FALSE
, failure to quantize results in a list with entriesset
andedo
, both of which areNA
. - Quantization functions gain a
target_edo
parameter, which allows user to search for desired scales in a specific edo rather than all possible edos.
New Functions
- New
clockface()
offers a simple plotting mechanism to visualize sets on a pitch-class clockface (with numbers corresponding to any equal temperament). - New
ianring()
creates a convenient way to open a browser window to information about the input set on Ian Ring’s website The Exciting Universe of Music Theory. - New functions for basic applications of the DFT to set theory are added. These include
set_to_distribution()
,distribution_to_set()
, anddft()
.
Updates to Existing Functions
-
brightnessgraph()
now returns an invisible copy of the igraph graph object underlying the plotted brightness graph, instead of an invisibleNULL
. -
sim()
gains agoal
parameter, which allows it to calculate the interscalar interval matrix for two sets. -
vl_generators()
now throws a warning instead of an error whenset
is perfectly even, returning a 2-by-0 matrix.