Skip to contents

Core MCT Functions

Essential tools for analyzing scale structures and the hyperplane arrangments of Modal Color Theory.

Scalar Properties

Gather information about individual scales

brightnessgraph()
Visualize brightness relationships among modes of a scale
colornum()
Reference numbers for scale structures
eps() delta() ratio()
The brightness ratio
howfree()
Count a scale's degrees of freedom
ineqsym()
Symmetries of hyperplane arrangements define equivalent scales
primary_hue() primary_colornum() primary_signvector() primary_color()
Primary colors
quantize_color()
Find a scale mod k that matches a given color
quantize_hue()
Find a scale mod k that matches a given hue
same_hue()
Do two scales lie on the same ray?
saturate()
Modify evenness without changing hue
scale_palette()
Orbit of a scale under symmetries of hyperplane arrangement
sim()
Scalar interval matrix
simplify_scale() best_simplification()
Best ways to regularize a scale

Hyperplane Arrangements

Define and manipulate the arrangements which characterize the spaces

get_relevant_rows()
Which hyperplanes affect a given generic interval?
ineqmats
Hyperplane arrangements for MCT spaces
make_roth_ineqmat() make_rosy_ineqmat()
Define hyperplanes for Rothenberg arrangements
make_white_ineqmat() make_pastel_ineqmat()
Define hyperplanes for quasi-white arrangements
makeineqmat() getineqmat()
Define hyperplanes for the Modal Color Theory arrangements
populate_flat()
Randomly generate scales on a flat
project_onto() match_flat()
Closest point on a given flat

Sign vectors

Work directly with the information contained in a sign vector

brightness_comparisons()
Voice-leading brightness relationships for a scale's modes
comparesignvecs()
Do two sign vectors represent adjacent colors?
set_from_signvector()
Create a scale from a sign vector
signvector()
Detect a scale's location relative to a hyperplane arrangement
step_signvector()
Specify a scale's step pattern with a sign vector
svzero_fingerprint()
Distinguish different types of interval equalities
whichsvzeroes() countsvzeroes()
Which interval-comparison equalities does a scale satisfy?

Other Properties

Tests for miscellaneous scalar properties that aren’t directly tied to MCT.

evenness()
How even is a scale?
isproper() has_contradiction() strictly_proper()
Rothenberg propriety
optc_test()
Does a scale lie in the canonical fundamental domain for OPTC symmetries?

Scales and Intervals

Basic tools for defining musical objects

carlos_step()
Define a step size for one of Wendy Carlos's scales
convert()
Convert between octave measurements
coord_to_edo() coord_from_edo()
Coordinate systems for scale representation
edoo()
Perfectly even scales (the color white)
j()
Convenient just-intonation intervals and scales
maxeven()
Maximally even scales
meantone_fifth()
Define a tempered fifth for various meantone scales
surround_set()
Random scales uniformly distributed on a hypersphere around an input
z()
Frequency ratios to logarithmic pitch intervals (e.g. semitones)

Set Theory

Concepts from traditional pitch-class set theory

emb() cover()
How many instances of a subset-type exist within a scale? How many scales embed a subset?
fortenum()
Forte number from set class
fortenums
Allen Forte's list of set classes
ifunc()
All intervals from one set to another
isym() isym_index() isym_degree()
Test for inversional symmetry
ivec()
Interval-class vector
primeform()
Prime form of a set using Rahn's algorithm
sc()
Set class from Forte's list
sc_comp()
Set class complement
signed_interval_class()
Ordered pitch-class interval represented as interval class with sign
tc()
Transpositional combination & pitch multiplication
tn() tni() startzero() charm()
Transposition and Inversion
tnprime()
Transposition class of a given pc-set
tsym() tsym_index() tsym_degree()
Test for transpositional symmetry
zmate()
Twin set in the Z-relation (Z mate)

Subsets

Tools for exploring subset-superset relationships in scales

intervalspectrum() spectrumcount()
Specific sizes corresponding to each generic interval
subset_multiplicities()
Count the multiplicities of a subset-type's varieties
subset_varieties()
Specific varieties of scalar subsets given a generic shape
subsetspectrum()
Subset varieties for all subsets of a fixed size

Utilities

Tools that make it convenient to manipulate objects in R

fpunique()
Unique real values up to some tolerance
rotate()
Circular rotation of an ordered tuple

Voice Leading

Tools for studying how sets are connected by voice leadings

flex_points()
Voice-leading inflection points
minimize_vl()
Smallest voice leading between two sets
tndists()
Distances between continuous transpositions of a set
vl_dist()
How far apart are two scales?
vl_generators()
Which transpositions give elementary voice leadings?
vl_rolodex()
Minimal voice leadings to all transpositions of some Tn-type mod k
vlsig()
Elementary voice leadings
whichmodebest()
Smallest crossing-free voice leading between two pitch-class sets

Word Theory

Concepts related to representations of scales as algebraic words

asword()
Algebraic word of a set's step sizes
isgwf()
Is a scale n-wise well formed?
iswellformed()
Well-formedness, Myhill's property, and/or moment of symmetry
realize_setword()
Define scale by entering its relative step sizes

Input/Output

Ways to read & save data for use outside of R

readSCL()
Import a Scala (.scl) file as a scale
writeSCL()
Create a Scala tuning file from a given scale