Skip to contents

musicMCT (development version)

  • New point_on_flat() generates a concrete point on any given flat of a hyperplane arrangement.
  • 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.
  • New move_to_hyerplane() finds the point where a chosen line and hyperplane intersect.

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 a parameter is interpreted. It now gives the results that would have come from entering the inverse of a (modulo card). 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.

musicMCT 0.3.0

CRAN release: 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

CRAN release: 2025-07-21

New ineqmat features

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

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

CRAN release: 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

  • Initial CRAN submission.