Package: musicMCT 0.5.0.9000

musicMCT: Analyze the Structure of Musical Scales

Analysis of musical scales (& modes, grooves, etc.) in the vein of Sherrill 2025 <doi:10.1215/00222909-11595194>. The initials MCT in the package title refer to the article's title: "Modal Color Theory." Offers support for conventional musical pitch class set theory as developed by Forte (1973, ISBN: 9780300016109) and David Lewin (1987, ISBN: 9780300034936), as well as for the continuous geometries of Callender, Quinn, & Tymoczko (2008) <doi:10.1126/science.1153021>. Identifies structural properties of scales and calculates derived values (sign vector, color number, brightness ratio, etc.). Creates plots such as "brightness graphs" which visualize these properties.

Authors:Paul Sherrill [aut, cre, cph]

musicMCT_0.5.0.9000.tar.gz
musicMCT_0.5.0.9000.zip(r-4.7)musicMCT_0.5.0.9000.zip(r-4.6)musicMCT_0.5.0.9000.zip(r-4.5)
musicMCT_0.5.0.9000.tgz(r-4.6-any)musicMCT_0.5.0.9000.tgz(r-4.5-any)
musicMCT_0.5.0.9000.tar.gz(r-4.7-any)musicMCT_0.5.0.9000.tar.gz(r-4.6-any)
musicMCT_0.5.0.9000.tgz(r-4.6-emscripten)
manual.pdf |manual.html
DESCRIPTION |NEWS
card.svg |card.png
musicMCT/json (API)

# Install 'musicMCT' in R:
install.packages('musicMCT', repos = c('https://satbq.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/satbq/musicmct/issues

Pkgdown/docs site:https://satbq.github.io

Datasets:
  • fortenums - Allen Forte's list of set classes
  • ineqmats - Hyperplane arrangements for MCT spaces
  • roth_ineqmats - Hyperplane arrangements for Rothenberg arrangements

On CRAN:

Conda:

6.35 score 3 stars 16 scripts 266 downloads 117 exports 12 dependencies

Last updated from:ca539424d3. Checks:9 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-devel-x86_64OK157
source / vignettesOK250
linux-release-x86_64OK242
macos-release-arm64OK94
macos-oldrel-arm64OK118
windows-develOK114
windows-releaseOK124
windows-oldrelOK117
wasm-releaseOK124

Exports:anazero_fingerprintaswordbest_simplificationbrightness_comparisonsbrightnessgraphcarlos_stepcharmclampitt_qclockfacecolornumcomparesignvecsconvertcoord_from_edocoord_to_edocountsvzeroescoverd2sdeltadftdistribution_to_setedooembepsevennessflex_pointsfortenumfpmodfpuniqueget_relevant_rowsget_roth_ineqmatgetineqmathas_contradictionhowfreeianringifuncineqsyminter_vlsigintervalspectrumisgwfisproperiswellformedisymisym_degreeisym_indexivecjmake_anaglyph_ineqmatmake_black_ineqmatmake_gray_ineqmatmake_infrared_ineqmatmake_offset_ineqmatmake_pastel_ineqmatmake_rosy_ineqmatmake_roth_ineqmatmake_white_ineqmatmakeineqmatmatch_flatmaxevenmeantone_fifthminimize_vlmonochrome_vlmove_to_hyperplanenormal_formoptc_testpoint_on_flatpopulate_flatprimary_colorprimary_colornumprimary_hueprimary_signvectorprimeformproject_ontoquantize_colorquantize_hueratioreadSCLrealize_stepwordrotates2dsame_huesaturatescsc_compscale_paletteset_from_signvectorset_to_distributionsigned_interval_classsignvectorsimsimplify_scalespectrumcountstartzerostep_signvectorstrictly_propersubset_multiplicitiessubset_varietiessubsetspectrumsurround_setsvzero_fingerprinttctntndiststnitnprimetsymtsym_degreetsym_indexvl_distvl_generatorsvl_rolodexvl_signvectorvlsigwhichmodebestwhichsvzeroeswriteSCLzzmate

Dependencies:clicpp11glueigraphlatticelifecyclemagrittrMatrixpkgconfigpracmarlangvctrs

Symmetries of Hyperplane Arrangements and ineqsym()
Introduction | 1.2: Scales, intervals, etc. | 1.3: Hyperplane arrangements | 2: Symmetries of MCT Arrangements | 3: Orbits as equivalence classes of scale structure | 3.1: Brightness Graphs | 3.2: Well-Formedness | Orbits are called "Scale Palettes" | 4: Symmetrical Scales | Looking for symmetries of a set | Postscript on $M_5$ and $M_7$

Last update: 2026-06-24
Started: 2026-05-07

Introduction to musicMCT
Introduction | How acoustic is the "acoustic scale"? | 1. Introducing the main characters | 2. A few supporting characters | 3. But what about scale structure? | 4. Looking for better approximations outside of 12edo | 5. A tempered conclusion | Coda: Brightness graphs

Last update: 2026-05-10
Started: 2025-04-05

Visualizing Higher Dimensions
Introduction | Seven Notes, Tetrachords, and Two Dimensions | Defining the Spaces | Familiar Scales as Landmarks | Visualize all the colors | Optimizing evenness on the "double harmonic" flat | Smoother Images | Familiar Ground | Other Properties | A Caveat | Conclusion

Last update: 2025-11-28
Started: 2025-04-07

Readme and manuals

Help Manual

Help pageTopics
Are regularities within or between sets in a pair?anazero_fingerprint
Algebraic word of a set's step sizesasword
Voice-leading brightness relationships for a scale's modesbrightness_comparisons
Visualize brightness relationships among modes of a scalebrightnessgraph
Define a step size for one of Wendy Carlos's scalescarlos_step
Voice leadings between inversions with maximal common tonesclampitt_q
Visualize a set in pitch-class spaceclockface
Reference numbers for scale structurescolornum
Do two sign vectors represent adjacent colors?comparesignvecs
Convert between octave measurementsconvert
Coordinate systems for scale representationcoord_from_edo coord_to_edo
The musical Discrete Fourier Transform of a pitch-class setdft
Perfectly even scales (the color white)edoo
How many instances of a subset-type exist within a scale? How many scales embed a subset?cover emb
The brightness ratiodelta eps ratio
How even is a scale?evenness
Voice-leading inflection pointsflex_points
Forte number from set classfortenum
Allen Forte's list of set classesfortenums
Modulo division with roundingfpmod
Unique real values up to some tolerancefpunique
Which hyperplanes affect a given generic interval?get_relevant_rows
Count a scale's degrees of freedomhowfree
Look up a scale at Ian Ring's _Exciting Universe of Music Theory_ianring
All intervals from one set to anotherifunc
Hyperplane arrangements for MCT spacesineqmats
Symmetries of hyperplane arrangements define equivalent scalesineqsym
Specific sizes corresponding to each generic intervalintervalspectrum spectrumcount
Is a scale n-wise well formed?isgwf
Rothenberg proprietyhas_contradiction isproper strictly_proper
Well-formedness, Myhill's property, and/or moment of symmetryiswellformed
Test for inversional symmetryisym isym_degree isym_index
Interval-class vectorivec
Convenient just-intonation intervals and scalesj
Define hyperplanes for cross-type voice leadingsmake_anaglyph_ineqmat
Define hyperplanes for transposition-sensitive arrangementsmake_black_ineqmat make_gray_ineqmat
Define hyperplanes for infrared arrangementsmake_infrared_ineqmat
Translate a hyperplane arrangement to a new centermake_offset_ineqmat
Define hyperplanes for Rothenberg arrangementsget_roth_ineqmat make_rosy_ineqmat make_roth_ineqmat
Define hyperplanes for white arrangementsmake_pastel_ineqmat make_white_ineqmat
Define hyperplanes for the Modal Color Theory arrangementsgetineqmat makeineqmat
Maximally even scalesmaxeven
Define a tempered fifth for various meantone scalesmeantone_fifth
Smallest voice leading between two setsminimize_vl
Which voice leadings are irreducible?monochrome_vl
Intersection of a line with a hyperplanemove_to_hyperplane
Hook's OPTIC normal formsnormal_form
Does a scale lie in the canonical fundamental domain for OPTC symmetries?optc_test
Generate one point on arbitrary combination of hyperplanespoint_on_flat
Randomly generate scales on a flatpopulate_flat
Primary colorsprimary_color primary_colornum primary_hue primary_signvector
Prime form of a set using Rahn's algorithmprimeform
Closest point on a given flatmatch_flat project_onto
Find a scale mod k that matches a given colorquantize_color
Find a scale mod k that matches a given huequantize_hue
Import a Scala (.scl) file as a scalereadSCL
Define scale by entering its relative step sizesrealize_stepword
Circular rotation of an ordered tuplerotate
Hyperplane arrangements for Rothenberg arrangementsroth_ineqmats
Do two scales lie on the same ray?same_hue
Modify evenness without changing huesaturate
Set class from Forte's listsc
Set class complementsc_comp
Orbit of a scale under symmetries of hyperplane arrangementscale_palette
Create a scale from a sign vectorset_from_signvector
Convert between pitch-class sets and distributionsd2s distribution_to_set s2d set_to_distribution
Ordered pitch-class interval represented as interval class with signsigned_interval_class
Detect a scale's location relative to a hyperplane arrangementsignvector vl_signvector
Scalar (and interscalar) interval matrixsim
Best ways to regularize a scalebest_simplification simplify_scale
Specify a scale's step pattern with a sign vectorstep_signvector
Count the multiplicities of a subset-type's varietiessubset_multiplicities
Specific varieties of scalar subsets given a generic shapesubset_varieties
Subset varieties for all subsets of a fixed sizesubsetspectrum
Random scales uniformly distributed on a hypersphere around an inputsurround_set
Distinguish different types of interval equalitiessvzero_fingerprint
Transpositional combination & pitch multiplicationtc
Transposition and Inversioncharm startzero tn tni
Distances between continuous transpositions of a settndists
Transposition class of a given pc-settnprime
Test for transpositional symmetrytsym tsym_degree tsym_index
How far apart are two scales?vl_dist
Which transpositions give elementary voice leadings?vl_generators
Minimal voice leadings to all transpositions of some Tn-type mod kvl_rolodex
Elementary voice leadingsinter_vlsig vlsig
Smallest crossing-free voice leading between two pitch-class setswhichmodebest
Which interval-comparison equalities does a scale satisfy?countsvzeroes whichsvzeroes
Create a Scala tuning file from a given scalewriteSCL
Frequency ratios to logarithmic pitch intervals (e.g. semitones)z
Twin set in the Z-relation (Z mate)zmate