NEWS
musicMCT 0.4.0.9000
ineqsym() now returns the correct permutation matrix when involution=TRUE. Previously, the
involution parameter affected returned sets but not returned permutation matrices.
make_infrared_ineqmat() now defaults to TRUE rather than FALSE for its include_wraparound
argument.
- New
vl_signvector() is a wrapper for signvector() that interprets inputs as voice leadings
rather than scales.
- New
monochrome_vl() detects instances where the voice leading between two modes of a scale cannot be decomposed
by passing through some mode of a given contrasting scale.
- New vignette (mct_symmetries.Rmd) explains the use of
ineqsym() and related functions.
musicMCT 0.4.0 (2026-02-27)
New functions
- New
move_to_hyperplane() finds the point where a chosen line and hyperplane intersect.
- New
point_on_flat() generates a concrete point on any given flat of a hyperplane arrangement.
Updates to function ineqsym()
- The function can now return a permutation matrix rather than a scale, which it does if
set is NULL.
New parameter card goes along with this change: it is necessary to specify the size of the permutation
matrix if set is NULL.
- Default value of parameter
set is now NULL.
- Change to the way the parameter
a is interpreted. Essentially it is now the inverse (mod card) of the previous
implementation of a. The new method enhances consistency with other standards and with the
permutation-matrix view of the function.
- Changes to the internal logic of the function, emphasizing the role of permutation matrices in implementing
the symmetries of the space.
Bug fixes and minor functionality updates
- Fixes for
clampitt_q(), so that it gives correct results when set includes transpositionally symmetrical
subsets or doubled notes.
ianring() gains is_interactive parameter which allows explicit control over whether the function
opens a browser window (mainly to disable the browser during tests).
project_onto() now works for hyperplane arrangements that are not central, such as those from
make_roth_ineqmat() and make_rosy_ineqmat().
scale_palette() gains an ineqmat parameter, which improves completeness of results for arrangements
other than the modal color theory arrangement.
musicMCT 0.3.0 (2025-11-03)
brightness_comparisons() and brightnessgraph() gain a goal parameter that allows voice-leading brightness
relationships between different sets to be studied.
- New
clampitt_q() finds the sets that are "Q-related" to an input (Clampitt 1997, 2007).
colornum() now tries to automatically match a signvector list to the specified ineqmat when
the parameter signvector_list is NULL. (For instance, colornum(set, ineqmat="pastel") searches
the global environment for pastel_signvectors.)
- New
fpmod() allows for safer modulo division in contexts with octave equivalence.
- New
inter_vlsig() finds elementary voice leadings between sets of different Tn-types.
- New
make_infrared_ineqmat() adds a new family of hyperplane arrangements for studying voice leading.
minimize_vl() now returns better results when method="hamming" by allowing for voice crossings (#4).
primary_colornum() gains a signvector_list parameter to pass to colornum(), allowing it to work
properly for hyperplane arrangements other than the "modal color theory" arrangement.
- Parameter
n for tni() gains a default value of NULL, in which case the index n is chosen to
create the contextual inversion which keeps the first and last entries of set fixed.
vl_generators() now gives correct results for sets which fail optc_test().
vlsig() parameter index now defaults to NULL, returning a matrix of all elementary voice-leadings.
More flexible handling of OPTIC symmetries
- 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).
- Set theory functions including
tn(), tni(), startzero(), and so on gain an optic parameter, which allows the
user to specify the OPTIC symmetries to consider.
Anaglyph Arrangements
- New
make_anaglyph_ineqmat() allows construction of a new family of hyperplane arrangements
(anaglyph arrangements) which study voice leadings between sets of different set classes.
- New
anazero_fingerprint() provides granular information about the types of hyperplanes that a
pair of sets lie on in the anaglyph arrangement.
- New behavior for
howfree() and colornum() because anaglyph arrangements require special handling.
musicMCT 0.2.0 (2025-07-21)
New ineqmat features
- New
make_black_ineqmat() and make_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
when card is small.
- New data set
roth_ineqmats.rda with precomputed results from make_roth_ineqmat();
accessed with new get_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(),
and set_from_signvector().
- Upon failure, quantization functions now return a result whose format matches
expected success format depending on value of
reconvert parameter. That is,
if reconvert=TRUE, failure to quantize results in a NA vector (as before), but
if reconvert=FALSE, failure to quantize results in a list with entries set and
edo, both of which are NA.
- 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(), and dft().
Updates to Existing Functions
brightnessgraph() now returns an invisible copy of the igraph graph object
underlying the plotted brightness graph, instead of an invisible NULL.
sim() gains a goal parameter, which allows it to calculate the interscalar
interval matrix for two sets.
vl_generators() now throws a warning instead of an error when set is
perfectly even, returning a 2-by-0 matrix.
musicMCT 0.1.2 (2025-06-05)
- Updated writeSCL() to require user to enter a path.
- Updated vignette "Visualizing Higher Dimensions" to reset par() changes.
musicMCT 0.1.1
- Removed extraneous license file.
musicMCT 0.1.0