music21-rs

Crate report

commit 94ed57a / music21 11.0.0b12 from float3/music21 5151b5189 / Python 3.13.16 / Linux-6.17.0-1022-azure-x86_64-with-glibc2.39

music21 API ported 82.4% 1348 of 1635 members; 287 to port, 0 undecided
Line coverage 92.4% 82743 of 89579 lines
Own tests 1519 passing, across 3 suites Median speedup 68.0× over music21 with no Python in the way, across 24 operations Beyond music21 1235 public members music21 has nothing for, in 97 modules Source size 8.2 MB what cargo publishes music21's examples 79.5% 9191 of 11558 examples, across 47 modules
music21's docstrings 86.9% 1032 of 1188 docstrings, across 47 modules
music21's unit tests 100.0% 666 of 666 tests, across 47 modules
music21's own suite 0 regressions 5155 passing; the 0 failing are music21's own or listed

The suites that test the crate

6674 passing, all green

SuiteTestsResultPassedFailedCommand
Workspace crate passed 1185 0 cargo test --workspace --all-targets
Workspace doctests crate passed 177 0 cargo test --workspace --doc
Python parity and music21's doctests cratewheel passed 157 0 cargo test --manifest-path python-parity/Cargo.toml -- --test-threads=1
music21's own test suiteRun twice, once on music21 and once on the crate, and diffed: music21's own suite fails a number of its own tests in any environment, so what counts is that the two sets match.0 of these fail on music21 itself; 0 fail only under music21_rs cratewheel passed 5155 0 cargo run --release -p xtask --features python -- music21-suite

A suite whose tooling is not installed is skipped, with the reason, rather than failed. One marked for both runs music21's code over the wheel's classes, which answer out of the crate, so a failure there may be either's.

Test coverage

of music21-rs, across every instrumented suite

Lines
92.4%82743 of 89579, 6836 not reached
Functions
93.6%10295 of 11000, 705 not reached
Regions
90.6%100892 of 111388, 10496 not reached

Coverage is not a run of its own: the suites are run instrumented and the profiles merged. The workspace tests, their rustdoc examples and the parity suite reach it, music21's own suite among them, run against the crate linked into the parity suite; whatever goes through the installed wheel does not. Generated tables and the tooling crates are excluded. Read it file by file →

Speed and size against music21

crate 68.0× median, across 24 cases

Casemusic21cratecrate ×
construction
Pitch('C#4')1.5 µs123 ns12.3×
Note('C#4')7.0 µs134 ns52.2×
Interval('P5')15.0 µs74 ns202.7×
Chord('C4 E4 G4')28.2 µs666 ns42.4×
chord analysis
Chord.commonName5 chords893.1 µs9.0 µs99.1×
Chord.root()5 chords194.8 µs——
Chord.inversion()5 chords291.0 µs3.9 µs74.1×
Chord.forteClass5 chords418.7 µs6.1 µs68.4×
Chord.primeForm5 chords421.3 µs6.8 µs61.8×
Chord.intervalVector5 chords421.1 µs7.2 µs58.2×
Chord.isDominantSeventh()5 chords412.9 µs4.4 µs93.7×
Chord.orderedPitchClasses5 chords184.2 µs4.9 µs37.7×
Chord: forteClass + primeForm + intervalVectorone chord, three questions93.7 µs3.0 µs31.2×
pitch
Pitch.transpose('M3')41.9 µs378 ns110.9×
Pitch.frequency1.4 µs305 ns4.7×
Pitch.getEnharmonic()33.8 µs——
Interval(p1, p2)16.6 µs295 ns56.2×
serial
pcToToneRow(...).matrix()4.2 ms5.4 µs772.5×
ToneRow.zeroCenteredTransformation408.6 µs496 ns824.3×
figured bass
Segment(G2, '7').allCorrectSinglePossibilities()4.4 ms53.3 µs82.1×
Segment(G2, '7') to Segment(C3), a dominant seventh resolving17.2 ms259.4 µs66.3×
Segment(C3) to Segment(D3, '4,3'), every pair of voicings6.2 ms90.5 µs68.0×
warm object
Chord.commonName (cached)music21 memoizes120 ns——
Chord.forteClass (cached)music21 memoizes2.3 µs——

music21 11.0.0b12, Python 3.13.16 (Linux-6.17.0-1022-azure-x86_64-with-glibc2.39). Every side must agree on the answer before any of them is timed. wheel is what a caller installs, asked through the same Python API as music21; crate is the same operation in Rust with no Python in the way, and binding is what lies between the two. Each case builds a fresh object, except those marked cached.

3927 of music21's own tests, timed on every side102s on music21, 97s on music21-rs, 98s on music21-rs-wheel; music21-rs median 1.00×

Testmusic21music21-rsmusic21-rs ×
furthest ahead
timeSignatureToMidiEvents (music21.midi.translate)404 ms3 ms135.44×
findTransformedHistorical (music21.serial.TwelveToneRow)92 ms1 ms77.87×
isTranspositionallySymmetrical (music21.chord.Chord)108 ms3 ms38.44×
testFigureFromChordAddOmit (music21.harmony.Test.testFigureFromChordAddOmit)100 ms3 ms33.97×
fromIntervalVector (music21.chord)59 ms2 ms26.96×
getZRelation (music21.chord.Chord)56 ms2 ms25.76×
findHistorical (music21.serial.TwelveToneRow)31 ms1 ms25.25×
testOctaveRepeatingScaleStepsReachingAnEnharmonicOctave (music21.scale.test_scale_main.Test.testOctaveRepeatingScaleStepsReachingAnEnharmonicOctave)68 ms3 ms24.18×
fromForteClass (music21.chord)39 ms2 ms21.54×
simplifyMultipleEnharmonics (music21.pitch)38 ms2 ms18.73×
testMelodicMinorB (music21.scale.test_scale_main.Test.testMelodicMinorB)40 ms2 ms18.59×
TranspositionChecker (music21.analysis.transposition)38 ms2 ms15.47×
furthest behind
testARFFNumericClassValues (music21.features.outputFormats.Test.testARFFNumericClassValues)17 ms1.99 s0.01×
testIncludeClassLabelAndId (music21.features.outputFormats.Test.testIncludeClassLabelAndId)30 ms2.00 s0.01×
testParallelRun (music21.features.base.Test.testParallelRun)334 ms2.31 s0.14×
testIncludeFlagsOff (music21.features.base.Test.testIncludeFlagsOff)445 ms2.39 s0.19×
test_makeBeams__paddingRight (music21.stream.tests.Test.test_makeBeams__paddingRight)2 ms10 ms0.23×
SaxophoneFractionFeature (music21.features.jSymbolic)4 ms13 ms0.32×
setMinorRootParse (music21.romanText.translate.PartTranslator)3 ms8 ms0.34×
populateFromSortedList (music21.tree.core.AVLTree)3 ms7 ms0.42×
test_example04_4 (music21.braille.test.Test.test_example04_4)6 ms14 ms0.44×
testCoreUnit2 (music21.mei.test_base.Test.testCoreUnit2)5 ms12 ms0.44×
quarterConversion (music21.duration)17 ms36 ms0.47×
testTextExpressionsD (music21.musicxml.test_xmlToM21.Test.testTextExpressionsD)12 ms23 ms0.51×

A test counts only where every side ran it, passed it, and took longer than a millisecond, and what the garbage collector took inside a test is taken off before the sides are compared — a full collection lands on whichever test is running, and each test is timed once. music21-rs is the crate linked into the binary that ran the suite — the working tree — and music21-rs-wheel is the wheel a caller installs, so what lies between those two is the packaging rather than the code. All 3927 tests, side by side →

What each costs to install

music21
88.3 MBinstalled package, corpus and all
music21-rs
8.2 MBthe source cargo publishes

Against music21's own tests

9191 of 11558 examples and 666 of 666 unit tests, across 47 modules, 7 with no harness yet

ModuleDocstringsExamplesUnit tests
music21.stream.baseno harness yet
0 of 144
0 of 2278
271 of 271
music21.chord
108 of 108
981 of 981
31 of 31
music21.pitch
84 of 84
934 of 934
38 of 38
music21.interval
107 of 107
771 of 771
14 of 14
music21.duration
53 of 53
588 of 588
16 of 16
music21.roman
34 of 34
560 of 560
34 of 34
music21.voiceLeading
61 of 61
515 of 515
2 of 2
music21.meter.base
34 of 34
387 of 387
22 of 22
music21.meter.core
39 of 39
386 of 386
none
music21.harmony
26 of 26
364 of 364
28 of 28
music21.expressions
40 of 40
350 of 350
12 of 12
music21.scale
62 of 62
344 of 344
58 of 58
music21.note
33 of 33
341 of 341
13 of 13
music21.key
18 of 18
245 of 245
7 of 7
music21.figuredBass.possibility
16 of 16
211 of 211
none
music21.tempo
27 of 27
196 of 196
17 of 17
music21.figuredBass.resolution
13 of 13
172 of 172
none
music21.clef
29 of 29
151 of 151
4 of 4
music21.instrument
15 of 15
150 of 150
12 of 12
music21.serial
22 of 22
149 of 149
6 of 6
music21.figuredBass.notation
12 of 12
129 of 129
3 of 3
music21.analysis.discrete
25 of 25
122 of 122
7 of 7
music21.figuredBass.segment
12 of 12
122 of 122
none
music21.beam
13 of 13
112 of 112
2 of 2
music21.analysis.neoRiemannian
13 of 13
107 of 107
6 of 6
music21.sieve
25 of 25
107 of 107
9 of 9
music21.articulations
27 of 27
105 of 105
2 of 2
music21.figuredBass.checker
12 of 12
102 of 102
none
music21.figuredBass.realizer
8 of 8
80 of 80
3 of 3
music21.figuredBass.examples
11 of 11
71 of 71
none
music21.chord.tables
10 of 10
65 of 65
5 of 5
music21.scale.scala
7 of 7
55 of 55
5 of 5
music21.dynamics
6 of 6
49 of 49
6 of 6
music21.volume
9 of 9
46 of 46
9 of 9
music21.analysis.windowedno harness yet
0 of 3
0 of 35
5 of 5
music21.analysis.transposition
7 of 7
28 of 28
7 of 7
music21.figuredBass.realizerScale
4 of 4
26 of 26
none
music21.figuredBass.harmony
4 of 4
24 of 24
none
music21.analysis.harmonicFunction
2 of 2
22 of 22
4 of 4
music21.analysis.floatingKeyno harness yet
0 of 2
0 of 14
1 of 1
music21.analysis.patelno harness yet
0 of 2
0 of 14
none
music21.analysis.metricalno harness yet
0 of 2
0 of 13
none
music21.tie
2 of 2
13 of 13
1 of 1
music21.analysis.pitchAnalysisno harness yet
0 of 1
0 of 7
none
music21.analysis.enharmonics
1 of 1
6 of 6
4 of 4
music21.analysis.segmentByRestsno harness yet
0 of 2
0 of 6
2 of 2
music21.figuredBass.rules
1 of 1
5 of 5
none
every module
1032 of 1188
9191 of 11558
666 of 666

music21's own docstrings and unit tests, run over the wheel's classes answering out of the crate, so a row here is a row for both. A docstring passes only when every one of its examples does. Every docstring is read as music21's own runner reads it, which rewrites an object's address to 0x... before comparing; the unit-test column is music21's own test suite, attributed per module, where a test music21 itself fails counts as not passing.

Ported from music21

1635 members:1348 in the crate

189 classes
▶Chordchord/__init__.py crate 97 of 97

Chord analysis and the notation its notes carry. The per-note getters and setters music21 deprecated in v11 are the note's own methods here, reached through notes_mut.

music21Cratemusic21-rs
formatVectorStringportedformat_vector_string
addportedadd
annotateIntervalsportedannotate_intervals
areZRelationsportedare_z_relations
bassportedbass
canBeDominantVportedcan_be_dominant_v
canBeTonicportedcan_be_tonic
closedPositionportedclosed_position
containsSeventhportedcontains_seventh
containsTriadportedcontains_triad
geometricNormalFormportedgeometric_normal_form
getChordStepportedchord_step
getColorportedcolor
getNoteheadportednotehead
getNoteheadFillportednotehead_fill
getStemDirectionportedstem_direction
getTieportedtie
getVolumeportedvolume
getZRelationportedz_relation
hasAnyEnharmonicSpelledPitchesportedhas_any_enharmonic_spelled_pitches
hasAnyRepeatedDiatonicNoteportedhas_any_repeated_diatonic_note
hasRepeatedChordStepportedhas_repeated_chord_step
intervalFromChordStepportedinterval_from_chord_step
inversionportedinversion
setInversionportedset_inversion
inversionNameportedinversion_name
inversionTextportedinversion_text
isAugmentedSixthportedis_augmented_sixth
isAugmentedTriadportedis_augmented_triad
isConsonantportedis_consonant
isDiminishedSeventhportedis_diminished_seventh
isSeventhOfTypeportedis_seventh_of_type
isDiminishedTriadportedis_diminished_triad
isDominantSeventhportedis_dominant_seventh
isFalseDiminishedSeventhportedis_false_diminished_seventh
isFrenchAugmentedSixthportedis_french_augmented_sixth
isGermanAugmentedSixthportedis_german_augmented_sixth
isHalfDiminishedSeventhportedis_half_diminished_seventh
isIncompleteMajorTriadportedis_incomplete_major_triad
isIncompleteMinorTriadportedis_incomplete_minor_triad
isItalianAugmentedSixthportedis_italian_augmented_sixth
isMajorTriadportedis_major_triad
isMinorTriadportedis_minor_triad
isTranspositionallySymmetricalportedis_transpositionally_symmetrical
isSeventhportedis_seventh
isNinthportedis_ninth
isSwissAugmentedSixthportedis_swiss_augmented_sixth
isTriadportedis_triad
removeRedundantPitchesportedremove_redundant_pitches
removeRedundantPitchClassesportedremove_redundant_pitch_classes
removeRedundantPitchNamesportedremove_redundant_pitch_names
rootportedroot
semiClosedPositionportedsemi_closed_position
semitonesFromChordStepportedsemitones_from_chord_step
setColorportedset_color
setNoteheadportedset_notehead
setNoteheadFillportedset_notehead_fill
setStemDirectionportedset_stem_direction
setTieportedset_tie
setVolumeportedset_volume
simplifyEnharmonicsportedsimplify_enharmonics
isSortedDiatonicAscendingportedis_sorted_diatonic_ascending
sortAscendingportedsort_ascending
sortChromaticAscendingportedsort_chromatic_ascending
sortDiatonicAscendingportedsort_diatonic_ascending
sortFrequencyAscendingportedsort_frequency_ascending
transposeportedtranspose
chordTablesAddressportedchord_tables_address_entry
commonNameportedcommon_name
durationportedduration
fifthportedfifth
forteClassportedforte_class
forteClassNumberportedforte_class_number
forteClassTnportedforte_class_tn
forteClassTnIportedforte_class_tni
fullNameportedfull_name
hasZRelationportedhas_z_relation
intervalVectorportedinterval_class_vector
intervalVectorStringportedinterval_vector_string
isPrimeFormInversionportedis_prime_form_inversion
multisetCardinalityportedmultiset_cardinality
notesportednotes
normalOrderportednormal_order
normalOrderStringportednormal_order_string
orderedPitchClassesportedpitch_classes
orderedPitchClassesStringportedordered_pitch_classes_string
pitchClassCardinalityportedpitch_class_cardinality
pitchClassesportednote_pitch_classes
pitchNamesportedpitch_names
pitchedCommonNameportedpitched_common_name
pitchesportedpitches
primeFormportedprime_form
primeFormStringportedprime_form_string
qualityportedquality
scaleDegreesportedscale_degrees
seventhportedseventh
thirdportedthird
▶Pitchpitch.py crate 43 of 45
2 to port
music21Cratemusic21-rs
groupsmissingthe group names music21 picks elements out of a stream by (getElementsByGroup); a stream here picks by kind and by position, and nothing in it carries group names
informClientmissingobserver callback for a containing note; there is none
accidentalportedaccidental
microtoneportedmicrotone
isTwelveToneportedis_twelve_tone
getCentShiftFromMidiportedcent_shift_from_midi
alterportedalter
convertQuarterTonesToMicrotonesportedconvert_quarter_tones_to_microtones
convertMicrotonesToQuarterTonesportedconvert_microtones_to_quarter_tones
psportedps
midiportedmidi
nameportedname
unicodeNameportedunicode_name
nameWithOctaveportedname_with_octave
unicodeNameWithOctaveportedunicode_name_with_octave
fullNameportedfull_name
stepportedstep
pitchClassportedpitch_class
pitchClassStringportedpitch_class_string
octaveportedoctave
octaveIsImplicitportedoctave_is_implicit
implicitOctaveportedimplicit_octave
germanportedgerman
italianporteditalian
spanishportedspanish
frenchportedfrench
frequencyportedfrequency_hz
freq440portedfrequency_hz
getHarmonicportedharmonic
harmonicFromFundamentalportedharmonic_from_fundamental
harmonicStringportedharmonic_string
harmonicAndFundamentalFromPitchportedharmonic_and_fundamental_from_pitch
harmonicAndFundamentalStringFromPitchportedharmonic_and_fundamental_string_from_pitch
isEnharmonicportedis_enharmonic
getHigherEnharmonicportedget_higher_enharmonic
getLowerEnharmonicportedget_lower_enharmonic
simplifyEnharmonicportedsimplify_enharmonic
getEnharmonicportedget_enharmonic
getAllCommonEnharmonicsportedall_common_enharmonics
diatonicNoteNumporteddiatonic_note_number
transposeportedtranspose
transposeBelowTargetportedtranspose_below_target
transposeAboveTargetportedtranspose_above_target
updateAccidentalDisplayportedupdate_accidental_display
getStringHarmonicportedstring_harmonic
▶Accidentalpitch.py crate 12 of 12
music21Cratemusic21-rs
listNamesportedlist_names
setportedset
isTwelveToneportedis_twelve_tone
setAttributeIndependentlyportedset_attribute_independently
inheritDisplayportedinherit_display
nameportedname
alterportedalter
modifierportedmodifier
displayTypeporteddisplay_type
displayStatusporteddisplay_status
unicodeportedunicode
fullNameportedfull_name
▶Microtonepitch.py crate 3 of 3
music21Cratemusic21-rs
alterportedalter
centsportedcents
harmonicShiftportedharmonic_shift
▶Intervalinterval.py crate 29 of 29
music21Cratemusic21-rs
genericportedgeneric
nameportedshort_name
niceNameportedname
simpleNameportedsimple_name
simpleNiceNameportedsimple_nice_name
semiSimpleNameportedsemi_simple_name
semiSimpleNiceNameportedsemi_simple_nice_name
directedNameporteddirected_name
directedNiceNameporteddirected_nice_name
directedSimpleNameporteddirected_simple_name
directedSimpleNiceNameporteddirected_simple_nice_name
semitonesportedsemitones
directionporteddirection
specifierportedspecifier
specificNameportedspecific_name
isDiatonicStepportedis_diatonic_step
isChromaticStepportedis_chromatic_step
isStepportedis_step
isSkipportedis_skip
isConsonantportedis_consonant
complementportedcomplement
intervalClassportedinterval_class
centsportedcents
transposePitchportedtranspose_pitch
reverseportedreversed
pitchStartportedpitch_start
pitchEndportedpitch_end
noteStartportednote_start
noteEndportednote_end
▶GenericIntervalinterval.py crate 26 of 26
music21Cratemusic21-rs
valueportedvalue
directedporteddirected
undirectedportedundirected
directionporteddirection
isSkipportedis_skip
isDiatonicStepportedis_diatonic_step
isStepportedis_step
isUnisonportedis_unison
simpleUndirectedportedsimple_undirected
semiSimpleUndirectedportedsemi_simple_undirected
undirectedOctavesportedundirected_octaves
octavesportedoctaves
simpleDirectedportedsimple_directed
semiSimpleDirectedportedsemi_simple_directed
perfectableportedis_perfectable
niceNameportednice_name
simpleNiceNameportedsimple_nice_name
semiSimpleNiceNameportedsemi_simple_nice_name
staffDistanceportedstaff_distance
mod7inversionportedmod7_inversion
mod7portedmod7
complementportedcomplement
reverseportedreverse
transposePitchportedtranspose_pitch
transposePitchKeyAwareportedtranspose_pitch_key_aware
getDiatonicportedget_diatonic
▶DiatonicIntervalinterval.py crate 25 of 25
music21Cratemusic21-rs
nameportedname
niceNameportednice_name
specificNameportedspecific_name
simpleNameportedsimple_name
simpleNiceNameportedsimple_nice_name
semiSimpleNameportedsemi_simple_name
semiSimpleNiceNameportedsemi_simple_nice_name
directionporteddirection
directedNameporteddirected_name
directedNiceNameporteddirected_nice_name
directedSimpleNameporteddirected_simple_name
directedSimpleNiceNameporteddirected_simple_nice_name
directedSemiSimpleNameporteddirected_semi_simple_name
directedSemiSimpleNiceNameporteddirected_semi_simple_nice_name
isStepportedis_step
isDiatonicStepportedis_diatonic_step
isSkipportedis_skip
perfectableportedis_perfectable
mod7inversionportedmod7_inversion
mod7portedmod7
reverseportedreverse
getChromaticportedget_chromatic
transposePitchportedtranspose_pitch
specifierAbbreviationportedspecifier_abbreviation
centsportedcents
▶ChromaticIntervalinterval.py crate 13 of 13
music21Cratemusic21-rs
centsportedcents
directedporteddirected
undirectedportedundirected
directionporteddirection
mod12portedmod12
simpleUndirectedportedsimple_undirected
simpleDirectedportedsimple_directed
intervalClassportedinterval_class
isChromaticStepportedis_chromatic_step
isStepportedis_step
reverseportedreverse
getDiatonicportedget_diatonic
transposePitchportedtranspose_pitch
▶Specifierinterval.py crate 4 of 4
music21Cratemusic21-rs
niceNameportednice_name
inversionportedinversion
semitonesAbovePerfectportedsemitones_above_perfect
semitonesAboveMajorportedsemitones_above_major
▶interval.py functionsinterval.py crate 20 of 20

Module-level helpers.

music21Cratemusic21-rs
convertStaffDistanceToIntervalportedstaff_distance_to_generic_number
convertDiatonicNumberToStepportedconvert_diatonic_number_to_step
parseSpecifierportedparse_specifier
convertGenericportedconvert_generic
convertSemitoneToSpecifierGenericMicrotoneportedconvert_semitone_to_specifier_generic_microtone
convertSemitoneToSpecifierGenericportedconvert_semitone_to_specifier_generic
intervalToPythagoreanRatioportedpythagorean_ratio
notesToGenericportednotes_to_generic
notesToChromaticportednotes_to_chromatic
intervalsToDiatonicportedintervals_to_diatonic
intervalFromGenericAndChromaticportedfrom_generic_and_chromatic
getWrittenHigherNoteportedwritten_higher_pitch
getAbsoluteHigherNoteportedabsolute_higher_pitch
getWrittenLowerNoteportedwritten_lower_pitch
getAbsoluteLowerNoteportedabsolute_lower_pitch
transposePitchportedtranspose_pitch
transposeNoteportedtranspose_note
notesToIntervalportedbetween_pitches
addportedsum
subtractporteddifference
▶KeySignaturekey.py crate 7 of 7
music21Cratemusic21-rs
asKeyportedas_key
alteredPitchesportedaltered_pitches
accidentalByStepportedaccidental_by_step
transposeportedtranspose
transposePitchFromCportedtranspose_pitch_from_c
getScaleportedscale
sharpsportedsharps
▶Keykey.py crate 6 of 6

tonalCertainty belongs to a key that came out of analysis, so it lives on the ranked estimates in analysis.

music21Cratemusic21-rs
relativeportedrelative
parallelportedparallel
tonicPitchNameWithCaseportedtonic_pitch_name_with_case
deriveByDegreeportedderive_by_degree
tonalCertaintyportedtonal_certainty
transposeportedtranspose
▶ConcreteScalescale/__init__.py crate 23 of 27
4 to port
music21Cratemusic21-rs
isConcretemissingevery Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one
abstractmissinga scale's pattern is its ScaleType or the steps it was given, read with scale_type and custom_steps; there is no abstract scale object beside it, and the wheel hands music21 one built from those
writemissingwrites a file, and this library does no file IO: a caller saves the Scala text scala_data and file_string give, or a score musicxml::to_musicxml writes
showmissingopens the scale in another program, which is the caller's to do
nameportedmusic21_name
getTonicportedtonic
getDegreeMaxUniqueporteddegree_count
transposeportedtranspose
tuneportedtune
romanNumeralportedroman_numeral
getPitchesportedpitches
getChordportedchord
pitchFromDegreeportedpitch_at_degree
pitchesFromScaleDegreesportedpitches_from_scale_degrees
intervalBetweenDegreesportedinterval_between_degrees
getScaleDegreeFromPitchporteddegree_of
getScaleDegreeAndAccidentalFromPitchporteddegree_and_accidental_of
solfegportedsolfeg
nextPitchportednext_pitch_above
isNextportedis_next
matchportedmatch_pitches
findMissingportedfind_missing
deriveRankedportedderive_ranked
deriveportedderive
deriveAllportedderive_all
deriveByDegreeportedderive_by_degree
getScalaDataportedscala_data
▶scale/__init__.py classesscale/__init__.py crate 22 of 32
10 to port

The ConcreteScale subclasses, as ScaleType variants or runtime constructors.

music21Cratemusic21-rs
Scalemissingthe abstract base
AbstractScalemissinga pattern with no tonic is a ScaleType or a list of steps; the wheel's AbstractScale stands on those and builds music21's IntervalNetwork from them
AbstractDiatonicScalemissingthe IntervalNetwork layer
AbstractOctatonicScalemissingthe IntervalNetwork layer
AbstractHarmonicMinorScalemissingthe IntervalNetwork layer
AbstractMelodicMinorScalemissingthe IntervalNetwork layer
AbstractCyclicalScalemissingthe IntervalNetwork layer
AbstractOctaveRepeatingScalemissingthe IntervalNetwork layer
ConcreteScalemissingrealized by Scale, StepScale and ScalaScale
DiatonicScalemissingthe diatonic modes are ScaleType variants
MajorScaleportedMajorScale
MinorScaleportedMinorScale
DorianScaleportedDorianScale
PhrygianScaleportedPhrygianScale
LydianScaleportedLydianScale
MixolydianScaleportedMixolydianScale
HypodorianScaleportedHypodorianScale
HypophrygianScaleportedHypophrygianScale
HypolydianScaleportedHypolydianScale
HypomixolydianScaleportedHypomixolydianScale
LocrianScaleportedLocrianScale
HypolocrianScaleportedHypolocrianScale
HypoaeolianScaleportedHypoaeolianScale
HarmonicMinorScaleportedHarmonicMinorScale
MelodicMinorScaleportedMelodicMinorScale
OctatonicScaleportedOctatonicScale
OctaveRepeatingScaleportedoctave_repeating
CyclicalScaleportedcyclical
ChromaticScaleportedChromaticScale
WholeToneScaleportedWholeToneScale
SieveScaleportedsieve
ScalaScaleportedScalaScale
▶RomanNumeralroman.py crate 11 of 11
music21Cratemusic21-rs
adjustMinorVIandVIIByQualityportedadjust_minor_vi_and_vii_by_quality
transposeportedtranspose
romanNumeralportedroman_numeral
figureportedfigure
figureAndKeyportedfigure_and_key
keyportedkey
scaleDegreeWithAlterationportedscale_degree_with_alteration
bassScaleDegreeFromNotationportedbass_scale_degree_from_notation
functionalityScoreportedfunctionality_score
isNeapolitanportedis_neapolitan
isMixtureportedis_mixture
▶TimeSignaturemeter/base.py crate 31 of 33
2 to port

The bar, the beats, the beams and the accent partitions, as the four MeterSequences music21 hangs off a meter; the tree is modelled here rather than the numbers being derived from the ratio alone.

music21Cratemusic21-rs
resetValuesmissingrebuilding a meter in place; a new one is built instead
loadmissingrebuilding a meter in place; a new one is built instead
ratioStringportedratio_string
ratioEqualportedratio_equal
numeratorportednumerator
denominatorporteddenominator
barDurationportedbar_duration
beatLengthToQuarterLengthRatioportedbeat_length_to_quarter_length_ratio
quarterLengthToBeatLengthRatioportedquarter_length_to_beat_length_ratio
beatCountportedbeat_count
beatCountNameportedbeat_count_name
beatDurationportedbeat_duration
beatDivisionCountportedbeat_division_count
beatDivisionCountNameportedbeat_division_count_name
beatDivisionDurationsportedbeat_division_durations
beatSubDivisionDurationsportedbeat_sub_division_durations
classificationportedclassification
summedNumeratorportedsummed_numerator
getBeamsportedbeams_for
setDisplayportedset_display
getAccentportedaccent
setAccentWeightportedset_accent_weight
averageBeatStrengthportedaverage_beat_strength
getMeasureOffsetOrMeterModulusOffsetportedoffset_in_bar
getAccentWeightportedaccent_weight
getBeatportedbeat_at_offset
getBeatOffsetsportedbeat_offsets
getBeatDurationportedbeat_duration
getOffsetFromBeatportedoffset_from_beat
getBeatProgressportedbeat_progress
getBeatProportionportedbeat_proportion
getBeatProportionStrportedbeat_proportion_string
getBeatDepthportedbeat_depth
▶MetronomeMarktempo.py crate 10 of 10
music21Cratemusic21-rs
referentportedreferent
numberSoundingportednumber_sounding
getQuarterBPMportedquarter_bpm
setQuarterBPMportedquarter_bpm
getTextExpressionportedtext_expression
getEquivalentByReferentportedequivalent_by_referent
getMaintainedNumberWithReferentportedmaintained_number_with_referent
secondsPerQuarterportedseconds_per_quarter
durationToSecondsportedduration_to_seconds
secondsToDurationportedseconds_to_duration
▶MetricModulationtempo.py crate 8 of 8

A change of tempo written as an equation between two metronome marks.

music21Cratemusic21-rs
oldMetronomeportedold_metronome
oldReferentportedold_referent
newMetronomeportednew_metronome
newReferentportednew_referent
numberportednumber
updateByContextportedupdate_from
setEqualityByReferentportedset_equality_by_referent
setOtherByReferentportedset_other_by_referent
▶Instrumentinstrument.py crate 2 of 4
2 to port

One of music21's instrument classes, with what an instrument of it starts out as.

music21Cratemusic21-rs
partIdRandomizemissingmakes an id up out of the clock and a random number; the crate keeps the id a score gives (part_id) and makes none up, reading no clock -- the wheel gives a random one as music21 does
instrumentIdRandomizemissingmakes an id up out of the clock and a random number; the crate keeps the id a score gives (instrument_id) and makes none up, reading no clock -- the wheel gives a random one as music21 does
bestNameportedbest_name
autoAssignMidiChannelportedauto_assign_midi_channel
▶StringInstrumentinstrument.py crate 1 of 1

A string instrument's open strings, the only member music21 gives its string family.

music21Cratemusic21-rs
stringPitchesportedstring_pitches
▶UnpitchedPercussioninstrument.py crate 1 of 1

How an unpitched percussion instrument is played, and the drum that plays.

music21Cratemusic21-rs
modifierportedmodifier
▶instrument.py functionsinstrument.py crate 8 of 8

Module-level helpers: finding an instrument by name or program, and what instruments do to a stream they stand in.

music21Cratemusic21-rs
unbundleInstrumentsportedunbundle_instruments
bundleInstrumentsportedbundle_instruments
ensembleNameBySizeportedensemble_name_by_size
deduplicateporteddeduplicate
instrumentFromMidiProgramportedfrom_midi_program
partitionByInstrumentportedpartition_by_instrument
fromStringportedfrom_name
getAllNamesForInstrumentportedall_names
▶PercussionMappermidi/percussion.py crate 2 of 2

The General MIDI percussion map, both ways: the instrument a key plays, played the way that key says, and the key an instrument is played by. music21's reverseInstrumentMapping is tables::PERCUSSION_KEYS.

music21Cratemusic21-rs
midiPitchToInstrumentportedfor_percussion_key
midiInstrumentToPitchportedpercussion_pitch
▶Durationduration.py crate 22 of 24
2 to port

A quarter length, the note values it is written as, and the tuplets it is written inside.

music21Cratemusic21-rs
informClientmissingobserver callback for a containing note; there is none
currentComponentsmissingthe working-out is not deferred here, so there is no half-worked-out state to read
linkedportedlinked
addDurationTupleportedadd_duration_tuple
appendTupletportedappend_tuplet
augmentOrDiminishportedaugment_or_diminish
clearportedclear
componentIndexAtQtrPositionportedcomponent_index_at_qtr_position
componentStartTimeportedcomponent_start_time
consolidateportedconsolidate
getGraceDurationportedgrace_duration
sliceComponentAtPositionportedslice_component_at_position
splitDotGroupsportedsplit_dot_groups
componentsportedcomponents
dotGroupsporteddot_groups
dotsporteddots
fullNameportedfull_name
isComplexportedis_complex
ordinalportedordinal
quarterLengthNoTupletsportedquarter_length_no_tuplets
quarterLengthportedquarter_length
tupletsportedtuplets
aggregateTupletMultiplierportedaggregate_tuplet_multiplier
typeportedduration_type
▶ToneRowserial.py crate 10 of 10
music21Cratemusic21-rs
pitchClassesportedpitch_classes
noteNamesportednote_names
isTwelveToneRowportedis_twelve_tone_row
makeTwelveToneRowportedmake_twelve_tone_row
isSameRowportedis_same_row
getIntervalsAsStringportedintervals_as_string
zeroCenteredTransformationportedzero_centered_transformation
originalCenteredTransformationportedoriginal_centered_transformation
findZeroCenteredTransformationsportedfind_zero_centered_transformations
findOriginalCenteredTransformationsportedfind_original_centered_transformations
▶TwelveToneRowserial.py crate 7 of 7
music21Cratemusic21-rs
matrixportedmatrix
findHistoricalportedfind_historical
findTransformedHistoricalportedfind_transformed_historical
isAllIntervalportedis_all_interval
getLinkClassificationportedlink_classification
isLinkChordportedis_link_chord
areCombinatorialportedare_combinatorial
▶serial.py functionsserial.py crate 3 of 3

Module-level helpers.

music21Cratemusic21-rs
getHistoricalRowByNameportedhistorical_row_by_name
pcToToneRowportednew
rowToMatrixportedrow_to_matrix
▶VoiceLeadingQuartetvoiceLeading.py crate 30 of 30
music21Cratemusic21-rs
keyportedkey
v1n1portedv1n1
v1n2portedv1n2
v2n1portedv2n1
v2n2portedv2n2
motionTypeportedmotion_type
noMotionportedno_motion
obliqueMotionportedoblique_motion
similarMotionportedsimilar_motion
parallelMotionportedparallel_motion
contraryMotionportedcontrary_motion
outwardContraryMotionportedoutward_contrary_motion
inwardContraryMotionportedinward_contrary_motion
antiParallelMotionportedanti_parallel_motion
parallelIntervalportedparallel_interval
parallelFifthportedparallel_fifth
parallelOctaveportedparallel_octave
parallelUnisonportedparallel_unison
parallelUnisonOrOctaveportedparallel_unison_or_octave
hiddenIntervalportedhidden_interval
hiddenFifthportedhidden_fifth
hiddenOctaveportedhidden_octave
voiceOverlapportedvoice_overlap
voiceCrossingportedvoice_crossing
isProperResolutionportedis_proper_resolution
leapNotSetWithStepportedleap_not_set_with_step
modalOpeningportedmodal_opening
opensIncorrectlyportedopens_incorrectly
clausulaVeraportedclausula_vera
closesIncorrectlyportedcloses_incorrectly
▶Sievesieve.py crate 4 of 9
5 to port

The sieve as written and its compressed reading: parse, membership, the segment formats and the interval widths of one period.

music21Cratemusic21-rs
expandmissingwhich reading answers is not state on the sieve here; compressed hands back the other one and the sieve as written stays as it was
setZmissingthe range is an argument of each question here, not state on the sieve
setZRangemissingthe range is an argument of each question here, not state on the sieve
setSegmentFormatmissingthe segment format is an argument of each question here, not state on the sieve
representmissingthe sieve is written by Display, which is not a function the map can name
compressportedcompressed
segmentportedsegment
periodportedperiod
collectportedcollect
▶Beamsbeam.py crate 12 of 12

All the beams over one note, and the rules for a run of them.

music21Cratemusic21-rs
naiveBeamsportednaive_beams
removeSandwichedUnbeamablesportedremove_sandwiched_unbeamables
mergeConnectingPartialBeamsportedmerge_connecting_partial_beams
sanitizePartialBeamsportedsanitize_partial_beams
appendportedappend
fillportedfill
getByNumberportedby_number
getNumbersportednumbers
getTypeByNumberportedby_number
getTypesportedtypes
setAllportedset_all
setByNumberportedset_by_number
▶Volumevolume.py crate 7 of 9
2 to port

How loud a note sounds, as a velocity and as a scalar.

music21Cratemusic21-rs
cachedRealizedmissingthe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does
cachedRealizedStrmissingthe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does
getDynamicContextporteddynamic_context
mergeAttributesportedmerge_attributes
getRealizedStrportedrealized_str
getRealizedportedrealized
realizedportedrealized
velocityportedvelocity
velocityScalarportedvelocity_scalar
▶volume.py functionsvolume.py crate 1 of 1
music21Cratemusic21-rs
realizeVolumeportedrealize_volume
▶FigurefiguredBass/notation.py crate 1 of 1

One number of that column, with the accidental written against it.

music21Cratemusic21-rs
isPureExtenderportedis_pure_extender
▶ModifierfiguredBass/notation.py crate 2 of 2

The mark as written beside the accidental it means: figured bass has marks no accidental name covers, a + that raises and a / that lowers.

music21Cratemusic21-rs
modifyPitchNameportedmodify_pitch_name
modifyPitchportedmodify
▶figuredBass/notation.py functionsfiguredBass/notation.py crate 1 of 1
music21Cratemusic21-rs
convertToPitchportedconvert_to_pitch
▶sieve.py functionssieve.py crate 6 of 6

The number helpers music21 keeps beside the sieve: primes, and spacings across the unit interval.

music21Cratemusic21-rs
eratosthenesportederatosthenes
rabinMillerportedrabin_miller
discreteBinaryPadporteddiscrete_binary_pad
unitNormRangeportedunit_norm_range
unitNormEqualportedunit_norm_equal
unitNormStepportedunit_norm_step
▶GeneralNotenote.py crate 8 of 8

What every written note and chord has: a length, what is sung to it, and the marks over it. The crate has no type of its own for it -- the GeneralNote to NotRest to Note chain was mirrored here once as wrapper structs and taken out again -- so its members are matched against the types that carry them.

music21Cratemusic21-rs
tieportedtie
lyricportedlyric
addLyricportedadd_lyric
insertLyricportedinsert_lyric
fullNameportedfull_name
pitchesportedpitches
augmentOrDiminishportedaugment_or_diminish
getGraceportedgrace_note
▶NotRestnote.py crate 8 of 8

A note or chord as distinct from a rest: what it is written as, which way its stem goes, and how loud it sounds.

music21Cratemusic21-rs
stemDirectionportedstem_direction
noteheadportednotehead
noteheadFillportednotehead_fill
noteheadParenthesisportednotehead_parenthesis
hasVolumeInformationportedhas_volume_information
volumeportedvolume
storedInstrumentportedstored_instrument
getInstrumentportedinstrument
▶Lyricnote.py crate 7 of 7

A syllable sung to a note.

music21Cratemusic21-rs
isCompositeportedis_composite
textportedtext
syllabicportedsyllabic
identifierportedidentifier
rawTextportedraw_text
numberportednumber
setTextAndSyllabicportedset_text_and_syllabic
▶Restnote.py crate 1 of 1

A silence of a written length.

music21Cratemusic21-rs
fullNameportedfull_name
▶ChordBasechord/__init__.py crate 7 of 7

What a chord is before it is asked anything: the notes it holds, and adding to and taking from them.

music21Cratemusic21-rs
addportedadd
removeportedremove
notesportednotes
tieportedtie
volumeportedvolume
hasComponentVolumesportedhas_component_volumes
setVolumesportedset_volumes
▶Tupletduration.py crate 10 of 10

The bracket that says a length is written as one thing and sounds as another.

music21Cratemusic21-rs
augmentOrDiminishportedaugment_or_diminish
setDurationTypeportedset_duration_type
setRatioportedset_ratio
totalTupletLengthportedtotal_tuplet_length
tupletMultiplierportedmultiplier
durationActualportedduration_actual
durationNormalportedduration_normal
fullNameportedfull_name
tupletActualportedtuplet_actual
tupletNormalportedtuplet_normal
▶Notenote.py crate 7 of 8
1 to port

A pitch and an optional duration.

music21Cratemusic21-rs
pitchChangedmissingobserver callback; there is none
nameportedpitch_name
nameWithOctaveportedpitch_name_with_octave
stepportedstep
octaveportedoctave
pitchesportedpitches
transposeportedtranspose
fullNameportedfull_name
▶ChordSymbolharmony.py crate 3 of 3
music21Cratemusic21-rs
findFigureportedfind_figure
inversionIsValidportedinversion_is_valid
transposeportedtranspose
▶pitch.py functionspitch.py crate 4 of 4

Module-level helpers.

music21Cratemusic21-rs
isValidAccidentalNameportedis_valid_name
standardizeAccidentalNameportedstandardize_name
convertPitchClassToStrportedconvert_pitch_class_to_str
simplifyMultipleEnharmonicsportedsimplify_multiple_enharmonics
▶key.py functionskey.py crate 3 of 3

Module-level helpers.

music21Cratemusic21-rs
convertKeyStringToMusic21KeyStringportedconvert_key_string_to_music21_key_string
sharpsToPitchportedsharps_to_pitch
pitchToSharpsportedpitch_to_sharps
▶duration.py functionsduration.py crate 12 of 12

Module-level helpers.

music21Cratemusic21-rs
nextLargerTypeportednext_larger
nextSmallerTypeportednext_smaller
quarterLengthToClosestTypeportedquarter_length_to_closest_type
convertQuarterLengthToTypeportedfrom_quarter_length
dottedMatchportedtype_and_dots
quarterLengthToNonPowerOf2Tupletportedquarter_length_to_non_power_of_2_tuplet
quarterLengthToTupletportedquarter_length_to_tuplet
quarterConversionportedquarter_conversion
convertTypeToQuarterLengthportedquarter_length
convertTypeToNumberportedtype_number
durationTupleFromQuarterLengthportedtype_and_dots
durationTupleFromTypeDotsportedfrom_type_with_dots
▶tempo.py functionstempo.py crate 2 of 2

Module-level helpers.

music21Cratemusic21-rs
convertTempoByReferentportedconvert_tempo_by_referent
interpolateElementsportedinterpolate_elements
▶roman.py functionsroman.py crate 8 of 8

Module-level helpers.

music21Cratemusic21-rs
expandShortHandportedexpand_shorthand
correctSuffixForChordQualityportedcorrect_suffix_for_chord_quality
figureTuplesportedfigure_tuples
figureTupleSoloportedfrom_pitch_and_reference
identifyAsTonicOrDominantportedidentify_as_tonic_or_dominant
romanInversionNameportedroman_inversion_name
correctRNAlterationForMinorportedcorrect_rn_alteration_for_minor
romanNumeralFromChordportedroman_numeral_from_chord
▶chord/__init__.py functionschord/__init__.py crate 2 of 2

Module-level helpers.

music21Cratemusic21-rs
fromForteClassportedfrom_forte_class
fromIntervalVectorportedfrom_interval_vector
▶chord/tables.py functionschord/tables.py crate 9 of 9

The Forte tables of set classes, read without a chord in hand. The data is generated from music21's own and checked by xtask verify-tables.

music21Cratemusic21-rs
forteIndexToInversionsAvailableportedinversions_available
addressToTransposedNormalFormportednormal_form
addressToPrimeFormportedprime_form
addressToIntervalVectorportedinterval_class_vector
intervalVectorToAddressportedset_classes_with_interval_vector
addressToZAddressportedz_related_class
addressToCommonNamesportedcommon_names
addressToForteNameportedforte_name
seekChordTablesAddressportedaddress_of_pitch_classes
▶TabChordBaseromanText/tsvConverter.py crate 3 of 3

One row of the lab's tabular analysis, read: the columns both of its standards share, the label music21 builds a numeral from, and the chord that numeral stands for. The one row type here reads a row of either standard, as music21's two subclasses do between them.

music21Cratemusic21-rs
combinedChordportedchord
tabToM21portedelement
populateFromRowportedfrom_row
▶TabChordV2romanText/tsvConverter.py crate 4 of 4

What the lab's second standard renamed: the measure and the onset it writes as mn and mn_onset, and the keys it writes without the underscore.

music21Cratemusic21-rs
beatportedbeat
measureportedmeasure
local_keyportedlocal_key
global_keyportedglobal_key
▶TsvHandlerromanText/tsvConverter.py crate 2 of 3
1 to port

A table read: the rows, and the score of numerals they make.

music21Cratemusic21-rs
prepStreammissinga step inside the reader: from_tsv prepares the measures from the table's own numbers and meters itself and hands back the whole score
tsvToChordsportedtsv_to_chords
toM21Streamportedfrom_tsv
▶M21toTSVromanText/tsvConverter.py crate 1 of 2
1 to port

A score written back as a table, column for column.

music21Cratemusic21-rs
writemissingwrites a file, which the library does not do: to_tsv hands back the text
m21ToTsvportedto_tsv
▶romanText/tsvConverter.py functionsromanText/tsvConverter.py crate 7 of 7

Module-level helpers: the swaps between the two notations, a local key read as a degree or as a key of its own, and the form, the figured bass and the added tones a label writes.

music21Cratemusic21-rs
getFormportedform_of
handleAddedTonesportedhandle_added_tones
localKeyAsRnportedlocal_key_as_roman
isMinorportedis_minor
characterSwapsportedcharacter_swaps
getLocalKeyportedlocal_key
getSecondaryKeyportedsecondary_key
▶CTSongromanText/clercqTemperley.py crate 7 of 8
1 to port

A de Clercq-Temperley analysis of the rock corpus as its text says it: the title, the comments, the rules, and the key and the meter the song opens in.

music21Cratemusic21-rs
toScoremissingmusic21's own deprecated name for toPart, which it will take out
parseportedparse
titleportedtitle
commentsportedcomments
rulesportedrules
homeTimeSigportedhome_time_signature
homeKeyportedhome_key
toPartportedto_part
▶CTRuleromanText/clercqTemperley.py crate 7 of 12
5 to port

One rule of a song, a line of its text: its name, the section it stands for, its chords, its comment, and the measures it expands to.

music21Cratemusic21-rs
parentmissingmusic21 keeps a weak reference from a rule back to the song holding it, and reads the rule's key, meter and other rules through it; a song here expands its own rules (CtSong::to_part), so nothing needs the way back
expandExpansionContentmissinga step inside the expansion, which the crate drives from the song rather than from the rule keeping the state
expandSimpleContentmissinga step inside the expansion, as expandExpansionContent
addOptionalTieAndLyricsmissinga step inside the expansion, which ties the chord before as it writes the one after
insertKsTsmissinga step inside the expansion: the crate writes the key and the meter into a measure as it builds it
expandportedexpand
isSameportedis_same
fixupChordAtomportedfixup_chord_atom
musicTextportedmusic_text
commentportedcomment
LHSportedleft_hand_side
sectionNameportedsection_name
▶harmony.py functionsharmony.py crate 7 of 10
3 to port

Module-level helpers.

music21Cratemusic21-rs
addNewChordSymbolmissingmutates music21's global chord-type table; the crate's is a constant, and the wheel's chord symbols read music21's live table wherever music21 is there to edit it
changeAbbreviationFormissingmutates music21's global chord-type table; the crate's is a constant, and the wheel's chord symbols read music21's live table wherever music21 is there to edit it
removeChordSymbolsmissingmutates music21's global chord-type table; the crate's is a constant, and the wheel's chord symbols read music21's live table wherever music21 is there to edit it
chordSymbolFigureFromChordportedchord_symbol_figure_from_chord
alterToChordSymbolStringportedalter_to_chord_symbol_string
chordSymbolFromChordportedchord_symbol_from_chord
getAbbreviationListGivenChordTypeportedabbreviations_for_kind
getCurrentAbbreviationForportedcurrent_abbreviation_for_kind
getNotationStringGivenChordTypeportednotation_for_kind
realizeChordSymbolDurationsportedrealize_chord_symbol_durations
▶meter/base.py functionsmeter/base.py crate 1 of 1

Module-level helpers.

music21Cratemusic21-rs
bestTimeSignatureportedbest_time_signature
▶ScalaDatascale/scala/__init__.py crate 7 of 7

A Scala scale as its file writes it: a description, a degree a line and the interval it repeats at. ScalaFile is left out because it is file IO, which this library leaves to its caller.

music21Cratemusic21-rs
parseportedparse
getCentsAboveTonicportedwritten_cents
getAdjacentCentsportedadjacent_cents
setAdjacentCentsportedfrom_adjacent_cents
getIntervalSequenceportedinterval_sequence
setIntervalSequenceportedfrom_interval_sequence
getFileStringportedfile_string
▶scale/scala/__init__.py functionsscale/scala/__init__.py crate 2 of 3
1 to port

Module-level helpers.

music21Cratemusic21-rs
getPathsmissingwhere the archive's files sit on disk; the archive here is one bundled table and has no paths
parseportedfind
searchportedsearch
▶Tietie.py crate 3 of 4
1 to port

Two written notes sounding as one, and how the tie between them is drawn.

music21Cratemusic21-rs
idmissingthe address of the Python object, which is how music21 tells one tie from another; a tie here is a value its note holds, and has no identity apart from it
placementportedplacement
styleportedstyle
typeportedtie_type
▶MeterTerminalmeter/core.py crate 10 of 10

A span of a bar written as a ratio, which is what a meter's partitions are made of.

music21Cratemusic21-rs
ratioEqualportedratio_equal
subdivideByCountportedsubdivide_by_count
subdivideByListportedsubdivide_by_list
subdivideByOtherportedsubdivide_by_other
subdivideportedsubdivide
weightportedweight
numeratorportednumerator
denominatorporteddenominator
durationportedquarter_length
depthporteddepth
▶MeterSequencemeter/core.py crate 23 of 25
2 to port

A span divided into parts, each of them a span in turn, which is the tree every meter question is read off.

music21Cratemusic21-rs
partitionmissingone setter dispatching on the type of what it is handed; the three partitions it dispatches to are each ported
loadmissingrebuilding a sequence in place; a new one is built instead
partitionDisplayportedpartition_display
getPartitionOptionsportedpartition_options
partitionByCountportedpartition_by_count
partitionByListportedpartition_by_list
partitionByOtherMeterSequenceportedpartition_by_other
subdividePartitionsEqualportedsubdivide_partitions_equal
subdivideNestedHierarchyportedsubdivide_nested_hierarchy
partitionStrportedpartition_string
weightportedweight
flattenportedflatten
flatWeightportedflat_weights
depthporteddepth
isUniformPartitionportedis_uniform_partition
getLevelListportedlevel_list
getLevelportedlevel
getLevelSpanportedlevel_span
getLevelWeightportedlevel_weight
setLevelWeightportedset_level_weight
offsetToIndexportedoffset_to_index
offsetToAddressportedoffset_to_address
offsetToSpanportedoffset_to_span
offsetToWeightportedoffset_to_weight
offsetToDepthportedoffset_to_depth
▶voiceLeading.py functionsvoiceLeading.py crate 2 of 2

Module-level helpers.

music21Cratemusic21-rs
getVerticalityFromObjectportedverticality_at
iterateAllVoiceLeadingQuartetsportediterate_all_voice_leading_quartets
▶Dynamicdynamics.py crate 2 of 2

A dynamic mark and the loudness it stands for. In a stream it is in force until the next, which is what realize_volume reads.

music21Cratemusic21-rs
valueportedvalue
volumeScalarportedvolume_scalar
▶dynamics.py functionsdynamics.py crate 1 of 1

Module-level helpers.

music21Cratemusic21-rs
dynamicStrFromDecimalporteddynamic_str_from_decimal
▶Clefclef.py crate 3 of 3

A clef: its sign, the line it sits on, the octaves it transposes and the note on its lowest line.

music21Cratemusic21-rs
octaveChangeportedoctave_change
nameportedname
getStemDirectionForPitchesportedstem_direction_for_pitches
▶PitchClefclef.py crate 1 of 1

A clef that places pitches, whose lowest line moves with its octave change.

music21Cratemusic21-rs
octaveChangeportedoctave_change
▶clef.py functionsclef.py crate 2 of 2

Module-level helpers.

music21Cratemusic21-rs
clefFromStringportedfrom_string
bestClefportedbest_for
▶Articulationarticulations.py crate 2 of 2

A mark on a note saying how it is played: how much louder, how much shorter, and which part of a tied note keeps it.

music21Cratemusic21-rs
nameportedname
volumeShiftportedvolume_shift
▶Ornamentexpressions.py crate 4 of 5
1 to port

An ornament and the notes it is played as: its ornamental pitches and its realization over a note in a key.

music21Cratemusic21-rs
fillListOfRealizedNotesmissinga helper realize fills its lists with; realize is ported
realizeportedrealize
resolveOrnamentalPitchesportedornamental_pitches
ornamentalPitchesportedornamental_pitches
updateAccidentalDisplayportedupdate_accidental_display
▶GeneralMordentexpressions.py crate 9 of 9
music21Cratemusic21-rs
nameportedname
accidentalportedaccidental
directionporteddirection
getSizeportedsize
resolveOrnamentalPitchesportedornamental_pitches
ornamentalPitchportedornamental_pitches
ornamentalPitchesportedornamental_pitches
updateAccidentalDisplayportedupdate_accidental_display
realizeportedrealize
▶Trillexpressions.py crate 10 of 10
music21Cratemusic21-rs
nameportedname
directionporteddirection
accidentalportedaccidental
splitClientportedsplit_client
getSizeportedsize
resolveOrnamentalPitchesportedornamental_pitches
ornamentalPitchportedornamental_pitches
ornamentalPitchesportedornamental_pitches
updateAccidentalDisplayportedupdate_accidental_display
realizeportedrealize
▶Turnexpressions.py crate 12 of 12
music21Cratemusic21-rs
upperAccidentalportedupper_accidental
lowerAccidentalportedlower_accidental
delayporteddelay
isDelayedportedis_delayed
nameportedname
getSizeportedturn_size
resolveOrnamentalPitchesportedornamental_pitches
upperOrnamentalPitchportedornamental_pitches
lowerOrnamentalPitchportedornamental_pitches
ornamentalPitchesportedornamental_pitches
updateAccidentalDisplayportedupdate_accidental_display
realizeportedrealize
▶GeneralAppoggiaturaexpressions.py crate 1 of 1
music21Cratemusic21-rs
realizeportedrealize
▶Tremoloexpressions.py crate 2 of 2
music21Cratemusic21-rs
numberOfMarksportednumber_of_marks
realizeportedrealize
▶figuredBass/possibility.py functionsfiguredBass/possibility.py crate 15 of 15

The rules a voicing of a figured bass is held to, alone and moving to the next.

music21Cratemusic21-rs
voiceCrossingportedvoice_crossing
isIncompleteportedis_incomplete
upperPartsWithinLimitportedupper_parts_within_limit
pitchesWithinLimitportedpitches_within_limit
limitPartToPitchportedlimit_part_to_pitch
parallelFifthsportedparallel_fifths
parallelOctavesportedparallel_octaves
hiddenFifthsportedhidden_fifths
hiddenOctavesportedhidden_octaves
voiceOverlapportedvoice_overlap
partMovementsWithinLimitsportedpart_movements_within_limits
upperPartsSameportedupper_parts_same
partsSameportedparts_same
couldBeItalianA6Resolutionportedcould_be_italian_a6_resolution
partPairsportedpart_pairs
▶figuredBass/resolution.py functionsfiguredBass/resolution.py crate 13 of 14
1 to port

How a dominant seventh, a diminished seventh or an augmented sixth resolves, voiced part for part.

music21Cratemusic21-rs
showResolutionsmissingputs the voicings in a score and opens it in another program; Realization::generate_realization_from_possibility_progression writes voicings as a score, and opening a program is the caller's to do
augmentedSixthToDominantportedaugmented_sixth_to_dominant
augmentedSixthToMajorTonicportedaugmented_sixth_to_major_tonic
augmentedSixthToMinorTonicportedaugmented_sixth_to_minor_tonic
dominantSeventhToMajorTonicporteddominant_seventh_to_major_tonic
dominantSeventhToMinorTonicporteddominant_seventh_to_minor_tonic
dominantSeventhToMajorSubmediantporteddominant_seventh_to_major_submediant
dominantSeventhToMinorSubmediantporteddominant_seventh_to_minor_submediant
dominantSeventhToMajorSubdominantporteddominant_seventh_to_major_subdominant
dominantSeventhToMinorSubdominantporteddominant_seventh_to_minor_subdominant
diminishedSeventhToMajorTonicporteddiminished_seventh_to_major_tonic
diminishedSeventhToMinorTonicporteddiminished_seventh_to_minor_tonic
diminishedSeventhToMajorSubdominantporteddiminished_seventh_to_major_subdominant
diminishedSeventhToMinorSubdominantporteddiminished_seventh_to_minor_subdominant
▶FiguredBassScalefiguredBass/realizerScale.py crate 3 of 3

The key a figured bass is counted in, and the notes a bass and its figures stand for.

music21Cratemusic21-rs
getPitchNamesportedpitch_names
getSamplePitchesportedsample_pitches
getPitchesportedpitches
▶SegmentfiguredBass/segment.py crate 6 of 9
3 to port

A bass note and its figures, every voicing of them, and the moves to the next.

music21Cratemusic21-rs
singlePossibilityRulesmissingmusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
consecutivePossibilityRulesmissingmusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
specialResolutionRulesmissingmusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
resolveDominantSeventhSegmentportedresolve_dominant_seventh_segment
resolveDiminishedSeventhSegmentportedresolve_diminished_seventh_segment
resolveAugmentedSixthSegmentportedresolve_augmented_sixth_segment
allSinglePossibilitiesportedall_single_possibilities
allCorrectSinglePossibilitiesportedall_correct_single_possibilities
allCorrectConsecutivePossibilitiesportedall_correct_consecutive_possibilities
▶figuredBass/segment.py functionsfiguredBass/segment.py crate 1 of 2
1 to port

Module-level helpers.

music21Cratemusic21-rs
printRulesmissingprints music21's rule tables, which hold its Python functions
getPitchesportedpitches
▶FiguredBassLinefiguredBass/realizer.py crate 5 of 5

A bass line and its figures in a key and a meter, written out as a part, and realized into every voicing that keeps the rules -- and keeps any part laid over it.

music21Cratemusic21-rs
addElementportedadd_element
generateBassLineportedgenerate_bass_line
retrieveSegmentsportedsegments
overlayPartportedoverlay_part
realizeportedrealize
▶RealizationfiguredBass/realizer.py crate 7 of 7

Every way of voicing a line: counted, listed, chosen from, and written out as a score in keyboard or chorale style. Where music21 chooses at random the caller chooses.

music21Cratemusic21-rs
getNumSolutionsportednum_solutions
getAllPossibilityProgressionsportedall_possibility_progressions
getRandomPossibilityProgressionportedpossibility_progression_by
generateRealizationFromPossibilityProgressionportedgenerate_realization_from_possibility_progression
generateAllRealizationsportedgenerate_all_realizations
generateRandomRealizationportedgenerate_random_realization
generateRandomRealizationsportedgenerate_random_realizations
▶KeyWeightKeyAnalysisanalysis/discrete.py crate 3 of 6
3 to port

Key finding by correlating a duration-weighted pitch-class distribution with one of five key profiles.

music21Cratemusic21-rs
solutionLegendmissingthe colour legend of a keyscape graph; presentation
solutionUnitStringmissingthe unit a graph's legend is labelled with; presentation
solutionToColormissingthe colour a key is drawn in; presentation
getWeightsportedmajor_weights
processportedestimate_key_from_distribution
getSolutionportedestimate_key_from_distribution
▶Ambitusanalysis/discrete.py crate 3 of 6
3 to port
music21Cratemusic21-rs
solutionLegendmissingthe colour legend of a graph; presentation
solutionUnitStringmissingthe unit a graph's legend is labelled with; presentation
solutionToColormissingthe colour a span is drawn in; presentation
getPitchSpanportedpitch_span
processportedpitch_span
getSolutionportedpitch_span
▶MelodicIntervalDiversityanalysis/discrete.py crate 3 of 4
1 to port
music21Cratemusic21-rs
solutionToColormissingthe colour a count is drawn in; presentation
countMelodicIntervalsportedmelodic_interval_counts
processportedmelodic_interval_counts
getSolutionportedmelodic_interval_counts
▶EnharmonicSimplifieranalysis/enharmonics.py crate 5 of 6
1 to port

The best spelling of a run of pitches, scored on augmented and diminished steps, accidentals and their mixture.

music21Cratemusic21-rs
getProductmissinglists every combination of the spellings at once; best_choice walks them one at a time
getRepresentationsportedspelling_options
bestPitchesportedbest_spelling
getAlterationScoreportedalteration_score
getMixSharpFlatsScoreportedmixture_score
getAugDimScoreportedaug_dim_score
▶analysis/neoRiemannian.py functionsanalysis/neoRiemannian.py crate 12 of 12

L, P and R, their chains, the hexatonic cycle and systems, and the chromatic and disjunct mediants.

music21Cratemusic21-rs
Lportedapply
Pportedapply
Rportedapply
isNeoRportedis_neo_r
isChromaticMediantportedis_chromatic_mediant
LRP_combinationsportedlrp_combination
completeHexatonicportedcomplete_hexatonic
hexatonicSystemportedhexatonic_system
chromaticMediantsportedchromatic_mediant
disjunctMediantsporteddisjunct_mediant
Sportedslide
Nportednebenverwandt
▶analysis/harmonicFunction.py functionsanalysis/harmonicFunction.py crate 2 of 2

The eighteen harmonic function labels and the Roman numerals they stand for, in either mode.

music21Cratemusic21-rs
functionToRomanportedto_roman
romanToFunctionportedfrom_roman
▶TranspositionCheckeranalysis/transposition.py crate 6 of 6

A set of pitches in all twelve transpositions, and how many of them differ.

music21Cratemusic21-rs
getTranspositionsportedtranspositions
listNormalOrdersportednormal_orders
listDistinctNormalOrdersporteddistinct_normal_orders
numDistinctTranspositionsporteddistinct_count
getChordsOfDistinctTranspositionsporteddistinct_chords
getPitchesOfDistinctTranspositionsporteddistinct_pitches
▶analysis/patel.py functionsanalysis/patel.py crate 2 of 2

The normalized pairwise variability of a rhythm and the melodic interval variability of a line.

music21Cratemusic21-rs
nPVIportedn_pvi
melodicIntervalVariabilityportedmelodic_interval_variability
▶analysis/metrical.py functionsanalysis/metrical.py crate 2 of 2

The depth of the metrical hierarchy at each note, and Thomassen's melodic accent.

music21Cratemusic21-rs
labelBeatDepthportedlabel_beat_depth
thomassenMelodicAccentportedthomassen_melodic_accent
▶Segmenteranalysis/segmentByRests.py crate 2 of 2

A part cut into its runs of notes between rests and clefs, and the intervals inside them.

music21Cratemusic21-rs
getSegmentsListportedsegments_list
getIntervalListportedinterval_list
▶analysis/pitchAnalysis.py functionsanalysis/pitchAnalysis.py crate 1 of 1

How often each value of a property of a stream's pitches comes.

music21Cratemusic21-rs
pitchAttributeCountportedpitch_attribute_count
▶WindowedAnalysisanalysis/windowed.py crate 3 of 3

A stream cut into quarter-note windows, and an analysis run over windows of each size.

music21Cratemusic21-rs
getMinimumWindowStreamportednew
analyzeportedanalyze
processportedprocess
▶KeyAnalyzeranalysis/floatingKey.py crate 4 of 4

A key for every measure, each measure's reading smoothed by its neighbours'.

music21Cratemusic21-rs
runportedrun
getRawKeyByMeasureportedraw_key_by_measure
getInterpretationByMeasureportedinterpretation_by_measure
smoothInterpretationByMeasureportedsmooth_interpretation_by_measure
▶analysis/floatingKey.py functionsanalysis/floatingKey.py crate 1 of 1
music21Cratemusic21-rs
divideporteddivide
▶humdrum/harmParser.py functionshumdrum/harmParser.py crate 1 of 1

The harmonic annotations a **harm spine carries, read as the roman numerals they stand for.

music21Cratemusic21-rs
convertHarmToRomanportedconvert_harm_to_roman
▶HarmParserhumdrum/harmParser.py crate 1 of 1

A **harm token read: the accidental, the degree, the quality, the intervals, the inversion, an alternative reading and a secondary function. music21 reads it with the regular expressions of its HarmDefs, which the crate has none of -- Harm::parse reads the token by hand in the same order, and ROOTS is the table of degrees.

music21Cratemusic21-rs
parseportedparse
▶Barlinebar.py crate 2 of 2

How a measure is closed. A crate measure keeps one as its own left_barline or right_barline, and a barline standing inside a measure is an element of the stream.

music21Cratemusic21-rs
typeportedbar_type
musicXMLBarStyleportedmusicxml_bar_style
▶Repeatbar.py crate 3 of 3

A barline that says which way the music goes back. A crate barline carries the direction and the times, so a repeat is a barline that has them.

music21Cratemusic21-rs
directionportedrepeat_direction
timesportedrepeat_times
getTextExpressionportedrepeat_text_expression
▶Streamstream/base.py crate 98 of 131
33 to port

Music on a timeline, and the subclasses music21 nests inside one another: Measure, Part, PartStaff, Score, Voice and Opus are all read here, since the crate has one Stream with a StreamKind where music21 has seven classes. What makes an object a *member* of a music21 stream is deliberately absent -- sites, contexts, derivations, activeSite -- so the members that ask an element where it sits, or ask the stream to hold somebody else's object, are excluded with their reasons. The notation methods live in makenotation, what a bar and a beat last in meter, and the variant methods in variant, which is where music21 keeps them too.

music21Cratemusic21-rs
writemissingwriting a file, which the format modules do
showmissingrendering, which the crate leaves to its caller
firstmissingas elementOffset: events answers in order
lastmissingas elementOffset: events answers in order
clefmissingthe clef a stream opens with; the clef in force is read by in_force_before, a crate stream keeping no clef of its own
clearmissingempties a stream in place; clone_empty answers an empty one of the same kind
mergeAttributesmissingwhat clone_empty carries over
indexmissingas elementOffset
removemissingtakes a named object out; retain_leaves and remove_event take out by place or by test
setElementOffsetmissingas elementOffset: events_mut reaches each in place
elementOffsetmissingasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset
storeAtEndmissingelements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own here
isAtEndmissingneeds the sites a crate stream does not keep
setDerivationMethodmissingderivations, which a crate stream does not keep
replacemissingswaps one object for another; events_mut reaches each in place
recurseReprmissingmusic21's own text dump of a stream
plotmissingplotting, which the crate leaves to its caller
addGroupForElementsmissingthe group names music21 picks elements out of a stream by; nothing a crate stream holds carries them
getElementsByGroupmissingas addGroupForElements
getElementByIdmissingan id on every element, which only a stream and a note carry here
measuremissingone measure by its number; measures answers them all, each carrying its own number
transferOffsetToElementsmissingmoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep
haveAccidentalsBeenMademissinga flag music21 keeps on the stream; nothing here remembers having been asked
sortmissinga crate stream is in offset order as it is built
sortedmissingas sort
containerInHierarchymissingneeds the sites a crate stream does not keep
makeImmutablemissingmusic21's mutability machinery, which a value has no need of
makeMutablemissingas makeImmutable
durationmissinga crate stream has no Duration of its own; highest_time answers when the last thing in it ends
beatmissingwhere one element sits in its bar; placed answers it for every element at once, and beat_and_measure_from_offset for a point
beatStrmissingas beat
beatStrengthmissingas beat
attachMelodicIntervalsmissingattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line
iterportediter
elementsportedevents
timeSignatureportedtime_signature_at
keySignatureportedkey_signature_at
staffLinesportedstaff_lines
cloneEmptyportedclone_empty
hasElementOfClassportedhas_element_of_class
mergeElementsportedmerge_elements
popportedremove_event
removeByClassportedremove_by_class
removeByNotOfClassportedremove_by_not_of_class
insertportedinsert
insertIntoNoteOrChordportedinsert_into_note_or_chord
appendportedpush
insertAndShiftportedinsert_and_shift
splitAtDurationsportedsplit_at_durations
splitAtQuarterLengthportedsplit_at_quarter_length
analyzeportedanalyze
getElementsByClassportedelements_of_class
getElementsNotOfClassportedelements_not_of_class
getElementsByOffsetportedelements_in_span
getElementAtOrBeforeportedelement_at_or_before
getElementBeforeOffsetportedelement_before_offset
getElementAfterElementportedelement_after
measuresportedmeasures
templateportedtemplate
measureOffsetMapportedmeasure_offset_map
finalBarlineportedfinal_barline
voicesportedvoices
spannersportedspanners
atSoundingPitchportedat_sounding_pitch
toSoundingPitchportedto_sounding_pitch
toWrittenPitchportedto_written_pitch
getTimeSignaturesportedtime_signatures
getInstrumentsportedinstruments
getInstrumentportedinstrument
invertDiatonicportedinvert_diatonic
shiftElementsportedshift_elements
repeatAppendportedrepeat_append
repeatInsertportedrepeat_insert
extractContextportedextract_context
chordifyportedchordify
splitByClassportedsplit_by
offsetMapportedoffset_map
makeMeasuresportedmake_measures
makeRestsportedmake_rests
makeTiesportedmake_ties
makeBeamsportedmake_beams
makeAccidentalsportedmake_accidentals
makeNotationportedmake_notation
extendDurationportedextend_duration
stripTiesportedstrip_ties
extendTiesportedextend_ties
flattenportedflatten
recurseportedrecurse
highestOffsetportedhighest_offset
highestTimeportedhighest_time
lowestOffsetportedlowest_offset
secondsportedseconds
metronomeMarkBoundariesportedmetronome_mark_boundaries
metadataportedmetadata
beatDurationportedbeat_duration
beatAndMeasureFromOffsetportedbeat_and_measure_from_offset
transposeportedtranspose
scaleOffsetsportedscale_offsets
scaleDurationsportedscale_durations
augmentOrDiminishportedaugment_or_diminish
quantizeportedquantize
expandRepeatsportedexpand_repeats
sliceByQuarterLengthsportedslice_by_quarter_lengths
sliceByGreatestDivisorportedslice_by_greatest_divisor
sliceAtOffsetsportedslice_at_offsets
sliceByBeatportedslice_by_beat
hasMeasuresportedhas_measures
hasVoicesportedhas_voices
hasPartLikeStreamsportedhas_part_like_streams
isTwelveToneportedis_twelve_tone
isWellFormedNotationportedis_well_formed_notation
notesAndRestsportednotes_and_rests
notesportednotes
pitchesportedpitches
findConsecutiveNotesportedfind_consecutive_notes
melodicIntervalsportedmelodic_intervals
findGapsportedfind_gaps
isGaplessportedis_gapless
getOverlapsportedget_overlaps
isSequenceportedis_sequence
simultaneousAttacksportedsimultaneous_attacks
attachIntervalsBetweenStreamsportedharmonic_intervals
playingWhenAttackedportedplaying_when_attacked
allPlayingWhileSoundingportedall_playing_while_sounding
makeVoicesportedmake_voices
voicesToPartsportedvoices_to_parts
explodeportedexplode
flattenUnnecessaryVoicesportedflatten_unnecessary_voices
lyricsportedlyrics
activateVariantsportedactivate_variants
showVariantAsOssialikePartportedshow_variant_as_ossialike_part
▶Measurestream/base.py crate 8 of 9
1 to port

A bar of music. A crate stream of kind Measure carries its own barlines and padding, and what a bar and a beat last is read off the metre.

music21Cratemusic21-rs
mergeAttributesmissingwhat clone_empty carries over
measureNumberWithSuffixportednumber_with_suffix
makeNotationportedmake_notation
barDurationProportionportedbar_duration_proportion
padAsAnacrusisportedpad_as_anacrusis
barDurationportedbar_duration
bestTimeSignatureportedbest_time_signature
leftBarlineportedleft_barline
rightBarlineportedright_barline
▶Partstream/base.py crate 3 of 4
1 to port

One player's line. A crate stream of kind Part or PartStaff carries the name and abbreviation music21 keeps as partName and partAbbreviation.

music21Cratemusic21-rs
mergeAttributesmissingwhat clone_empty carries over
partNameportedname
partAbbreviationportedabbreviation
makeAccidentalsportedmake_accidentals
▶Scorestream/base.py crate 8 of 9
1 to port

Every part of a piece together.

music21Cratemusic21-rs
measuremissingone measure by its number; measures answers them all, each carrying its own number
partsportedparts
measuresportedmeasures
expandRepeatsportedexpand_repeats
measureOffsetMapportedmeasure_offset_map
sliceByGreatestDivisorportedslice_by_greatest_divisor
partsToVoicesportedparts_to_voices
implodeportedimplode
makeNotationportedmake_notation
▶Opusstream/base.py crate 5 of 7
2 to port

The scores a multi-work file holds, which many an ABC or Essen collection is.

music21Cratemusic21-rs
writemissingwriting a file, which the format modules do
showmissingrendering, which the crate leaves to its caller
getNumbersportedscore_numbers
getScoreByNumberportedscore_by_number
getScoreByTitleportedscore_by_title
scoresportedscores
mergeScoresportedmerge_scores
▶percussion.py classespercussion.py crate 1 of 1

Unpitched percussion: a stroke written on a staff with no pitch to it, and a chord of them.

music21Cratemusic21-rs
PercussionChordportedPercussionChord
▶PercussionChordpercussion.py crate 2 of 2

A chord of strokes, each of which may be pitched or not. Its members are PercussionNotes rather than notes, since a stroke is not a note.

music21Cratemusic21-rs
notesportedmembers
pitchesportedpitches
▶tablature.py classestablature.py crate 8 of 8

Fretted-instrument tablature: which string is stopped at which fret, and the pitches that sounds. The four instruments music21 keeps a class each for are constructors here, a fretboard being the same thing whatever it is strung as.

music21Cratemusic21-rs
FretNoteportedFretNote
FretBoardportedFretBoard
FirstFretportedFirstFret
ChordWithFretBoardportedChordWithFretBoard
GuitarFretBoardportedguitar
UkeleleFretBoardportedukulele
BassGuitarFretBoardportedbass_guitar
MandolinFretBoardportedmandolin
▶FretBoardtablature.py crate 3 of 3
music21Cratemusic21-rs
fretNotesLowestFirstportedfret_notes_lowest_first
getFretNoteByStringportedfret_note_by_string
getPitchesportedpitches
▶ChordWithFretBoardtablature.py crate 0 of 1
1 to port

A chord symbol with a diagram under it.

music21Cratemusic21-rs
getFretNotesFromFiguremissingmusic21's own is a stub that answers nothing, its docstring a TODO: the fret notes a figure stands for are not worked out there either
▶text.py functionstext.py crate 4 of 4

Words in a score: the lyrics assembled off its notes, and an article moved to the front of a title or back to its end.

music21Cratemusic21-rs
assembleLyricsportedassemble_lyrics
assembleAllLyricsportedassemble_all_lyrics
prependArticleportedprepend_article
postpendArticleportedpostpend_article
▶TextBoxtext.py crate 2 of 2

Text standing anywhere on the page, which MusicXML writes as a credit.

music21Cratemusic21-rs
contentportedcontent
pageportedpage
▶LanguageDetectortext.py crate 2 of 3
1 to port

Which language a text is most likely in, by the letters that follow each pair of letters.

music21Cratemusic21-rs
readExcerptsmissingreads the excerpt files off the disk; the crate's excerpts are built in and the library does no file IO
mostLikelyLanguageportedmost_likely_language
mostLikelyLanguageNumericportedmost_likely_language_numeric
▶Trigramtext.py crate 4 of 6
2 to port
music21Cratemusic21-rs
measuremissingthe step that counts the letter triples, which building one does
likelymissingwhich language a trigram is nearest, which most_likely_language answers
lengthportedlength
parseExcerptportedfrom_text
similarityportedsimilarity
makeWordsportedfrom_words
▶layout.py classeslayout.py crate 5 of 10
5 to port

How a score is laid out: the page and system margins a file states, a staff's size and lines, and the parts bracketed together.

music21Cratemusic21-rs
LayoutBasemissingthe class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds
LayoutScoremissinga score regrouped into pages, systems and staves for a renderer, with the three streams below it; the crate keeps the layout a file states and renders nothing
Pagemissinga page of such a score
Systemmissinga system of such a score
Staffmissinga staff of such a score
ScoreLayoutportedScoreLayout
PageLayoutportedPageLayout
SystemLayoutportedSystemLayout
StaffLayoutportedStaffLayout
StaffGroupportedStaffGroup
▶layout.py functionslayout.py crate 0 of 4
4 to port

Reading a score's measures back off its pages and systems, which only a LayoutScore has.

music21Cratemusic21-rs
divideByPagesmissingbuilds a LayoutScore, which the crate has none of
getPageRegionMeasureNumbersmissingthe measures on a page of a LayoutScore
getSystemRegionMeasureNumbersmissingthe measures in a system of a LayoutScore
getRegionMeasureNumbersmissingthe measures in a region of a LayoutScore
▶ScoreLayoutlayout.py crate 1 of 1
music21Cratemusic21-rs
tenthsToMillimetersportedtenths_to_millimeters
▶StaffGrouplayout.py crate 2 of 2

The parts a brace or a bracket joins, and whether their barlines are drawn through.

music21Cratemusic21-rs
barTogetherportedbar_together
symbolportedsymbol
▶style.py classesstyle.py crate 1 of 10
9 to port

How something is drawn. The crate models what a reader must read back to write the same document again -- a text's font and where it sits, a line's ticks, a colour -- and the page itself it does not model. Inside music21 the wheel hands back music21's own style objects, whose subclasses carry more than one class here would.

music21Cratemusic21-rs
Enclosuremissingthe shape drawn round a text, kept as the name music21 gives it where something has one (expressions::RehearsalMark::enclosure) rather than as a type of its own
Stylemissingthe base class every style hangs off; the crate keeps the few drawing values it reads and writes beside the thing drawn
NoteStylemissinghow a note is drawn beyond its colour and its size
TextStylePlacementmissinga text style that also says which side of the staff it is on, which is display::Drawn here
BezierStylemissingthe curve of a slur
LineStylemissingthe dashes of a line
StreamStylemissinghow a whole stream is drawn
BeamStylemissinghow a beam is drawn
StyleMixinmissingwhat music21 mixes into every class it draws; nothing here has a style of its own to mix in
TextStyleportedTextStyle
▶TextStylestyle.py crate 7 of 8
1 to port
music21Cratemusic21-rs
letterSpacingmissingthe space between a text's letters: nothing the crate reads states one, and the writer is held to music21's output byte for byte on every corpus score, so there is nothing to carry across
alignVerticalportedalign_vertical
alignHorizontalportedalign_horizontal
justifyportedjustify
fontStyleportedfont_style
fontWeightportedfont_weight
fontSizeportedfont_size
fontFamilyportedfont_family
▶spanner.py classesspanner.py crate 6 of 10
4 to port

Something drawn across several notes: a slur, a hairpin, an octave line, a pedal mark. A spanner here is one value with a kind, naming the leaves it joins by their position in the stream that holds it.

music21Cratemusic21-rs
PendingAssignmentRefmissingmusic21's note to itself that a spanner is waiting for its first element, which the readers keep as a queue
SpannerAnchormissingan element standing in a stream for a spanner to hang off where there is no note to; a spanner here names positions and needs none
SpannerBundlemissingthe collection music21 keeps a stream's spanners in; a crate stream holds its own
MultiMeasureRestmissingseveral measures of rest drawn as one, which is a notation this crate does not write
SpannerportedSpanner
SlurportedSlur
RepeatBracketportedEnding
OttavaportedOttava
LineportedLine
GlissandoportedGlissando
▶Spannerspanner.py crate 3 of 14
11 to port

The leaves a spanner joins are positions in Stream::leaves, so what it holds is the stream's to hand back.

music21Cratemusic21-rs
purgeOrphansmissingdrops the elements no stream holds any more, which only a spanner keeping objects can have
purgeLocationsmissingdrops the sites it remembers, and it remembers none
getSpannedElementsByClassmissingthe elements of a class among them, which the stream holding them answers
getSpannedElementIdsmissingPython object ids
addSpannedElementsmissingadds elements by object; Spanner::new takes the positions it joins
insertFirstSpannedElementmissingputs an element first by object
hasSpannedElementmissingwhether an element is among them, which is spanned().contains
replaceSpannedElementmissingswaps one element for another by object
fillmissingfills in every element between the first and the last, which asks the stream what stands between them
getFirstmissingthe first element itself; spanned gives its position and the stream hands back what stands there
getLastmissingthe last element itself, likewise
getSpannedElementsportedspanned
isFirstportedis_first
isLastportedis_last
▶Ottavaspanner.py crate 6 of 6

An octave line, and whether the notes under it are written where they sound.

music21Cratemusic21-rs
typeportedname
shiftMagnitudeportedmagnitude
shiftDirectionportedup
intervalportedinterval
performTranspositionportedto_sounding_pitch
undoTranspositionportedto_written_pitch
▶Linespanner.py crate 5 of 6
1 to port

A bracket with a tick at each end.

music21Cratemusic21-rs
tickmissingsets both ends at once; LineEnds carries each
endTickportedend
startTickportedstart
lineTypeportedline_type
endHeightportedend_height
startHeightportedstart_height
▶Glissandospanner.py crate 2 of 2
music21Cratemusic21-rs
lineTypeportedline_type
slideTypeportedslide_type
▶repeat.py classesrepeat.py crate 13 of 16
3 to port

The marks that send the music back -- a segno, a coda, a da capo -- which are the kinds of one RepeatExpression here, and the expansion that plays them out.

music21Cratemusic21-rs
RepeatMarkmissingwhat music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back to
RepeatExpressionCommandmissingthe kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to
RepeatFindermissingfinds the repeated passages of a score so as to write it with repeat signs, which nothing here writes
RepeatExpressionportedRepeatExpression
RepeatExpressionMarkerportedis_marker
CodaportedCoda
SegnoportedSegno
FineportedFine
DaCapoportedDaCapo
DaCapoAlFineportedDaCapoAlFine
DaCapoAlCodaportedDaCapoAlCoda
AlSegnoportedAlSegno
DalSegnoportedDalSegno
DalSegnoAlFineportedDalSegnoAlFine
DalSegnoAlCodaportedDalSegnoAlCoda
Expanderportedexpand_repeats
▶repeat.py functionsrepeat.py crate 0 of 3
3 to port

Writing repeats into a score, which the crate does not do: it plays out the repeats a score already has.

music21Cratemusic21-rs
insertRepeatEndingmissingwrites an ending bracket over some measures
insertRepeatmissingwrites repeat barlines round some measures
deleteMeasuresmissingtakes measures out and renumbers the rest
▶RepeatExpressionrepeat.py crate 3 of 6
3 to port
music21Cratemusic21-rs
applyTextFormattingmissingthe font and the justification a renderer draws the words with; justify says which way they are set
setTextExpressionmissingkeeps the words as a TextExpression object
getTextExpressionmissingthe words as a TextExpression for a renderer; text is what they say
getTextportedtext
setTextportedset_text
isValidTextportedis_valid_text
▶Expanderrepeat.py crate 1 of 7
6 to port

Playing a score's repeats out, which Stream::expand_repeats does in one.

music21Cratemusic21-rs
measureMapmissingthe measures of the expansion listed for a caller to read
repeatBarsAreCoherentmissinga step of the expansion, which answers an error where the repeats make no sense
findInnermostRepeatIndicesmissinga step of the expansion
processInnermostRepeatBarsmissinga step of the expansion
getRepeatExpressionIndexmissinga step of the expansion
isExpandablemissingwhether there is anything to play out, which expanding answers
processportedexpand_repeats
▶variant.py functionsvariant.py crate 10 of 10

Another reading of a passage kept beside the one in the score: merged in from a second source, refined, gathered into blocks, and activated in place of what it replaces.

music21Cratemusic21-rs
mergeVariantsportedmerge_variants
mergeVariantScoresportedmerge_variant_scores
mergeVariantMeasureStreamsportedmerge_variant_measure_streams
mergeVariantsEqualDurationportedmerge_variants_equal_duration
mergePartAsOssiaportedmerge_part_as_ossia
addVariantportedadd_variant
refineVariantportedrefine_variant
getMeasureHashesportedmeasure_hashes
makeAllVariantsReplacementsportedmake_all_variants_replacements
makeVariantBlocksportedmake_variant_blocks
▶Variantvariant.py crate 7 of 15
8 to port
music21Cratemusic21-rs
purgeOrphansmissingdrops the elements no stream holds any more, which only a variant keeping objects can have
purgeLocationsmissingdrops the sites it remembers, and it remembers none
getElementIdsmissingPython object ids
replaceElementmissingswaps one element for another by object
highestOffsetmissingthe offset of the stream it holds, which Stream::highest_offset answers of its contents
showmissingrendering, which the crate leaves to its caller
containedSitemissingthe stream it was read out of, which is a site
replacementDurationmissingthe Duration of what it replaces; replacement_quarter_length is how long that is
highestTimeportedhighest_time
containedHighestTimeportedcontained_highest_time
containedHighestOffsetportedcontained_highest_offset
replacementQuarterLengthportedreplacement_quarter_length
lengthTypeportedlength_type
replacedElementsportedreplaced_elements
removeReplacedElementsFromStreamportedremove_replaced_elements_from_stream
▶Metadatametadata/__init__.py crate 34 of 35
1 to port

What a score says about itself. Every standard name is read and written by that name through one pair of members, where music21 keeps a property for each; STANDARD_PROPERTIES is the table of the 131 names, checked against music21's live one by metadata_parity.

music21Cratemusic21-rs
convertValuemissingreads a value as one of music21's own primitives -- a Text, a Contributor, a Date; a MetadataValue here is the text and the role it was given under
addportedadd
getCustomportedget
addCustomportedadd
setCustomportedset
uniqueNameToNamespaceNameportednamespace_name
namespaceNameToUniqueNameportedunique_name_of
isContributorUniqueNameportedis_contributor_unique_name
isStandardNameportedunique_name_of
softwareportedget
contributorsportedcontributors
copyrightportedstring_value
allportedall
addContributorportedadd_contributor
getContributorsByRoleportedcontributors_by_role
searchportedsearch
alternativeTitleportedstring_value
composerportedstring_value
composersportedget
dateCreatedportedstring_value
fileFormatportedstring_value
filePathportedstring_value
corpusFilePathportedstring_value
fileNumberportedstring_value
localeOfCompositionportedstring_value
librettistportedstring_value
librettistsportedget
lyricistportedstring_value
lyricistsportedget
movementNameportedstring_value
movementNumberportedstring_value
numberportedstring_value
opusNumberportedstring_value
titleportedtitle
bestTitleportedbest_title
▶RichMetadatametadata/__init__.py crate 0 of 4
4 to port

The numbers music21 caches beside a score's metadata so that its corpus can be searched without parsing every file again.

music21Cratemusic21-rs
mergemissingtakes in another score's cached numbers
getSourcePathmissingwhere the file sits, relative to the corpus
updatemissingworks out the ambitus, the key signatures, the time signatures and the rest of a score and keeps them; Stream::analyze answers each of those of a score when asked
allmissingthe cached numbers beside the metadata
▶search/base.py functionssearch/base.py crate 18 of 18

Searching a stream for a run of notes: the searches themselves, and the strings music21 turns a line into so that one line can be matched against another.

music21Cratemusic21-rs
streamSearchBaseportedrun_over
rhythmicSearchportedrhythmic_search
noteNameSearchportednote_name_search
noteNameRhythmicSearchportednote_name_rhythmic_search
approximateNoteSearchportedapproximate_note_search
approximateNoteSearchNoRhythmportedapproximate_note_search_no_rhythm
approximateNoteSearchOnlyRhythmportedapproximate_note_search_only_rhythm
approximateNoteSearchWeightedportedapproximate_note_search_weighted
translateStreamToStringportedtranslate_stream_to_string
translateDiatonicStreamToStringportedtranslate_diatonic_stream_to_string
translateIntervalsAndSpeedportedtranslate_intervals_and_speed
translateStreamToStringNoRhythmportedtranslate_stream_to_string_no_rhythm
translateStreamToStringOnlyRhythmportedtranslate_stream_to_string_only_rhythm
translateNoteToByteportedtranslate_note_to_byte
translateNoteWithDurationToBytesportedtranslate_note_with_duration_to_bytes
translateNoteTieToByteportedtranslate_note_tie_to_byte
translateDurationToBytesportedtranslate_duration_to_bytes
mostCommonMeasureRhythmsportedmost_common_measure_rhythms
▶StreamSearchersearch/base.py crate 4 of 4

A search for a list of terms, each a note name, a length or a wildcard.

music21Cratemusic21-rs
runportedrun
wildcardAlgorithmportedrun_over
rhythmAlgorithmportedrhythmic_search
noteNameAlgorithmportednote_name_search
▶LyricSearchersearch/lyrics.py crate 4 of 4

Searching the words sung in a score, which means indexing them into one text first.

music21Cratemusic21-rs
indexTextportedindex_text
indexTuplesportedindexed
indexportedindexed
searchportedsearch
▶IndexedLyricsearch/lyrics.py crate 0 of 1
1 to port
music21Cratemusic21-rs
modifymissinga named tuple's _replace, which is Python's own
▶search/segment.py functionssearch/segment.py crate 3 of 8
5 to port

Comparing scores by cutting each part into overlapping segments and matching the strings they make.

music21Cratemusic21-rs
indexScoreFilePathsmissingindexes the scores at a list of paths, which means reading files
indexOnePathmissingindexes the score at a path, likewise
saveScoreDictmissingwrites an index to a file
loadScoreDictmissingreads an index back
getDifflibOrPyLevmissingchooses between two Python libraries for the string comparison; search::difflib is the one difflib.SequenceMatcher ratio, ported
translateMonophonicPartToSegmentsportedtranslate_monophonic_part_to_segments
indexScorePartsportedindex_score_parts
scoreSimilarityportedscore_similarity
▶ReductiveNoteanalysis/reduction.py crate 2 of 2

A note of a reduction, written in a lyric under the note it reduces.

music21Cratemusic21-rs
isParsedportedis_parsed
getNoteAndTextExpressionportednote_and_text_expression
▶ScoreReductionanalysis/reduction.py crate 3 of 3
music21Cratemusic21-rs
scoreportedscore
chordReductionportedchord_reduction
reduceportedreduce
▶PartReductionanalysis/reduction.py crate 1 of 2
1 to port

How busy each part of a score is, span by span, which music21 draws as a horizontal bar graph.

music21Cratemusic21-rs
getGraphHorizontalBarWeightedDatamissingthe spans arranged for music21's bar graph; weighted_spans is what they say
processportedweighted_spans
▶ActivityMatchanalysis/correlate.py crate 1 of 1

What goes with what in a stream: every pitch against the dynamic sounding with it.

music21Cratemusic21-rs
pitchToDynamicportedpitch_to_dynamic
▶ElementTimespantree/spans.py crate 4 of 6
2 to port

One element of a stream as the stretch of time it sounds for, which is what a timespan tree holds.

music21Cratemusic21-rs
newmissinga copy with some of its values changed, which a value type here is made afresh
makeElementmissingthe element itself, which an ElementTimespan holds a reference to
quarterLengthportedquarter_length
measureNumberportedmeasure_number
getParentageByClassportedparentage
partportedpart
▶Timespantree/spans.py crate 2 of 6
4 to port
music21Cratemusic21-rs
newmissinga copy with some of its values changed
canMergemissingwhether two timespans may be joined, which only the tree's own merging asks
mergeWithmissingjoins two timespans
splitAtmissingcuts a timespan in two
offsetportedoffset
endTimeportedend_time
▶TimespanTreetree/timespanTree.py crate 11 of 17
6 to port

Every element of a score as a stretch of time, which is how the voice-leading walk reads what sounds together. The crate keeps the timespans in offset order rather than in music21's tree, there being no insertion to keep balanced.

music21Cratemusic21-rs
indexmissingwhere a timespan sits in the tree, which is its place in the list here
removeTimespanListmissingtakes several out, likewise
removeTimespanmissingtakes a timespan out of the tree; the crate reads a stream into timespans and does not edit them
toPartwiseTimespanTreesmissinga tree for each part of the score; as_timespans reads whichever stream it is given, a part included
allPartsmissingevery part the timespans came from, which the caller has in the score it read
elementmissingthe element a timespan holds, which ElementTimespan::element answers
elementEndTimeportedend_time
offsetportedlowest_position
findNextPitchedTimespanInSameStreamByClassportednext_in_same_part
findPreviousPitchedTimespanInSameStreamByClassportedprevious_in_same_part
getVerticalityAtOrBeforeportedverticality_at_or_before
iterateConsonanceBoundedVerticalitiesportedconsonance_bounded_verticalities
iterateVerticalitiesportedverticalities
iterateVerticalitiesNwiseportedverticalities_nwise
splitAtportedsplit_at
unwrapVerticalitiesportedunwrap
maximumOverlapportedmaximum_overlap
▶Verticalitytree/verticality.py crate 13 of 14
1 to port

Everything sounding at one offset, which is what a chord of a chordified score is made of.

music21Cratemusic21-rs
beatStrengthmissingthe accent weight of the offset in the measure holding it, which music21 asks the note and the note asks its site; TimeSignature::accent_weight answers it given the meter
bassTimespanportedbass_timespan
toChordportedto_chord
measureNumberportedmeasure_number
nextStartOffsetportednext_start_offset
nextVerticalityportednext
pitchSetportedpitch_set
pitchClassSetportedpitch_class_set
previousVerticalityportedprevious
startAndOverlapTimespansportedstart_and_overlap_timespans
timeToNextEventportedtime_to_next_event
makeElementportedmake_element
getAllVoiceLeadingQuartetsportedvoice_leading_quartets
getPairedMotionportedpaired_motion
▶Horizontalitytree/analysis.py crate 3 of 3

The timespans one voice sounds in a row, and whether the middle note of three is passed through or stepped away from and back.

music21Cratemusic21-rs
hasPassingToneportedhas_passing_tone
hasNeighborToneportedhas_neighbor_tone
hasNoMotionportedhas_no_motion
▶tree/fromStream.py functionstree/fromStream.py crate 2 of 4
2 to port

Reading a score into timespans.

music21Cratemusic21-rs
listOfTreesByClassmissinga tree per part per class, which the caller builds of what as_timespans reads
makeFastShallowTreeFromSortedStreammissinga tree of one stream's own elements with nothing nested, built without sorting; the crate sorts once and keeps a list
asTreeportedas_timespans
asTimespansportedas_timespans
▶tree/toStream.py functionstree/toStream.py crate 1 of 2
1 to port

Writing timespans back out as a stream.

music21Cratemusic21-rs
partwisemissingthe timespans written back out as a part each, which is the score they were read from
chordifiedportedchordify
▶features/base.py functionsfeatures/base.py crate 5 of 5

The machinery round the feature extractors: finding one by its id, and the vector a stream gives for all of them. The 72 jSymbolic extractors and the 24 native ones are rows of a generated table rather than a class each, and features_parity checks that table against music21's live classes.

music21Cratemusic21-rs
allFeaturesAsListportedall_features_as_list
extractorsByIdportedextractors_by_id
extractorByIdportedextractor_by_id
vectorByIdportedvector_by_id
getIndexportedindex_of
▶Featurefeatures/base.py crate 0 of 2
2 to port

What one extractor found: the numbers, and what each of them is called.

music21Cratemusic21-rs
prepareVectorsmissingmakes room for the numbers before they are worked out, which building one does
normalizemissingdivides the numbers by their sum, which Extractor::extract does where the extractor asks for it
▶FeatureExtractorfeatures/base.py crate 3 of 7
4 to port

One extractor: its id, how many numbers it gives, and what it reads off a stream. music21 keeps the stream and the half-built feature on the object; here an extractor is a row of a table and reading is a function of the data.

music21Cratemusic21-rs
setDatamissinghands the extractor the stream to read, which extract takes as an argument
fillFeatureAttributesmissingcopies the extractor's own id and name onto the feature it is filling in
prepareFeaturemissingmakes the blank feature and fills its attributes in, which blank answers
processmissingthe reading itself, which is the row's own function and runs in extract
getAttributeLabelsportedattribute_labels
extractportedextract
getBlankFeatureportedblank
▶StreamFormsfeatures/base.py crate 8 of 14
6 to port

The readings of a stream every extractor shares, each worked out once when it is first asked for. music21 keys them by name in a dictionary; here each is a member of the data, and the ones only one extractor reads are worked out where it reads them.

music21Cratemusic21-rs
keysmissingthe names music21 looks a form up by
formSetClassHistogrammissinghow often each set class comes, which the extractors that read it work out where they read it
formPitchClassSetHistogrammissinghow often each pitch-class set comes, likewise
formTypesHistogrammissinghow often each written value comes, likewise
formGetElementsByClassMeasuremissingthe measures of the stream, which Stream::measures answers
formBeatHistogrammissinghow often each beat strength comes, which the extractor reading it works out
formPartitionByInstrumentportedpartition_by_instrument
formChordifyportedchordified_chords
formQuarterLengthHistogramportedquarter_length_histogram
formMidiPitchHistogramportedmidi_pitch_histogram
formPitchClassHistogramportedpitch_class_histogram
formMidiIntervalHistogramportedmidi_interval_histogram
formContourListportedcontour_list
formSecondsMapportedseconds_map
▶DataInstancefeatures/base.py crate 1 of 5
4 to port

One subject prepared for extraction: the stream with its ties stripped, each part and each voice of it prepared on its own, and every reading an extractor may ask for.

music21Cratemusic21-rs
setupPostStreamParsemissingthe second half of reading the stream in, which building one does in one
setClassLabelmissingthe class a subject belongs to for the data set it is in; DataSet::add_data takes it beside the subject
getClassValuemissingthat class, likewise
getIdmissingthe name a subject goes by, which DataSet::add_data takes beside it
parseStreamportednew
▶DataSetfeatures/base.py crate 9 of 12
3 to port

Several subjects run through the same extractors, written out as a table.

music21Cratemusic21-rs
getClassPositionLabelsmissingwhere the class column sits, which the caller knows of the labels it asked for
addMultipleDatamissingadds several subjects at once, which is add_data in a loop
writemissingwrites the table to a file, which the library does not do: to_text is the text to write
getClassLabelportedclass_label
addFeatureExtractorsportedadd_extractors
getAttributeLabelsportedattribute_labels
getDiscreteLabelsporteddiscrete_labels
addDataportedadd_data
processportedprocess
getFeaturesAsListportedfeatures_as_list
getUniqueClassValuesportedunique_class_values
getStringportedto_text
▶braille/basic.py functionsbraille/basic.py crate 27 of 27

One element of a score in braille: a note, a rest, a chord, a clef, a signature, a dynamic, a word.

music21Cratemusic21-rs
barlineToBrailleportedbarline_to_braille
chordToBrailleportedchord_to_braille
pitchToOctaveportedpitch_to_octave
clefToBrailleportedclef_to_braille
dynamicToBrailleporteddynamic_to_braille
instrumentToBrailleportedinstrument_to_braille
keySigToBrailleportedkey_sig_to_braille
metronomeMarkToBrailleportedmetronome_mark_to_braille
yieldBrailleArticulationsportednote_to_braille
noteToBrailleportednote_to_braille
handlePitchWithAccidentalportednote_to_braille
handleArticulationsportednote_to_braille
handleExpressionsportednote_to_braille
restToBrailleportedrest_to_braille
tempoTextToBrailleportedtempo_text_to_braille
textExpressionToBrailleportedtext_expression_to_braille
timeSigToBrailleportedtime_sig_to_braille
showOctaveWithNoteportedshow_octave_with_note
transcribeHeadingportedtranscribe_heading
transcribeNoteFingeringportedtranscribe_note_fingering
transcribeSignaturesportedtranscribe_signatures
brailleUnicodeToBrailleAsciiportedbraille_unicode_to_braille_ascii
brailleAsciiToBrailleUnicodeportedbraille_ascii_to_braille_unicode
brailleUnicodeToSymbolsportedbraille_unicode_to_symbols
yieldDotsportedyield_dots
wordToBrailleportedword_to_braille
numberToBrailleportednumber_to_braille
▶braille/translate.py functionsbraille/translate.py crate 7 of 8
1 to port

A whole score in braille, part by part or on joined staves.

music21Cratemusic21-rs
opusToBraillemissingevery score of an opus one after another, which is score_to_braille of each
objectToBrailleportedelement_to_braille
streamToBrailleportedstream_to_braille
scoreToBrailleportedscore_to_braille
metadataToStringportedmetadata_to_string
measureToBrailleportedmeasure_to_braille
partToBrailleportedpart_to_braille
keyboardPartsToBrailleportedkeyboard_parts_to_braille
▶BrailleTextbraille/text.py crate 11 of 11

The page the braille is written onto: its lines, and what may still fit on the one being written.

music21Cratemusic21-rs
showHandportedset_show_hand
addHeadingportedadd_heading
addLongExpressionportedadd_long_expression
addToNewLineportedadd_to_new_line
appendOrInsertCurrentportedappend_or_insert_current
addInaccordportedadd_inaccord
addMeasureNumberportedadd_measure_number
optionalAddKeyboardSymbolsAndDotsportedoptional_add_keyboard_symbols_and_dots
addSignaturesportedadd_signatures
makeNewLineportedmake_new_line
recenterHeadingsportedrecenter_headings
▶BrailleTextLinebraille/text.py crate 5 of 5
music21Cratemusic21-rs
appendportedappend
insertportedinsert
canAppendportedcan_append
canInsertportedcan_insert
lastHyphenToSpaceportedlast_hyphen_to_space
▶BrailleKeyboardbraille/text.py crate 2 of 2
music21Cratemusic21-rs
makeNewLinesportedmake_new_lines
addNoteGroupingsportedadd_note_groupings
▶braille/lookup.py functionsbraille/lookup.py crate 2 of 3
1 to port

The braille cells music21 writes each thing with, which are tables here rather than dictionaries built at import.

music21Cratemusic21-rs
makeBrailleDictionarymissingbuilds music21's dictionary of cells at import; the tables here are written out
dotsAddporteddots_add
makePitchNameToNotesportedpitch_name_to_note
▶braille/segment.py functionsbraille/segment.py crate 6 of 10
4 to port

A part cut into the segments braille is written in, each a run of elements that belong together.

music21Cratemusic21-rs
setGroupingGlobalsmissingmusic21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says instead
setAffinityCodemissingwhich kind of segment an element belongs in, which extract_braille_elements says as it reads
areGroupingsIdenticalmissingwhether two groupings are the same, which the segment asks of its own
splitMeasuremissingcuts a measure in two so that the braille fits, which split_note_grouping does of the grouping
findSegmentsportedfind_segments
prepareSlurredNotesportedprepare_slurred_notes
getRawSegmentsportedget_raw_segments
extractBrailleElementsportedextract_braille_elements
prepareBeamedNotesportedprepare_beamed_notes
splitNoteGroupingportedsplit_note_grouping
▶BrailleSegmentbraille/segment.py crate 4 of 17
13 to port

One segment written out. music21 takes the segment apart member by member -- the heading, the measure number, each grouping -- where transcribe does the whole of it in order, so those steps are not members here.

music21Cratemusic21-rs
addDummyRestsmissinga step of the transcription: the rests that stand before a measure number
extractMeasureNumbermissinga step of the transcription
extractHeadingmissinga step of the transcription: the key, the meter and the tempo over the first measure
extractInaccordGroupingmissinga step of the transcription: the voices written one after another
extractLongExpressionGroupingmissinga step of the transcription
showLeadingOctaveFromNoteGroupingmissinga step of the transcription: whether the first note of a grouping shows its octave
needsSplitToFitmissinga step of the transcription: whether a grouping must be split to fit the line
splitNoteGroupingAndTranscribemissinga step of the transcription, which split_note_grouping does the splitting half of
extractNoteGroupingmissinga step of the transcription
addRepeatSymbolsmissinga step of the transcription: the sign for a measure repeated
extractSignatureGroupingmissinga step of the transcription
extractTempoTextGroupingmissinga step of the transcription
consolidatemissinga step of the transcription: the groupings of one kind joined into one
brailleTextportedtranscribe
transcribeportedtranscribe
addGroupingAttributesportedadd_grouping_attributes
fixArticulationsportedfix_articulations
▶BrailleGrandSegmentbraille/segment.py crate 3 of 5
2 to port

A keyboard part written on joined staves, the two hands' groupings paired.

music21Cratemusic21-rs
extractHeadingmissinga step of the transcription
extractNoteGroupingmissinga step of the transcription
brailleTextportedtranscribe
yieldCombinedGroupingKeysportedcombined_keys
transcribeportedtranscribe
▶StreamAligneralpha/analysis/aligner.py crate 9 of 14
5 to port

Two readings of the same music lined up against each other -- a score read by an optical reader against the same music played in -- by the edit distance between their hashes.

music21Cratemusic21-rs
insertCostmissingwhat an insertion costs, which is one everywhere
deleteCostmissingwhat a deletion costs, likewise
substitutionCostmissingwhat a substitution costs, which the hashes' difference says
tupleEqualityWithoutReferencemissingwhether two hashes are equal but for which note they came from, which comparing them answers
showChangesmissingprints the changes, and colours the notes of the score to show them
getDefaultHasherportednew
alignportedalign
makeHashedStreamsportedalign
setupDistanceMatrixportedalign_hashed
populateDistanceMatrixportedalign_hashed
getPossibleMovesFromLocationportedalign_hashed
getOpFromLocationportedalign_hashed
calculateNumSimilaritiesportedchanges_count
calculateChangesListportedalign_hashed
▶Hasheralpha/analysis/hasher.py crate 2 of 7
5 to port

A stream's notes as hashes, each as much or as little of the note as the caller asked to compare.

music21Cratemusic21-rs
setupValidTypesAndStateVarsmissingreads the switches into the state music21 hashes by, which are the fields of a Hasher here
hashMeasuresmissingthe measures hashed one at a time, which is hash_stream of each
addHashToFinalHashmissingappends one hash to the list being built
addNoteHashWithReferenceToFinalHashmissingappends a note's hash with the note it came from, likewise
addNoteHashToFinalHashmissingappends a note's hash, likewise
setupTupleListportedtuple_list
hashStreamportedhash_stream
▶alpha/analysis/fixer.py functionsalpha/analysis/fixer.py crate 1 of 1

Mending one reading of a score against another: the notes within a length, and the fixes themselves.

music21Cratemusic21-rs
getNotesWithinDurationportednotes_within_duration
▶OrnamentFixeralpha/analysis/fixer.py crate 2 of 3
1 to port

Where the played reading trills or turns and the read one does not, the ornament is written onto the read one.

music21Cratemusic21-rs
addOrnamentmissingwrites the ornament onto the read note, which fix does where it finds one
findOrnamentportedfind_ornament
fixportedfix
▶EnharmonicFixeralpha/analysis/fixer.py crate 1 of 8
7 to port

Where the two readings spell the same sound differently, the played spelling wins.

music21Cratemusic21-rs
isEnharmonicmissingwhether two notes sound alike, which is Pitch::is_enharmonic
hasAccmissingwhether a note carries an accidental, which is Pitch::accidental_is_written
hasNatAccmissingwhether it carries a natural, likewise
hasSharpFlatAccmissingwhether it carries a sharp or a flat, likewise
stepEqmissingwhether two notes stand on the same step
stepNotEqmissingwhether they do not
intervalTooBigmissingwhether the two are too far apart to be a misspelling, which the fix asks as it goes
fixportedfix_enharmonics
▶alpha/analysis/ornamentRecognizer.py functionsalpha/analysis/ornamentRecognizer.py crate 1 of 1

How long the notes of an ornament last, written out.

music21Cratemusic21-rs
calculateTrillNoteDurationportedornament_note_quarter_length
▶TrillRecognizeralpha/analysis/ornamentRecognizer.py crate 1 of 1

Whether a run of notes is a trill written out, and which trill it is.

music21Cratemusic21-rs
recognizeportedrecognize
▶TurnRecognizeralpha/analysis/ornamentRecognizer.py crate 2 of 2
music21Cratemusic21-rs
isAcceptableIntervalportedis_acceptable_interval
recognizeportedrecognize
▶OrnamentRecognizeralpha/analysis/ornamentRecognizer.py crate 2 of 2
music21Cratemusic21-rs
calculateOrnamentNoteQlportedornament_note_quarter_length
calculateOrnamentTotalQlportedornament_total_quarter_length
▶alpha/analysis/search.py functionsalpha/analysis/search.py crate 1 of 1

Runs of notes that walk a scale, found in a part.

music21Cratemusic21-rs
findConsecutiveScaleportedfind_consecutive_scale
▶ScoreCorrectoromr/correctors.py crate 10 of 14
4 to port

Mending a score read by an optical reader against itself: a measure that reads oddly is compared with the same measure of the other parts and with the rest of its own part, and the likeliest reading wins.

music21Cratemusic21-rs
runPriorModelmissingmusic21's measure of how much the correction helped, which PriorsIntegrationScore carries
getMeasureSlicemissingthe same measure across every part, which vertical_probability_dist reads as it goes
getVerticalProbabilityDistributionSinglePartmissinga step of the vertical correction, which vertical_probability_dist does for every part at once
getVerticalProbabilityDistributionSinglePartSingleMeasuremissinga step of the same
runportedrun
getAllHashesportedall_hashes
getSinglePartportedsingle_part_mut
runHorizontalCorrectionModelportedrun_horizontal_correction_model
getAllIncorrectMeasuresportedall_incorrect_measures
verticalProbabilityDistportedvertical_probability_dist
runVerticalSearchportedrun_vertical_search
substituteOneMeasureContentsForAnotherportedsubstitute_measure
runVerticalCorrectionModelportedrun_vertical_correction_model
generateCorrectedScoreportedgenerate_corrected_score
▶SinglePartomr/correctors.py crate 6 of 7
1 to port
music21Cratemusic21-rs
getMeasuresmissingthe measures of the part, which the Stream it was read from holds
getIncorrectMeasureIndicesportedfind_incorrect_measures
getSequenceHashesFromMeasureStreamportedhashed_notes
horizontalProbabilityDistportedhorizontal_probability_dist
runHorizontalSearchportedrun_horizontal_search
runHorizontalCorrectionModelportedrun_horizontal_correction_model
getProbabilityDistributionportedprobability_distribution
▶MeasureHashomr/correctors.py crate 10 of 15
5 to port

One measure as a string, a character a note, so that two measures may be compared as text.

music21Cratemusic21-rs
setSequenceMatchermissingkeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported
differenceProbabilityForOneOpCodemissingthe odds of one edit, which probability_based_on_changes sums
getProbabilityOnEqualitymissingthe odds of two measures reading alike, likewise
getProbabilityOnOmissionmissingthe odds of a note left out, likewise
getProbabilityOnAdditionmissingthe odds of a note put in, likewise
getHashStringportedmeasure_hash
hashNoteportedmeasure_hash
hashGraceportedmeasure_hash
hashRestportedmeasure_hash
hashQuarterLengthportedmeasure_hash
getMeasureDifferenceportedmeasure_difference
getOpCodesportedopcodes
getProbabilityBasedOnChangesportedprobability_based_on_changes
getProbabilityOnSubstituteportedprobability_on_substitute
getProbabilityFromOneCharSubportedprobability_from_one_char_sub
▶MeasureSliceomr/correctors.py crate 0 of 2
2 to port

The same measure across every part, which is what a doubtful measure is compared against.

music21Cratemusic21-rs
getSliceHashesmissingthe hashes of the measure across every part, which ScoreCorrector::vertical_probability_dist reads as it goes
runSliceSearchmissingthe search across the parts, which run_vertical_search does
▶omr/evaluators.py functionsomr/evaluators.py crate 2 of 2

How well the mending did: a score with mistakes put in on purpose, mended, and compared with the one it was made from.

music21Cratemusic21-rs
evaluateCorrectingModelportedevaluate_correcting_model
autoCorrelationBestMeasureportedauto_correlation_best_measure
▶OmrGroundTruthPairomr/evaluators.py crate 4 of 10
6 to port
music21Cratemusic21-rs
debugmissingmusic21's switch for printing what it is doing
parseAllmissingreads both scores from their files
hashAllmissinghashes both scores, which building the pair does
substCostmissingwhat a substitution costs, which the hashes' difference says
insertCostmissingwhat an insertion costs, which is one everywhere
deleteCostmissingwhat a deletion costs, likewise
getOmrScoreportedomr
getGroundScoreportedground
minEditDistportedmin_edit_distance
getDifferencesporteddifferences
▶audioSearch/__init__.py functionsaudioSearch/__init__.py crate 14 of 16
2 to port

Hearing a monophonic line: the pitch of each stretch of sound, the lengths they make, and the notes that come of it.

music21Cratemusic21-rs
getFrequenciesFromMicrophonemissinglistens to a microphone, which the library does not do
getFrequenciesFromPartialAudioFilemissingreads part of a file as it is being recorded
histogramportedhistogram
autocorrelationFunctionportedautocorrelation_frequency
prepareThresholdsportedprepare_thresholds
interpolationportedinterpolation
normalizeInputFrequencyportednormalize_input_frequency
pitchFrequenciesToObjectsportedpitch_frequencies_to_objects
getFrequenciesFromAudioFileportedfrequencies_from_wav
detectPitchFrequenciesporteddetect_pitch_frequencies
smoothFrequenciesportedsmooth_frequencies
joinConsecutiveIdenticalPitchesportedjoin_consecutive_identical_pitches
quantizeDurationportedquantize_duration
quarterLengthEstimationportedquarter_length_estimation
notesAndDurationsToStreamportednotes_and_durations_to_stream
decisionProcessporteddecision_process
▶search/serial.py classessearch/serial.py crate 3 of 8
5 to port

The classes music21's serial search is written as. The crate has one matcher taking Matching, since the five subclasses differ only in how a run is normalized before it is compared.

music21Cratemusic21-rs
TransposedSegmentMatchermissingone of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes
TransformedSegmentMatchermissingMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other
MultisetSegmentMatchermissingMatching::Multiset, which compares the pitch classes in any order
TransposedMultisetMatchermissingMatching::TransposedMultiset
TransposedInvertedMultisetMatchermissingMatching::TransposedInvertedMultiset
ContiguousSegmentOfNotesportedContiguousSegment
ContiguousSegmentSearcherportedContiguousSegmentSearcher
SegmentMatcherportedSegmentMatcher
▶ContiguousSegmentOfNotessearch/serial.py crate 6 of 7
1 to port

A run of a stream's notes and chords a search found: where it starts, the pitch classes it was read as, and the segment it was matched to.

music21Cratemusic21-rs
getActiveMatchedRowsmissingtwo ToneRows built from the active and matched fields, which a caller builds itself; what music21 uses them for is the transformations between them, which zero_centered_transformations_from_matched and its original-centred twin answer
startMeasureNumberportedstart_measure
startOffsetportedstart_offset
zeroCenteredTransformationsFromMatchedportedzero_centered_transformations_from_matched
originalCenteredTransformationsFromMatchedportedoriginal_centered_transformations_from_matched
readPitchClassesFromBottomportedpitch_classes_from_bottom
getDistinctPitchClassesporteddistinct_pitch_classes
▶ContiguousSegmentSearchersearch/serial.py crate 1 of 11
10 to port

Every run of a given length in a stream, read in one of music21's ways of reading repetitions, chords in or out.

music21Cratemusic21-rs
getSearchBoundMethodmissingmusic21 chooses a method by name for each way of reading repetitions; the crate's one walk takes Repetitions as an argument
addActiveChordsmissinga step inside that walk: the crate reads a chord's pitch classes where it meets one
searchIncludeAllExcludemissingone of the twelve methods that choice picks between, which the one walk answers for
searchIncludeAllIncludemissingas searchIncludeAllExclude
searchSkipConsecutiveExcludemissingas searchIncludeAllExclude
searchSkipConsecutiveIncludemissingas searchIncludeAllExclude
searchIgnoreAllExcludemissingas searchIncludeAllExclude
searchIgnoreAllIncludemissingas searchIncludeAllExclude
searchRowsOnlyExcludemissingas searchIncludeAllExclude
searchRowsOnlyIncludemissingas searchIncludeAllExclude
byLengthportedby_length
▶SegmentMatchersearch/serial.py crate 3 of 9
6 to port

The runs of a stream that are segments searched for, and the stream with each marked by a lyric. Matching says how a run is told the same as a segment, which is music21's five subclasses.

music21Cratemusic21-rs
getContiguousSegmentsByLengthmissingthe searcher's by_length, which find asks for itself
findOneIgnoreAllmissingone of the two branches of music21's find, which it picks by how repetitions are read; the crate's find is the one walk
findOneOtherRepsmissingthe other branch of find
checkSearchedAlreadymissingwhether a segment the same as one already searched for is to be passed over, which find keeps as it goes
normalizemissinghow a run is read before it is compared, which is what Matching says: the pitch classes, the intervals they make, or the row they are
equalSubsetmissingthe comparison Matching decides, which the crate does inside find
repsportedrepetitions
includeChordsportedinclude_chords
findportedfind
▶search/serial.py functionssearch/serial.py crate 6 of 6

Module-level: the six functions marking a stream's runs with the name of the segment each matched. Each is SegmentMatcher::label given the Matching that function's name says.

music21Cratemusic21-rs
labelSegmentsportedlabel
labelTransposedSegmentsportedlabel
labelTransformedSegmentsportedlabel
labelMultisetsportedlabel
labelTransposedMultisetsportedlabel
labelTransposedAndInvertedMultisetsportedlabel

Every public member of the music21 classes the crate ports, read from the submodule and matched to a pub fn by the crate's naming convention, with data/feature_map.toml holding the renames the convention does not give. A reason for not porting a member is shown beside it but still counts against the total.

Still to port

287 members, 0 with no reason given

music21 memberWhy notWheel
left out, with a reason — 287
Pitch.groupspitch.pythe group names music21 picks elements out of a stream by (getElementsByGroup); a stream here picks by kind and by position, and nothing in it carries group namesin the wheel
Pitch.informClientpitch.pyobserver callback for a containing note; there is nonein the wheel
ConcreteScale.isConcretescale/__init__.pyevery Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without onein the wheel
ConcreteScale.abstractscale/__init__.pya scale's pattern is its ScaleType or the steps it was given, read with scale_type and custom_steps; there is no abstract scale object beside it, and the wheel hands music21 one built from thosein the wheel
ConcreteScale.writescale/__init__.pywrites a file, and this library does no file IO: a caller saves the Scala text scala_data and file_string give, or a score musicxml::to_musicxml writesnot in the wheel
ConcreteScale.showscale/__init__.pyopens the scale in another program, which is the caller's to donot in the wheel
Scalescale/__init__.pythe abstract basein the wheel
AbstractScalescale/__init__.pya pattern with no tonic is a ScaleType or a list of steps; the wheel's AbstractScale stands on those and builds music21's IntervalNetwork from themin the wheel
AbstractDiatonicScalescale/__init__.pythe IntervalNetwork layernot in the wheel
AbstractOctatonicScalescale/__init__.pythe IntervalNetwork layernot in the wheel
AbstractHarmonicMinorScalescale/__init__.pythe IntervalNetwork layernot in the wheel
AbstractMelodicMinorScalescale/__init__.pythe IntervalNetwork layernot in the wheel
AbstractCyclicalScalescale/__init__.pythe IntervalNetwork layernot in the wheel
AbstractOctaveRepeatingScalescale/__init__.pythe IntervalNetwork layernot in the wheel
ConcreteScalescale/__init__.pyrealized by Scale, StepScale and ScalaScalein the wheel
DiatonicScalescale/__init__.pythe diatonic modes are ScaleType variantsin the wheel
TimeSignature.resetValuesmeter/base.pyrebuilding a meter in place; a new one is built insteadin the wheel
TimeSignature.loadmeter/base.pyrebuilding a meter in place; a new one is built insteadin the wheel
Instrument.partIdRandomizeinstrument.pymakes an id up out of the clock and a random number; the crate keeps the id a score gives (part_id) and makes none up, reading no clock -- the wheel gives a random one as music21 doesin the wheel
Instrument.instrumentIdRandomizeinstrument.pymakes an id up out of the clock and a random number; the crate keeps the id a score gives (instrument_id) and makes none up, reading no clock -- the wheel gives a random one as music21 doesin the wheel
Duration.informClientduration.pyobserver callback for a containing note; there is nonein the wheel
Duration.currentComponentsduration.pythe working-out is not deferred here, so there is no half-worked-out state to readin the wheel
Sieve.expandsieve.pywhich reading answers is not state on the sieve here; compressed hands back the other one and the sieve as written stays as it wasin the wheel
Sieve.setZsieve.pythe range is an argument of each question here, not state on the sievein the wheel
Sieve.setZRangesieve.pythe range is an argument of each question here, not state on the sievein the wheel
Sieve.setSegmentFormatsieve.pythe segment format is an argument of each question here, not state on the sievein the wheel
Sieve.representsieve.pythe sieve is written by Display, which is not a function the map can namein the wheel
Volume.cachedRealizedvolume.pythe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 doesin the wheel
Volume.cachedRealizedStrvolume.pythe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 doesin the wheel
Note.pitchChangednote.pyobserver callback; there is nonein the wheel
TsvHandler.prepStreamromanText/tsvConverter.pya step inside the reader: from_tsv prepares the measures from the table's own numbers and meters itself and hands back the whole scorenot in the wheel
M21toTSV.writeromanText/tsvConverter.pywrites a file, which the library does not do: to_tsv hands back the textnot in the wheel
CTSong.toScoreromanText/clercqTemperley.pymusic21's own deprecated name for toPart, which it will take outnot in the wheel
CTRule.parentromanText/clercqTemperley.pymusic21 keeps a weak reference from a rule back to the song holding it, and reads the rule's key, meter and other rules through it; a song here expands its own rules (CtSong::to_part), so nothing needs the way backnot in the wheel
CTRule.expandExpansionContentromanText/clercqTemperley.pya step inside the expansion, which the crate drives from the song rather than from the rule keeping the statenot in the wheel
CTRule.expandSimpleContentromanText/clercqTemperley.pya step inside the expansion, as expandExpansionContentnot in the wheel
CTRule.addOptionalTieAndLyricsromanText/clercqTemperley.pya step inside the expansion, which ties the chord before as it writes the one afternot in the wheel
CTRule.insertKsTsromanText/clercqTemperley.pya step inside the expansion: the crate writes the key and the meter into a measure as it builds itnot in the wheel
addNewChordSymbolharmony.pymutates music21's global chord-type table; the crate's is a constant, and the wheel's chord symbols read music21's live table wherever music21 is there to edit itnot in the wheel
changeAbbreviationForharmony.pymutates music21's global chord-type table; the crate's is a constant, and the wheel's chord symbols read music21's live table wherever music21 is there to edit itnot in the wheel
removeChordSymbolsharmony.pymutates music21's global chord-type table; the crate's is a constant, and the wheel's chord symbols read music21's live table wherever music21 is there to edit itnot in the wheel
getPathsscale/scala/__init__.pywhere the archive's files sit on disk; the archive here is one bundled table and has no pathsnot in the wheel
Tie.idtie.pythe address of the Python object, which is how music21 tells one tie from another; a tie here is a value its note holds, and has no identity apart from itin the wheel
MeterSequence.partitionmeter/core.pyone setter dispatching on the type of what it is handed; the three partitions it dispatches to are each portedin the wheel
MeterSequence.loadmeter/core.pyrebuilding a sequence in place; a new one is built insteadin the wheel
Ornament.fillListOfRealizedNotesexpressions.pya helper realize fills its lists with; realize is portedin the wheel
showResolutionsfiguredBass/resolution.pyputs the voicings in a score and opens it in another program; Realization::generate_realization_from_possibility_progression writes voicings as a score, and opening a program is the caller's to donot in the wheel
Segment.singlePossibilityRulesfiguredBass/segment.pymusic21's table of its own Python functions for printing; the rules are Rules and the segment runs themin the wheel
Segment.consecutivePossibilityRulesfiguredBass/segment.pymusic21's table of its own Python functions for printing; the rules are Rules and the segment runs themin the wheel
Segment.specialResolutionRulesfiguredBass/segment.pymusic21's table of its own Python functions for printing; the rules are Rules and the segment runs themin the wheel
printRulesfiguredBass/segment.pyprints music21's rule tables, which hold its Python functionsnot in the wheel
KeyWeightKeyAnalysis.solutionLegendanalysis/discrete.pythe colour legend of a keyscape graph; presentationnot in the wheel
KeyWeightKeyAnalysis.solutionUnitStringanalysis/discrete.pythe unit a graph's legend is labelled with; presentationnot in the wheel
KeyWeightKeyAnalysis.solutionToColoranalysis/discrete.pythe colour a key is drawn in; presentationnot in the wheel
Ambitus.solutionLegendanalysis/discrete.pythe colour legend of a graph; presentationnot in the wheel
Ambitus.solutionUnitStringanalysis/discrete.pythe unit a graph's legend is labelled with; presentationnot in the wheel
Ambitus.solutionToColoranalysis/discrete.pythe colour a span is drawn in; presentationnot in the wheel
MelodicIntervalDiversity.solutionToColoranalysis/discrete.pythe colour a count is drawn in; presentationin the wheel
EnharmonicSimplifier.getProductanalysis/enharmonics.pylists every combination of the spellings at once; best_choice walks them one at a timein the wheel
Stream.writestream/base.pywriting a file, which the format modules donot in the wheel
Stream.showstream/base.pyrendering, which the crate leaves to its callernot in the wheel
Stream.firststream/base.pyas elementOffset: events answers in ordernot in the wheel
Stream.laststream/base.pyas elementOffset: events answers in ordernot in the wheel
Stream.clefstream/base.pythe clef a stream opens with; the clef in force is read by in_force_before, a crate stream keeping no clef of its ownin the wheel
Stream.clearstream/base.pyempties a stream in place; clone_empty answers an empty one of the same kindnot in the wheel
Stream.mergeAttributesstream/base.pywhat clone_empty carries overnot in the wheel
Stream.indexstream/base.pyas elementOffsetnot in the wheel
Stream.removestream/base.pytakes a named object out; retain_leaves and remove_event take out by place or by testin the wheel
Stream.setElementOffsetstream/base.pyas elementOffset: events_mut reaches each in placein the wheel
Stream.elementOffsetstream/base.pyasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offsetin the wheel
Stream.storeAtEndstream/base.pyelements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own herenot in the wheel
Stream.isAtEndstream/base.pyneeds the sites a crate stream does not keepnot in the wheel
Stream.setDerivationMethodstream/base.pyderivations, which a crate stream does not keepnot in the wheel
Stream.replacestream/base.pyswaps one object for another; events_mut reaches each in placenot in the wheel
Stream.recurseReprstream/base.pymusic21's own text dump of a streamnot in the wheel
Stream.plotstream/base.pyplotting, which the crate leaves to its callernot in the wheel
Stream.addGroupForElementsstream/base.pythe group names music21 picks elements out of a stream by; nothing a crate stream holds carries themnot in the wheel
Stream.getElementsByGroupstream/base.pyas addGroupForElementsnot in the wheel
Stream.getElementByIdstream/base.pyan id on every element, which only a stream and a note carry herenot in the wheel
Stream.measurestream/base.pyone measure by its number; measures answers them all, each carrying its own numberin the wheel
Stream.transferOffsetToElementsstream/base.pymoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keepnot in the wheel
Stream.haveAccidentalsBeenMadestream/base.pya flag music21 keeps on the stream; nothing here remembers having been askednot in the wheel
Stream.sortstream/base.pya crate stream is in offset order as it is builtnot in the wheel
Stream.sortedstream/base.pyas sortin the wheel
Stream.containerInHierarchystream/base.pyneeds the sites a crate stream does not keepnot in the wheel
Stream.makeImmutablestream/base.pymusic21's mutability machinery, which a value has no need ofnot in the wheel
Stream.makeMutablestream/base.pyas makeImmutablenot in the wheel
Stream.durationstream/base.pya crate stream has no Duration of its own; highest_time answers when the last thing in it endsnot in the wheel
Stream.beatstream/base.pywhere one element sits in its bar; placed answers it for every element at once, and beat_and_measure_from_offset for a pointnot in the wheel
Stream.beatStrstream/base.pyas beatnot in the wheel
Stream.beatStrengthstream/base.pyas beatnot in the wheel
Stream.attachMelodicIntervalsstream/base.pyattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its linenot in the wheel
Measure.mergeAttributesstream/base.pywhat clone_empty carries overnot in the wheel
Part.mergeAttributesstream/base.pywhat clone_empty carries overnot in the wheel
Score.measurestream/base.pyone measure by its number; measures answers them all, each carrying its own numberin the wheel
Opus.writestream/base.pywriting a file, which the format modules donot in the wheel
Opus.showstream/base.pyrendering, which the crate leaves to its callernot in the wheel
ChordWithFretBoard.getFretNotesFromFiguretablature.pymusic21's own is a stub that answers nothing, its docstring a TODO: the fret notes a figure stands for are not worked out there eithernot in the wheel
LanguageDetector.readExcerptstext.pyreads the excerpt files off the disk; the crate's excerpts are built in and the library does no file IOnot in the wheel
Trigram.measuretext.pythe step that counts the letter triples, which building one doesnot in the wheel
Trigram.likelytext.pywhich language a trigram is nearest, which most_likely_language answersnot in the wheel
LayoutBaselayout.pythe class music21 hangs the four layouts off; layout::Layout is the one of them a stream holdsnot in the wheel
LayoutScorelayout.pya score regrouped into pages, systems and staves for a renderer, with the three streams below it; the crate keeps the layout a file states and renders nothingnot in the wheel
Pagelayout.pya page of such a scorenot in the wheel
Systemlayout.pya system of such a scorenot in the wheel
Stafflayout.pya staff of such a scorenot in the wheel
divideByPageslayout.pybuilds a LayoutScore, which the crate has none ofnot in the wheel
getPageRegionMeasureNumberslayout.pythe measures on a page of a LayoutScorenot in the wheel
getSystemRegionMeasureNumberslayout.pythe measures in a system of a LayoutScorenot in the wheel
getRegionMeasureNumberslayout.pythe measures in a region of a LayoutScorenot in the wheel
Enclosurestyle.pythe shape drawn round a text, kept as the name music21 gives it where something has one (expressions::RehearsalMark::enclosure) rather than as a type of its ownnot in the wheel
Stylestyle.pythe base class every style hangs off; the crate keeps the few drawing values it reads and writes beside the thing drawnin the wheel
NoteStylestyle.pyhow a note is drawn beyond its colour and its sizein the wheel
TextStylePlacementstyle.pya text style that also says which side of the staff it is on, which is display::Drawn herenot in the wheel
BezierStylestyle.pythe curve of a slurnot in the wheel
LineStylestyle.pythe dashes of a linenot in the wheel
StreamStylestyle.pyhow a whole stream is drawnnot in the wheel
BeamStylestyle.pyhow a beam is drawnnot in the wheel
StyleMixinstyle.pywhat music21 mixes into every class it draws; nothing here has a style of its own to mix innot in the wheel
TextStyle.letterSpacingstyle.pythe space between a text's letters: nothing the crate reads states one, and the writer is held to music21's output byte for byte on every corpus score, so there is nothing to carry acrossnot in the wheel
PendingAssignmentRefspanner.pymusic21's note to itself that a spanner is waiting for its first element, which the readers keep as a queuenot in the wheel
SpannerAnchorspanner.pyan element standing in a stream for a spanner to hang off where there is no note to; a spanner here names positions and needs nonenot in the wheel
SpannerBundlespanner.pythe collection music21 keeps a stream's spanners in; a crate stream holds its ownin the wheel
MultiMeasureRestspanner.pyseveral measures of rest drawn as one, which is a notation this crate does not writenot in the wheel
Spanner.purgeOrphansspanner.pydrops the elements no stream holds any more, which only a spanner keeping objects can havenot in the wheel
Spanner.purgeLocationsspanner.pydrops the sites it remembers, and it remembers nonenot in the wheel
Spanner.getSpannedElementsByClassspanner.pythe elements of a class among them, which the stream holding them answersnot in the wheel
Spanner.getSpannedElementIdsspanner.pyPython object idsnot in the wheel
Spanner.addSpannedElementsspanner.pyadds elements by object; Spanner::new takes the positions it joinsin the wheel
Spanner.insertFirstSpannedElementspanner.pyputs an element first by objectnot in the wheel
Spanner.hasSpannedElementspanner.pywhether an element is among them, which is spanned().containsin the wheel
Spanner.replaceSpannedElementspanner.pyswaps one element for another by objectin the wheel
Spanner.fillspanner.pyfills in every element between the first and the last, which asks the stream what stands between themnot in the wheel
Spanner.getFirstspanner.pythe first element itself; spanned gives its position and the stream hands back what stands therein the wheel
Spanner.getLastspanner.pythe last element itself, likewisein the wheel
Line.tickspanner.pysets both ends at once; LineEnds carries eachnot in the wheel
RepeatMarkrepeat.pywhat music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back tonot in the wheel
RepeatExpressionCommandrepeat.pythe kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no tonot in the wheel
RepeatFinderrepeat.pyfinds the repeated passages of a score so as to write it with repeat signs, which nothing here writesnot in the wheel
insertRepeatEndingrepeat.pywrites an ending bracket over some measuresnot in the wheel
insertRepeatrepeat.pywrites repeat barlines round some measuresnot in the wheel
deleteMeasuresrepeat.pytakes measures out and renumbers the restnot in the wheel
RepeatExpression.applyTextFormattingrepeat.pythe font and the justification a renderer draws the words with; justify says which way they are setnot in the wheel
RepeatExpression.setTextExpressionrepeat.pykeeps the words as a TextExpression objectnot in the wheel
RepeatExpression.getTextExpressionrepeat.pythe words as a TextExpression for a renderer; text is what they saynot in the wheel
Expander.measureMaprepeat.pythe measures of the expansion listed for a caller to readnot in the wheel
Expander.repeatBarsAreCoherentrepeat.pya step of the expansion, which answers an error where the repeats make no sensenot in the wheel
Expander.findInnermostRepeatIndicesrepeat.pya step of the expansionnot in the wheel
Expander.processInnermostRepeatBarsrepeat.pya step of the expansionnot in the wheel
Expander.getRepeatExpressionIndexrepeat.pya step of the expansionnot in the wheel
Expander.isExpandablerepeat.pywhether there is anything to play out, which expanding answersnot in the wheel
Variant.purgeOrphansvariant.pydrops the elements no stream holds any more, which only a variant keeping objects can havenot in the wheel
Variant.purgeLocationsvariant.pydrops the sites it remembers, and it remembers nonenot in the wheel
Variant.getElementIdsvariant.pyPython object idsnot in the wheel
Variant.replaceElementvariant.pyswaps one element for another by objectnot in the wheel
Variant.highestOffsetvariant.pythe offset of the stream it holds, which Stream::highest_offset answers of its contentsnot in the wheel
Variant.showvariant.pyrendering, which the crate leaves to its callernot in the wheel
Variant.containedSitevariant.pythe stream it was read out of, which is a sitenot in the wheel
Variant.replacementDurationvariant.pythe Duration of what it replaces; replacement_quarter_length is how long that isnot in the wheel
Metadata.convertValuemetadata/__init__.pyreads a value as one of music21's own primitives -- a Text, a Contributor, a Date; a MetadataValue here is the text and the role it was given undernot in the wheel
RichMetadata.mergemetadata/__init__.pytakes in another score's cached numbersnot in the wheel
RichMetadata.getSourcePathmetadata/__init__.pywhere the file sits, relative to the corpusnot in the wheel
RichMetadata.updatemetadata/__init__.pyworks out the ambitus, the key signatures, the time signatures and the rest of a score and keeps them; Stream::analyze answers each of those of a score when askednot in the wheel
RichMetadata.allmetadata/__init__.pythe cached numbers beside the metadatanot in the wheel
IndexedLyric.modifysearch/lyrics.pya named tuple's _replace, which is Python's ownnot in the wheel
indexScoreFilePathssearch/segment.pyindexes the scores at a list of paths, which means reading filesnot in the wheel
indexOnePathsearch/segment.pyindexes the score at a path, likewisenot in the wheel
saveScoreDictsearch/segment.pywrites an index to a filenot in the wheel
loadScoreDictsearch/segment.pyreads an index backnot in the wheel
getDifflibOrPyLevsearch/segment.pychooses between two Python libraries for the string comparison; search::difflib is the one difflib.SequenceMatcher ratio, portednot in the wheel
PartReduction.getGraphHorizontalBarWeightedDataanalysis/reduction.pythe spans arranged for music21's bar graph; weighted_spans is what they saynot in the wheel
ElementTimespan.newtree/spans.pya copy with some of its values changed, which a value type here is made afreshnot in the wheel
ElementTimespan.makeElementtree/spans.pythe element itself, which an ElementTimespan holds a reference tonot in the wheel
Timespan.newtree/spans.pya copy with some of its values changednot in the wheel
Timespan.canMergetree/spans.pywhether two timespans may be joined, which only the tree's own merging asksnot in the wheel
Timespan.mergeWithtree/spans.pyjoins two timespansnot in the wheel
Timespan.splitAttree/spans.pycuts a timespan in twonot in the wheel
TimespanTree.indextree/timespanTree.pywhere a timespan sits in the tree, which is its place in the list herenot in the wheel
TimespanTree.removeTimespanListtree/timespanTree.pytakes several out, likewisenot in the wheel
TimespanTree.removeTimespantree/timespanTree.pytakes a timespan out of the tree; the crate reads a stream into timespans and does not edit themnot in the wheel
TimespanTree.toPartwiseTimespanTreestree/timespanTree.pya tree for each part of the score; as_timespans reads whichever stream it is given, a part includednot in the wheel
TimespanTree.allPartstree/timespanTree.pyevery part the timespans came from, which the caller has in the score it readnot in the wheel
TimespanTree.elementtree/timespanTree.pythe element a timespan holds, which ElementTimespan::element answersnot in the wheel
Verticality.beatStrengthtree/verticality.pythe accent weight of the offset in the measure holding it, which music21 asks the note and the note asks its site; TimeSignature::accent_weight answers it given the meternot in the wheel
listOfTreesByClasstree/fromStream.pya tree per part per class, which the caller builds of what as_timespans readsnot in the wheel
makeFastShallowTreeFromSortedStreamtree/fromStream.pya tree of one stream's own elements with nothing nested, built without sorting; the crate sorts once and keeps a listnot in the wheel
partwisetree/toStream.pythe timespans written back out as a part each, which is the score they were read fromnot in the wheel
Feature.prepareVectorsfeatures/base.pymakes room for the numbers before they are worked out, which building one doesnot in the wheel
Feature.normalizefeatures/base.pydivides the numbers by their sum, which Extractor::extract does where the extractor asks for itnot in the wheel
FeatureExtractor.setDatafeatures/base.pyhands the extractor the stream to read, which extract takes as an argumentnot in the wheel
FeatureExtractor.fillFeatureAttributesfeatures/base.pycopies the extractor's own id and name onto the feature it is filling innot in the wheel
FeatureExtractor.prepareFeaturefeatures/base.pymakes the blank feature and fills its attributes in, which blank answersnot in the wheel
FeatureExtractor.processfeatures/base.pythe reading itself, which is the row's own function and runs in extractnot in the wheel
StreamForms.keysfeatures/base.pythe names music21 looks a form up bynot in the wheel
StreamForms.formSetClassHistogramfeatures/base.pyhow often each set class comes, which the extractors that read it work out where they read itnot in the wheel
StreamForms.formPitchClassSetHistogramfeatures/base.pyhow often each pitch-class set comes, likewisenot in the wheel
StreamForms.formTypesHistogramfeatures/base.pyhow often each written value comes, likewisenot in the wheel
StreamForms.formGetElementsByClassMeasurefeatures/base.pythe measures of the stream, which Stream::measures answersnot in the wheel
StreamForms.formBeatHistogramfeatures/base.pyhow often each beat strength comes, which the extractor reading it works outnot in the wheel
DataInstance.setupPostStreamParsefeatures/base.pythe second half of reading the stream in, which building one does in onenot in the wheel
DataInstance.setClassLabelfeatures/base.pythe class a subject belongs to for the data set it is in; DataSet::add_data takes it beside the subjectnot in the wheel
DataInstance.getClassValuefeatures/base.pythat class, likewisenot in the wheel
DataInstance.getIdfeatures/base.pythe name a subject goes by, which DataSet::add_data takes beside itnot in the wheel
DataSet.getClassPositionLabelsfeatures/base.pywhere the class column sits, which the caller knows of the labels it asked fornot in the wheel
DataSet.addMultipleDatafeatures/base.pyadds several subjects at once, which is add_data in a loopnot in the wheel
DataSet.writefeatures/base.pywrites the table to a file, which the library does not do: to_text is the text to writenot in the wheel
opusToBraillebraille/translate.pyevery score of an opus one after another, which is score_to_braille of eachnot in the wheel
makeBrailleDictionarybraille/lookup.pybuilds music21's dictionary of cells at import; the tables here are written outnot in the wheel
setGroupingGlobalsbraille/segment.pymusic21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says insteadnot in the wheel
setAffinityCodebraille/segment.pywhich kind of segment an element belongs in, which extract_braille_elements says as it readsnot in the wheel
areGroupingsIdenticalbraille/segment.pywhether two groupings are the same, which the segment asks of its ownnot in the wheel
splitMeasurebraille/segment.pycuts a measure in two so that the braille fits, which split_note_grouping does of the groupingnot in the wheel
BrailleSegment.addDummyRestsbraille/segment.pya step of the transcription: the rests that stand before a measure numbernot in the wheel
BrailleSegment.extractMeasureNumberbraille/segment.pya step of the transcriptionnot in the wheel
BrailleSegment.extractHeadingbraille/segment.pya step of the transcription: the key, the meter and the tempo over the first measurenot in the wheel
BrailleSegment.extractInaccordGroupingbraille/segment.pya step of the transcription: the voices written one after anothernot in the wheel
BrailleSegment.extractLongExpressionGroupingbraille/segment.pya step of the transcriptionnot in the wheel
BrailleSegment.showLeadingOctaveFromNoteGroupingbraille/segment.pya step of the transcription: whether the first note of a grouping shows its octavenot in the wheel
BrailleSegment.needsSplitToFitbraille/segment.pya step of the transcription: whether a grouping must be split to fit the linenot in the wheel
BrailleSegment.splitNoteGroupingAndTranscribebraille/segment.pya step of the transcription, which split_note_grouping does the splitting half ofnot in the wheel
BrailleSegment.extractNoteGroupingbraille/segment.pya step of the transcriptionnot in the wheel
BrailleSegment.addRepeatSymbolsbraille/segment.pya step of the transcription: the sign for a measure repeatednot in the wheel
BrailleSegment.extractSignatureGroupingbraille/segment.pya step of the transcriptionnot in the wheel
BrailleSegment.extractTempoTextGroupingbraille/segment.pya step of the transcriptionnot in the wheel
BrailleSegment.consolidatebraille/segment.pya step of the transcription: the groupings of one kind joined into onenot in the wheel
BrailleGrandSegment.extractHeadingbraille/segment.pya step of the transcriptionnot in the wheel
BrailleGrandSegment.extractNoteGroupingbraille/segment.pya step of the transcriptionnot in the wheel
StreamAligner.insertCostalpha/analysis/aligner.pywhat an insertion costs, which is one everywherenot in the wheel
StreamAligner.deleteCostalpha/analysis/aligner.pywhat a deletion costs, likewisenot in the wheel
StreamAligner.substitutionCostalpha/analysis/aligner.pywhat a substitution costs, which the hashes' difference saysnot in the wheel
StreamAligner.tupleEqualityWithoutReferencealpha/analysis/aligner.pywhether two hashes are equal but for which note they came from, which comparing them answersnot in the wheel
StreamAligner.showChangesalpha/analysis/aligner.pyprints the changes, and colours the notes of the score to show themnot in the wheel
Hasher.setupValidTypesAndStateVarsalpha/analysis/hasher.pyreads the switches into the state music21 hashes by, which are the fields of a Hasher herenot in the wheel
Hasher.hashMeasuresalpha/analysis/hasher.pythe measures hashed one at a time, which is hash_stream of eachnot in the wheel
Hasher.addHashToFinalHashalpha/analysis/hasher.pyappends one hash to the list being builtnot in the wheel
Hasher.addNoteHashWithReferenceToFinalHashalpha/analysis/hasher.pyappends a note's hash with the note it came from, likewisenot in the wheel
Hasher.addNoteHashToFinalHashalpha/analysis/hasher.pyappends a note's hash, likewisenot in the wheel
OrnamentFixer.addOrnamentalpha/analysis/fixer.pywrites the ornament onto the read note, which fix does where it finds onenot in the wheel
EnharmonicFixer.isEnharmonicalpha/analysis/fixer.pywhether two notes sound alike, which is Pitch::is_enharmonicnot in the wheel
EnharmonicFixer.hasAccalpha/analysis/fixer.pywhether a note carries an accidental, which is Pitch::accidental_is_writtennot in the wheel
EnharmonicFixer.hasNatAccalpha/analysis/fixer.pywhether it carries a natural, likewisenot in the wheel
EnharmonicFixer.hasSharpFlatAccalpha/analysis/fixer.pywhether it carries a sharp or a flat, likewisenot in the wheel
EnharmonicFixer.stepEqalpha/analysis/fixer.pywhether two notes stand on the same stepnot in the wheel
EnharmonicFixer.stepNotEqalpha/analysis/fixer.pywhether they do notnot in the wheel
EnharmonicFixer.intervalTooBigalpha/analysis/fixer.pywhether the two are too far apart to be a misspelling, which the fix asks as it goesnot in the wheel
ScoreCorrector.runPriorModelomr/correctors.pymusic21's measure of how much the correction helped, which PriorsIntegrationScore carriesnot in the wheel
ScoreCorrector.getMeasureSliceomr/correctors.pythe same measure across every part, which vertical_probability_dist reads as it goesnot in the wheel
ScoreCorrector.getVerticalProbabilityDistributionSinglePartomr/correctors.pya step of the vertical correction, which vertical_probability_dist does for every part at oncenot in the wheel
ScoreCorrector.getVerticalProbabilityDistributionSinglePartSingleMeasureomr/correctors.pya step of the samenot in the wheel
SinglePart.getMeasuresomr/correctors.pythe measures of the part, which the Stream it was read from holdsnot in the wheel
MeasureHash.setSequenceMatcheromr/correctors.pykeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, portednot in the wheel
MeasureHash.differenceProbabilityForOneOpCodeomr/correctors.pythe odds of one edit, which probability_based_on_changes sumsnot in the wheel
MeasureHash.getProbabilityOnEqualityomr/correctors.pythe odds of two measures reading alike, likewisenot in the wheel
MeasureHash.getProbabilityOnOmissionomr/correctors.pythe odds of a note left out, likewisenot in the wheel
MeasureHash.getProbabilityOnAdditionomr/correctors.pythe odds of a note put in, likewisenot in the wheel
MeasureSlice.getSliceHashesomr/correctors.pythe hashes of the measure across every part, which ScoreCorrector::vertical_probability_dist reads as it goesnot in the wheel
MeasureSlice.runSliceSearchomr/correctors.pythe search across the parts, which run_vertical_search doesnot in the wheel
OmrGroundTruthPair.debugomr/evaluators.pymusic21's switch for printing what it is doingnot in the wheel
OmrGroundTruthPair.parseAllomr/evaluators.pyreads both scores from their filesnot in the wheel
OmrGroundTruthPair.hashAllomr/evaluators.pyhashes both scores, which building the pair doesnot in the wheel
OmrGroundTruthPair.substCostomr/evaluators.pywhat a substitution costs, which the hashes' difference saysnot in the wheel
OmrGroundTruthPair.insertCostomr/evaluators.pywhat an insertion costs, which is one everywherenot in the wheel
OmrGroundTruthPair.deleteCostomr/evaluators.pywhat a deletion costs, likewisenot in the wheel
getFrequenciesFromMicrophoneaudioSearch/__init__.pylistens to a microphone, which the library does not donot in the wheel
getFrequenciesFromPartialAudioFileaudioSearch/__init__.pyreads part of a file as it is being recordednot in the wheel
TransposedSegmentMatchersearch/serial.pyone of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makesnot in the wheel
TransformedSegmentMatchersearch/serial.pyMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the othernot in the wheel
MultisetSegmentMatchersearch/serial.pyMatching::Multiset, which compares the pitch classes in any ordernot in the wheel
TransposedMultisetMatchersearch/serial.pyMatching::TransposedMultisetnot in the wheel
TransposedInvertedMultisetMatchersearch/serial.pyMatching::TransposedInvertedMultisetnot in the wheel
ContiguousSegmentOfNotes.getActiveMatchedRowssearch/serial.pytwo ToneRows built from the active and matched fields, which a caller builds itself; what music21 uses them for is the transformations between them, which zero_centered_transformations_from_matched and its original-centred twin answernot in the wheel
ContiguousSegmentSearcher.getSearchBoundMethodsearch/serial.pymusic21 chooses a method by name for each way of reading repetitions; the crate's one walk takes Repetitions as an argumentnot in the wheel
ContiguousSegmentSearcher.addActiveChordssearch/serial.pya step inside that walk: the crate reads a chord's pitch classes where it meets onenot in the wheel
ContiguousSegmentSearcher.searchIncludeAllExcludesearch/serial.pyone of the twelve methods that choice picks between, which the one walk answers fornot in the wheel
ContiguousSegmentSearcher.searchIncludeAllIncludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
ContiguousSegmentSearcher.searchSkipConsecutiveExcludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
ContiguousSegmentSearcher.searchSkipConsecutiveIncludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
ContiguousSegmentSearcher.searchIgnoreAllExcludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
ContiguousSegmentSearcher.searchIgnoreAllIncludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
ContiguousSegmentSearcher.searchRowsOnlyExcludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
ContiguousSegmentSearcher.searchRowsOnlyIncludesearch/serial.pyas searchIncludeAllExcludenot in the wheel
SegmentMatcher.getContiguousSegmentsByLengthsearch/serial.pythe searcher's by_length, which find asks for itselfnot in the wheel
SegmentMatcher.findOneIgnoreAllsearch/serial.pyone of the two branches of music21's find, which it picks by how repetitions are read; the crate's find is the one walknot in the wheel
SegmentMatcher.findOneOtherRepssearch/serial.pythe other branch of findnot in the wheel
SegmentMatcher.checkSearchedAlreadysearch/serial.pywhether a segment the same as one already searched for is to be passed over, which find keeps as it goesnot in the wheel
SegmentMatcher.normalizesearch/serial.pyhow a run is read before it is compared, which is what Matching says: the pitch classes, the intervals they make, or the row they arenot in the wheel
SegmentMatcher.equalSubsetsearch/serial.pythe comparison Matching decides, which the crate does inside findnot in the wheel

The same members the list above marks missing, in one place. The ones to watch are those with no reason at all: they are what nobody has decided about. A reason is an exclusion in data/feature_map.toml, and an exclusion is checked before the naming convention, so one left behind after its member is ported goes on hiding the port.

Beyond music21

10 capabilities

Capabilitymusic21-rsmusic21
PolyrhythmCross-rhythms as a first-class thing: the cycle two or more pulses make together, where the hits fall in it, and the chord that cycle maps onto when its ratios are read as pitches. music21 has no counterpart. present nothing of the kind
Tuning systemsExact ratio tables - just intonation, meantone, Bohlen-Pierce, the Carlos scales - with frequencies derived from the ratios rather than from equal temperament, and available with no features turned on. Fourteen of them are the historical keyboard temperaments, Salinas 1577 through Lehman 2005, reachable together as HISTORICAL_TEMPERAMENTS; they are counted here rather than again, being the same tables. 23 of the 28 are in the bundled Scala archive too - the same scales stored the other way, exact ratios against parsed cents - which is deliberate and pinned by a test. music21 tunes a scale only by reading a Scala file. 28 systems nothing of the kind
Adaptive tuningTuning where a pitch's frequency depends on the harmony it is sounding in rather than on a fixed table - recursive just intonation, five-limit from whichever note is the root. present nothing of the kind
Scala archiveEvery scale music21 ships, plus the hexatone collection, parsed into one table at build time rather than read from disk. The reader also handles the inline comments and EDO notation that music21's own parser mis-reads. 3994 scales 3932 scales
Regular temperamentsA mapping from the primes onto a period and its generators, the commas it tempers out, and the scales that come of stacking it. Every one is checked against the Xenharmonic Wiki, so a mistranscribed number fails the build. 95 temperaments nothing of the kind
Monzos and valsAn interval as the exponents of the primes in its ratio, so 81/80 is [-4 4 -1>, and how many steps of a tuning each prime is worth, 12edo being <12 19 28]. A val mapping a comma to nothing tempers it out. present nothing of the kind
Moments of symmetryThe scales a single generator makes. Seven fifths folded into an octave give exactly two step sizes, which is the diatonic scale, 5L 2s. The pattern is kept apart from the tuning, and nothing assumes the period is an octave. present nothing of the kind
Equal divisions of anythingEqual steps of any interval, not only of the octave: Bohlen-Pierce divides a twelfth into thirteen. The octave-repeating tables above cannot express those by construction. present nothing of the kind
Harte chord notationChord labels as harte-library reads them, C:maj7/3 or Bb:(b3,5,b7,9), built into chords with the root fixed as the label names it. The harte crate in this repository, ported from harte-library and checked against every label in that library's 8,064-chord coverage set. 48 shorthands nothing of the kind
Duplicate detectionWhich of these are the same tuning under another name, compared by sound rather than spelling. It finds 44 groups of repeats among the archive's 3,994 scales. present nothing of the kind

1235 public members the map matches to nothing in music2185 fn, 903 method, 83 struct, 93 enum, 3 trait, 4 type, 64 const, across 97 modules

▶notation
59 members
  • ALL const
  • Beam struct
  • Beam::beam_type method
  • Beam::set_beam_type method
  • Beam::set_direction method
  • Beam::set_number method
  • BeamDirection enum
  • BeamDirection::as_str method
  • BeamDirection::from_music21_name method
  • BeamType enum
  • BeamType::as_str method
  • BeamType::from_music21_name method
  • Beams::beams_mut method
  • Beams::feathered method
  • Beams::fill_levels method
  • Beams::is_empty method
  • Beams::len method
  • Beams::levels_for method
  • Beams::naive method
  • Beams::set_beams method
  • Beams::set_feathered method
  • Justification enum
  • Justification::as_str method
  • LEVELS const
  • Lyric::clear_text method
  • Lyric::elision_before method
  • Lyric::explicit_identifier method
  • Lyric::explicit_syllabic method
  • Lyric::explicit_text method
  • Lyric::from_raw_text method
  • Lyric::is_hidden method
  • Lyric::set_components method
  • Lyric::set_elision_before method
  • Lyric::set_hidden method
  • Lyric::set_identifier method
  • Lyric::set_justify method
  • Lyric::set_number method
  • Lyric::set_placement method
  • Lyric::set_raw_text method
  • Lyric::set_syllabic method
  • Lyric::unsung method
  • NAMES const
  • NoteSize enum
  • NoteSize::as_str method
  • Notehead enum
  • Notehead::as_str method
  • Placement enum
  • Placement::as_str method
  • StemDirection enum
  • StemDirection::as_str method
  • Syllabic enum
  • Syllabic::as_str method
  • Tie::set_placement method
  • Tie::set_style method
  • Tie::set_tie_type method
  • TieStyle enum
  • TieStyle::as_str method
  • TieType enum
  • TieType::as_str method
▶stream
56 members
  • ALL const
  • BarTogether enum
  • BarTogether::as_str method
  • StaffGroup::name_hidden method
  • StaffGroup::set_abbreviation method
  • StaffGroup::set_bar_together method
  • StaffGroup::set_name method
  • StaffGroup::set_name_hidden method
  • StaffGroup::set_symbol method
  • Stream::abbreviation_hidden method
  • Stream::add_spanner method
  • Stream::add_staff_group method
  • Stream::end_offset method
  • Stream::ending method
  • Stream::events_mut method
  • Stream::for_each_mut method
  • Stream::from_events method
  • Stream::is_empty method
  • Stream::kind method
  • Stream::leaves method
  • Stream::len method
  • Stream::measure_numbering method
  • Stream::metronome_mark_at method
  • Stream::name_hidden method
  • Stream::number_hidden method
  • Stream::number_suffix method
  • Stream::padding_left method
  • Stream::padding_right method
  • Stream::retain_leaves method
  • Stream::set_abbreviation method
  • Stream::set_abbreviation_hidden method
  • Stream::set_ending method
  • Stream::set_id method
  • Stream::set_kind method
  • Stream::set_left_barline method
  • Stream::set_measure_numbering method
  • Stream::set_metadata method
  • Stream::set_name method
  • Stream::set_name_hidden method
  • Stream::set_number method
  • Stream::set_number_hidden method
  • Stream::set_number_suffix method
  • Stream::set_padding_left method
  • Stream::set_padding_right method
  • Stream::set_right_barline method
  • Stream::staff_groups method
  • Stream::streams_of_kind method
  • Stream::with_kind method
  • StreamElement enum
  • StreamElement::as_stream method
  • StreamElement::is_note_or_chord method
  • StreamEvent struct
  • StreamEvent::element_mut method
  • StreamEvent::end_offset method
  • StreamKind enum
  • StreamKind::as_str method
▶duration
55 members
  • ALL const
  • Duration::eighth method
  • Duration::expression_is_inferred method
  • Duration::from_type method
  • Duration::half method
  • Duration::is_grace method
  • Duration::quarter method
  • Duration::set_dot_groups method
  • Duration::set_dots method
  • Duration::set_expression_is_inferred method
  • Duration::set_grace method
  • Duration::set_linked method
  • Duration::set_quarter_length method
  • Duration::set_tuplets method
  • Duration::whole method
  • Duration::written_values method
  • DurationTuple struct
  • DurationTuple::silenced method
  • DurationType enum
  • DurationType::from_music21_name method
  • DurationType::quarter_length_with_dots method
  • Grace struct
  • Grace::appoggiatura method
  • Grace::make_time method
  • Grace::set_make_time method
  • Grace::set_slash method
  • Grace::set_steal_time_following method
  • Grace::set_steal_time_previous method
  • Grace::slash method
  • Grace::steal_time_following method
  • Grace::steal_time_previous method
  • Tuplet::actual method
  • Tuplet::actual_show method
  • Tuplet::augmented method
  • Tuplet::bracket method
  • Tuplet::normal method
  • Tuplet::normal_dots method
  • Tuplet::normal_duration_type method
  • Tuplet::normal_show method
  • Tuplet::ratio method
  • Tuplet::set_actual_show method
  • Tuplet::set_bracket method
  • Tuplet::set_duration_actual method
  • Tuplet::set_duration_normal method
  • Tuplet::set_normal_show method
  • Tuplet::set_placement method
  • Tuplet::set_tuplet_type method
  • Tuplet::tuplet_type method
  • Tuplet::with_normal method
  • TupletBracket enum
  • TupletNotation struct
  • TupletShow enum
  • TupletShow::as_str method
  • TupletType enum
  • TupletType::as_str method
▶expressions
49 members
  • ALL const
  • ArpeggioType enum
  • ArpeggioType::as_str method
  • Expression enum
  • Expression::tie_attach method
  • Fermata struct
  • Fermata::fermata_type method
  • Fermata::set_fermata_type method
  • Fermata::set_shape method
  • Fermata::shape method
  • FermataType enum
  • FermataType::as_str method
  • Ornament::appoggiatura_size method
  • Ornament::auto_scale method
  • Ornament::is_a method
  • Ornament::kind method
  • Ornament::measured method
  • Ornament::nachschlag method
  • Ornament::of_kind method
  • Ornament::set_accidental method
  • Ornament::set_appoggiatura_size method
  • Ornament::set_auto_scale method
  • Ornament::set_delay method
  • Ornament::set_lower_accidental method
  • Ornament::set_measured method
  • Ornament::set_nachschlag method
  • Ornament::set_number_of_marks method
  • Ornament::set_placement method
  • Ornament::set_quarter_length method
  • Ornament::set_tie_attach method
  • Ornament::set_upper_accidental method
  • Ornament::tie_attach method
  • OrnamentDelay enum
  • OrnamentKind enum
  • OrnamentKind::class_name method
  • OrnamentKind::from_class_name method
  • OrnamentKind::has_fixed_size method
  • OrnamentKind::parents method
  • Realization::into_notes method
  • RehearsalMark struct
  • RehearsalMark::enclosure method
  • RehearsalMark::set_content method
  • RehearsalMark::set_enclosure method
  • RehearsalMark::set_placement method
  • TextExpression struct
  • TextExpression::set_content method
  • TextExpression::set_placement method
  • TurnNote enum
  • realize_ornaments fn
▶spanner
48 members
  • LineEnd enum
  • LineEnd::as_str method
  • LineEnds struct
  • OctaveShift struct
  • OctaveShift::set_transposing method
  • OctaveShift::transposing method
  • Pedal struct
  • PedalForm enum
  • PedalForm::as_str method
  • PedalForm::has_line method
  • PedalObject struct
  • PedalObject::kind method
  • PedalObject::set_placement method
  • PedalObjectKind enum
  • PedalObjectKind::class_name method
  • PedalObjectKind::from_class_name method
  • PedalType enum
  • PedalType::as_str method
  • SlideType enum
  • SlideType::as_str method
  • Spanner::arpeggio method
  • Spanner::arpeggio_mark method
  • Spanner::ends method
  • Spanner::glissando_details method
  • Spanner::is_empty method
  • Spanner::kind method
  • Spanner::len method
  • Spanner::pedal method
  • Spanner::pedal_mark method
  • Spanner::set_arpeggio method
  • Spanner::set_ends method
  • Spanner::set_glissando_details method
  • Spanner::set_line_type method
  • Spanner::set_number_of_marks method
  • Spanner::set_offset method
  • Spanner::set_pedal method
  • Spanner::set_placement method
  • Spanner::set_shift method
  • Spanner::set_spread method
  • Spanner::shift method
  • Spanner::slur method
  • Spanner::spread method
  • Spanner::wedge method
  • Spanner::with_unplaced method
  • SpannerKind enum
  • SpannerKind::class_name method
  • SpannerKind::is_wedge method
  • SpannerKind::numbering_class method
▶tuningsystem
42 members
  • A0 const
  • A4 const
  • ALL_TUNING_SYSTEMS const
  • AN1 const
  • AnyTuningSystem enum
  • AnyTuningSystem::cents_at method
  • AnyTuningSystem::frequency_at method
  • AnyTuningSystem::is_adaptive method
  • C0 const
  • C4 const
  • CN1 const
  • COMMON_EQUAL_TEMPERAMENTS const
  • COMMON_TWELVE_TONE_TUNING_SYSTEMS const
  • EQUAL_TEMPERAMENT const
  • HISTORICAL_TEMPERAMENTS const
  • INDIAN_SCALE_NAMES const
  • JAVANESE const
  • OCTAVE_SIZE const
  • QUARTER_TONE const
  • Ratio enum
  • Ratio::monzo method
  • Ratio::to_fraction method
  • Ratio::with_octaves method
  • THAI const
  • TuningSystem enum
  • TuningSystem::cents_at method
  • TuningSystem::degrees_per_period method
  • TuningSystem::description method
  • TuningSystem::display_name method
  • TuningSystem::edo method
  • TuningSystem::exact_ratio method
  • TuningSystem::frequency_at method
  • TuningSystem::is_keyboard method
  • TuningSystem::nearest_degree method
  • TuningSystem::period_cents method
  • TuningSystem::period_of method
  • TuningSystem::pitch_at method
  • TuningSystem::ratio method
  • TuningSystem::ratio_at method
  • TuningSystem::repeats_at_the_octave method
  • WHOLE_TONE const
  • equal_temperament fn
▶articulations
41 members
  • ALL const
  • Articulation::alternate method
  • Articulation::bend_alter method
  • Articulation::display_text method
  • Articulation::finger method
  • Articulation::harmonic_type method
  • Articulation::is_a method
  • Articulation::kind method
  • Articulation::length_shift method
  • Articulation::of_kind method
  • Articulation::pitch_type method
  • Articulation::point_direction method
  • Articulation::pre_bend method
  • Articulation::release method
  • Articulation::set_alternate method
  • Articulation::set_bend_alter method
  • Articulation::set_display_text method
  • Articulation::set_finger method
  • Articulation::set_harmonic_type method
  • Articulation::set_length_shift method
  • Articulation::set_number method
  • Articulation::set_pitch_type method
  • Articulation::set_placement method
  • Articulation::set_point_direction method
  • Articulation::set_pre_bend method
  • Articulation::set_release method
  • Articulation::set_substitution method
  • Articulation::set_symbol method
  • Articulation::set_tie_attach method
  • Articulation::set_volume_shift method
  • Articulation::set_with_bar method
  • Articulation::substitution method
  • Articulation::tie_attach method
  • Articulation::with_bar method
  • ArticulationKind enum
  • ArticulationKind::class_name method
  • ArticulationKind::from_class_name method
  • ArticulationKind::has_field method
  • ArticulationKind::parents method
  • Finger enum
  • Finger::from_written method
▶tempo
38 members
  • DEFAULT_TEMPO_VALUES const
  • MetricModulation::arrow_direction method
  • MetricModulation::classical_style method
  • MetricModulation::maintain_beat method
  • MetricModulation::parentheses method
  • MetricModulation::set_arrow_direction method
  • MetricModulation::set_classical_style method
  • MetricModulation::set_maintain_beat method
  • MetricModulation::set_new_metronome method
  • MetricModulation::set_new_referent method
  • MetricModulation::set_old_metronome method
  • MetricModulation::set_old_referent method
  • MetricModulation::set_parentheses method
  • MetricModulation::set_placement method
  • MetricModulation::set_transition_symbol method
  • MetricModulation::transition_symbol method
  • MetronomeMark::number_implicit method
  • MetronomeMark::parentheses method
  • MetronomeMark::quarter_length_to_seconds method
  • MetronomeMark::set_number method
  • MetronomeMark::set_number_implicit method
  • MetronomeMark::set_number_sounding method
  • MetronomeMark::set_parentheses method
  • MetronomeMark::set_placement method
  • MetronomeMark::set_referent method
  • MetronomeMark::sounding_quarter_bpm method
  • MetronomeMark::text_implicit method
  • MetronomeMark::with_number_and_text method
  • MetronomeMark::with_number_sounding method
  • MetronomeMark::with_referent method
  • ModulationSide enum
  • TempoText struct
  • TempoText::is_common_tempo_text method
  • TempoText::set_placement method
  • default_number_for_text fn
  • default_text_for_number fn
  • interpolated_offset fn
  • is_common_tempo_text fn
▶meter
37 members
  • BeamedNote struct
  • BeatDivision enum
  • BeatDivision::count method
  • TimeSignature::accent_partition_quarter_length method
  • TimeSignature::accent_sequence method
  • TimeSignature::accent_sequence_mut method
  • TimeSignature::accent_weight_at_level method
  • TimeSignature::accent_weight_with method
  • TimeSignature::accent_weights method
  • TimeSignature::bar_quarter_length method
  • TimeSignature::beam_sequence method
  • TimeSignature::beam_sequence_mut method
  • TimeSignature::beat_division method
  • TimeSignature::beat_division_quarter_lengths method
  • TimeSignature::beat_duration_at method
  • TimeSignature::beat_quarter_length method
  • TimeSignature::beat_sequence method
  • TimeSignature::beat_sequence_mut method
  • TimeSignature::common method
  • TimeSignature::cut method
  • TimeSignature::display_sequence method
  • TimeSignature::display_sequence_mut method
  • TimeSignature::divide_beats method
  • TimeSignature::favors_compound method
  • TimeSignature::from_ratio_string method
  • TimeSignature::is_compound method
  • TimeSignature::is_hidden method
  • TimeSignature::is_restated method
  • TimeSignature::set_beat_count method
  • TimeSignature::set_hidden method
  • TimeSignature::set_restated method
  • TimeSignature::set_summed_numerator method
  • TimeSignature::set_symbol method
  • TimeSignature::set_symbolize_denominator method
  • TimeSignature::symbolize_denominator method
  • partition_name fn
  • snapped_fraction fn
▶instrument
36 members
  • EACH const
  • Instrument::class_name method
  • Instrument::families method
  • Instrument::highest method
  • Instrument::in_percussion_map method
  • Instrument::instrument_id method
  • Instrument::is_a method
  • Instrument::kind method
  • Instrument::kinds method
  • Instrument::lowest method
  • Instrument::midi_channel method
  • Instrument::midi_program method
  • Instrument::of_kind method
  • Instrument::part_id method
  • Instrument::set_abbreviation method
  • Instrument::set_highest method
  • Instrument::set_in_percussion_map method
  • Instrument::set_instrument_id method
  • Instrument::set_lowest method
  • Instrument::set_midi_channel method
  • Instrument::set_midi_program method
  • Instrument::set_modifier method
  • Instrument::set_name method
  • Instrument::set_part_abbreviation method
  • Instrument::set_part_id method
  • Instrument::set_part_name method
  • Instrument::set_percussion_pitch method
  • Instrument::set_sound method
  • Instrument::set_string_pitches method
  • Instrument::set_transposition method
  • Instrument::sound method
  • Instrument::sounding method
  • Instrument::transposition method
  • Instrument::written method
  • SearchLanguage enum
  • SearchLanguage::as_str method
▶pitch
29 members
  • Pitch::builder method
  • Pitch::frequency_hz_in method
  • Pitch::frequency_hz_tuned method
  • Pitch::from_frequency method
  • Pitch::from_frequency_in method
  • Pitch::from_midi method
  • Pitch::from_name_and_octave method
  • Pitch::from_number method
  • Pitch::from_options method
  • Pitch::from_pitch_class method
  • Pitch::from_pitch_space method
  • Pitch::from_step method
  • Pitch::fundamental method
  • Pitch::pitch_space method
  • Pitch::set_accidental method
  • Pitch::set_accidental_alter method
  • Pitch::set_microtone_cents method
  • Pitch::set_octave method
  • Pitch::set_octave_is_implicit method
  • Pitch::set_spelling_is_inferred method
  • Pitch::set_written_accidental method
  • Pitch::spelling_is_inferred method
  • Pitch::written_accidental method
  • Pitch::written_accidental_mut method
  • PitchName enum
  • PitchOptions struct
  • PitchOptions::build method
  • PitchOptions::fundamental method
  • PitchOptions::pitch_space method
▶chord
28 members
  • Chord::empty method
  • Chord::found_bass method
  • Chord::found_root method
  • Chord::guitar_fingering method
  • Chord::guitar_fingering_with_tuning method
  • Chord::is_empty method
  • Chord::iter_pitches method
  • Chord::len method
  • Chord::note_for_pitch method
  • Chord::note_for_pitch_mut method
  • Chord::notes_mut method
  • Chord::numeral method
  • Chord::overridden_bass method
  • Chord::overridden_root method
  • Chord::polyrhythm_components method
  • Chord::polyrhythm_ratio_string method
  • Chord::remove_named method
  • Chord::remove_redundant_pitch_classes_reporting method
  • Chord::remove_redundant_pitch_names_reporting method
  • Chord::remove_redundant_pitches_reporting method
  • Chord::set_bass method
  • Chord::set_duration method
  • Chord::set_numeral method
  • Chord::set_root method
  • Chord::simplify_enharmonics_in_place method
  • Chord::with_duration method
  • Chord::with_numeral method
  • IntoNotes trait
▶roman
26 members
  • FUNCTIONALITY_SCORES const
  • FigureTuple struct
  • ImpliedQuality enum
  • ImpliedQuality::correct_semitones method
  • Minor67Default enum
  • NumeralAlone struct
  • PitchFigureTuple struct
  • RomanNumeral::added_steps method
  • RomanNumeral::bracketed_alterations method
  • RomanNumeral::case_matters method
  • RomanNumeral::degree method
  • RomanNumeral::effective_key_of method
  • RomanNumeral::figure_numbers method
  • RomanNumeral::figures_notation method
  • RomanNumeral::figures_written method
  • RomanNumeral::front_alteration_string method
  • RomanNumeral::implied_quality method
  • RomanNumeral::omitted_steps method
  • RomanNumeral::over_scale method
  • RomanNumeral::roman_numeral_alone method
  • RomanNumeral::secondary method
  • RomanNumeral::seventh_minor method
  • RomanNumeral::sixth_minor method
  • RomanNumeral::with_minor_defaults method
  • RomanNumeral::with_options method
  • RomanNumeral::written_accidental method
▶chordsymbol
25 members
  • ChordAlteration struct
  • ChordAlteration::degree method
  • ChordQuality enum
  • ChordSymbol::add_chord_step_modification method
  • ChordSymbol::additions method
  • ChordSymbol::alterations method
  • ChordSymbol::chord_step_modifications method
  • ChordSymbol::extensions method
  • ChordSymbol::from_kind method
  • ChordSymbol::is_no_chord method
  • ChordSymbol::kind method
  • ChordSymbol::kind_text method
  • ChordSymbol::lyrics_mut method
  • ChordSymbol::no_chord method
  • ChordSymbol::omissions method
  • ChordSymbol::parse_music21 method
  • ChordSymbol::set_bass method
  • ChordSymbol::set_chord_step_modifications method
  • ChordSymbol::set_duration method
  • ChordSymbol::set_kind_text method
  • ChordSymbol::set_placement method
  • ChordSymbol::set_root method
  • ChordSymbol::with_duration method
  • ChordSymbol::with_kind method
  • chord_symbol_durations fn
▶polyrhythm
22 members
  • Polyrhythm struct
  • Polyrhythm::analysis method
  • Polyrhythm::beat_timings method
  • Polyrhythm::coincidence_ticks method
  • Polyrhythm::component_intervals method
  • Polyrhythm::current_tick method
  • Polyrhythm::cycle_len method
  • Polyrhythm::from_time_signature method
  • Polyrhythm::hit_events method
  • Polyrhythm::measure_duration method
  • Polyrhythm::ratio_chord method
  • Polyrhythm::ratio_frequencies method
  • Polyrhythm::ratio_pitches method
  • Polyrhythm::ratio_tones method
  • Polyrhythm::reset method
  • Polyrhythm::set_tempo method
  • Polyrhythm::tempo method
  • Polyrhythm::tick_duration method
  • Polyrhythm::with_tempo method
  • PolyrhythmAnalysis struct
  • PolyrhythmEvent struct
  • PolyrhythmRatioTone struct
▶tree
22 members
  • ElementTimespan::is_pitched method
  • ElementTimespan::parent_end_time method
  • ElementTimespan::parent_offset method
  • Flatten enum
  • Horizontality::timespans method
  • TimespanTree::all_offsets method
  • TimespanTree::all_time_points method
  • TimespanTree::highest_position method
  • TimespanTree::is_empty method
  • TimespanTree::len method
  • TimespanTree::overlap_time_points method
  • TimespanTree::overlapping method
  • TimespanTree::position_after method
  • TimespanTree::position_before method
  • TimespanTree::source method
  • TimespanTree::starting_at method
  • TimespanTree::stopping_at method
  • TimespanTree::timespans method
  • Verticality::overlap_timespans method
  • Verticality::start_timespans method
  • Verticality::stop_timespans method
  • Verticality::voice_leading_timespans method
▶tuningsystem::monzo
22 members
  • Monzo struct
  • Monzo::exponent_of method
  • Monzo::exponents method
  • Monzo::from_fraction method
  • Monzo::from_ratio method
  • Monzo::inverse method
  • Monzo::limit method
  • Monzo::multiply method
  • Monzo::pow method
  • Monzo::pythagorean method
  • Monzo::ratio method
  • Monzo::unison method
  • PRIMES const
  • Val struct
  • Val::divisions method
  • Val::entries method
  • Val::error_cents method
  • Val::limit method
  • Val::map method
  • Val::patent method
  • Val::reaches method
  • Val::tempers_out method
▶tuningsystem::scala
22 members
  • ScalaArchive struct
  • ScalaArchive::bundled method
  • ScalaArchive::bundled_len method
  • ScalaArchive::bundled_with_failures method
  • ScalaArchive::insert_scale method
  • ScalaArchive::is_empty method
  • ScalaArchive::len method
  • ScalaArchive::names method
  • ScalaDegree enum
  • ScalaDegree::as_ratio method
  • ScalaDegree::ratio method
  • ScalaDegree::written method
  • ScalaScale::cents_above_root method
  • ScalaScale::degrees method
  • ScalaScale::description method
  • ScalaScale::frequency_at method
  • ScalaScale::from_written_cents method
  • ScalaScale::is_empty method
  • ScalaScale::len method
  • ScalaScale::parse_bytes method
  • ScalaScale::ratio_at method
  • ScalaScale::written_degrees method
▶tuningsystem::temperament
22 members
  • Temperament struct
  • Temperament::equave method
  • Temperament::equave_cents method
  • Temperament::error_cents method
  • Temperament::from_mapping method
  • Temperament::from_mapping_rows method
  • Temperament::from_published method
  • Temperament::generator_cents method
  • Temperament::generator_map method
  • Temperament::map method
  • Temperament::moments method
  • Temperament::mos method
  • Temperament::pattern method
  • Temperament::period_cents method
  • Temperament::period_map method
  • Temperament::periods_per_equave method
  • Temperament::primes method
  • Temperament::rank method
  • Temperament::repeats_at_the_octave method
  • Temperament::subgroup_name method
  • Temperament::tempers_out method
  • crate::tuningsystem::NamedTemperament::temperament method
▶note
20 members
  • IntoNote trait
  • Note::articulations method
  • Note::articulations_mut method
  • Note::beams_mut method
  • Note::expressions method
  • Note::expressions_mut method
  • Note::from_number method
  • Note::from_pitch method
  • Note::hidden method
  • Note::lyrics_mut method
  • Note::set_beams method
  • Note::set_duration method
  • Note::set_hidden method
  • Note::set_id method
  • Note::set_lyric method
  • Note::set_notehead_parenthesis method
  • Note::set_pitch method
  • Note::set_size method
  • Note::set_stored_instrument method
  • Note::with_duration method
▶scale::scaletype
19 members
  • ALL const
  • DegreeComparison enum
  • HUMDRUM_SOLFEG_SYLLABLES const
  • SOLFEG_SYLLABLES const
  • ScaleType enum
  • ScaleType::ascending_degrees method
  • ScaleType::beyond_terminus method
  • ScaleType::derive_ranked_by method
  • ScaleType::descending_form method
  • ScaleType::descending_steps method
  • ScaleType::dominant_degree method
  • ScaleType::from_music21_name method
  • ScaleType::is_cycle method
  • ScaleType::is_plagal method
  • ScaleType::music21_descriptive_name method
  • ScaleType::realization_steps method
  • ScaleType::tonic_degree method
  • Simplification enum
  • SolfegVariant enum
▶tuningsystem::equal
18 members
  • EqualDivision struct
  • EqualDivision::approximation_of method
  • EqualDivision::cents_at method
  • EqualDivision::degrees method
  • EqualDivision::divisions method
  • EqualDivision::edo method
  • EqualDivision::error_at_cents method
  • EqualDivision::mos method
  • EqualDivision::nearest_degree method
  • EqualDivision::of_ratio method
  • EqualDivision::patent_val method
  • EqualDivision::period_cents method
  • EqualDivision::period_ratio method
  • EqualDivision::ratio_at method
  • EqualDivision::repeats_at_the_octave method
  • EqualDivision::step_cents method
  • EqualDivision::tritave method
  • TRITAVE_CENTS const
▶analysis
17 members
  • ALL const
  • KeyEstimate struct
  • KeyProfile enum
  • KeyProfile::identifiers method
  • KeyProfile::minor_weights method
  • KeyProfile::music21_class_name method
  • estimate_key_from_chords fn
  • estimate_key_from_chords_with fn
  • estimate_key_from_pitches fn
  • estimate_key_from_pitches_with fn
  • estimate_key_of_stream fn
  • melodic_line_positions fn
  • melodic_lines fn
  • pitch_class_distribution fn
  • stream_distribution fn
  • stream_pitch_span fn
  • tonal_certainty_from_scores fn
▶percussion
17 members
  • PercussionChord::is_empty method
  • PercussionChord::is_unpitched method
  • PercussionChord::len method
  • PercussionChord::with_duration method
  • PercussionChord::written method
  • PercussionChord::written_mut method
  • PercussionNote enum
  • Unpitched struct
  • Unpitched::display_name method
  • Unpitched::display_octave method
  • Unpitched::display_pitch method
  • Unpitched::display_step method
  • Unpitched::displayed_at method
  • Unpitched::from_display_name method
  • Unpitched::with_duration method
  • Unpitched::written method
  • Unpitched::written_mut method
▶clef
16 members
  • ALL const
  • Clef::is_a method
  • Clef::kind method
  • Clef::lowest_line method
  • Clef::of_kind method
  • Clef::places_pitches method
  • Clef::set_line method
  • Clef::set_lowest_line method
  • Clef::set_octave_change method
  • Clef::set_sign method
  • Clef::sign method
  • Clef::treble method
  • ClefKind enum
  • ClefKind::class_name method
  • ClefKind::from_class_name method
  • ClefKind::parents method
▶tuningsystem::mos
16 members
  • Mos struct
  • Mos::brightest_word method
  • Mos::inverted method
  • Mos::large method
  • Mos::small method
  • MosScale struct
  • MosScale::degrees method
  • MosScale::from_equal_division method
  • MosScale::generator method
  • MosScale::is_equal method
  • MosScale::is_moment_of_symmetry method
  • MosScale::pattern method
  • MosScale::steps method
  • MosScale::word method
  • OCTAVE_CENTS const
  • moment_of_symmetry_sizes fn
▶braille::lookup
15 members
  • alphabet fn
  • ascii_char fn
  • before_note_expression fn
  • binary_dots fn
  • bowing fn
  • cell fn
  • cells fn
  • clef_prefix fn
  • clef_suffix fn
  • fermata fn
  • finger_mark fn
  • length_prefix fn
  • naturals fn
  • number_lower fn
  • number_upper fn
▶features
15 members
  • DataInstance::analyzed_key method
  • DataInstance::parts_count method
  • DataInstance::parts_sounding method
  • DataInstance::prepared method
  • Extractor struct
  • Extractor::description method
  • Extractor::dimensions method
  • Extractor::discrete method
  • Feature::discrete method
  • Feature::values method
  • Feature::vector method
  • Seconds struct
  • Value enum
  • Value::as_float method
  • Value::is_integer method
▶figuredbass
15 members
  • EXTENDER const
  • Figure::has_extender method
  • Figure::set_number method
  • Modifier::written method
  • Notation struct
  • Notation::column method
  • Notation::extenders method
  • Notation::figure_strings method
  • Notation::figures method
  • Notation::figures_as_written method
  • Notation::has_extenders method
  • Notation::modifier_strings method
  • Notation::modifiers method
  • Notation::original_modifiers method
  • Notation::original_numbers method
▶serial
15 members
  • ALL const
  • HistoricalRow struct
  • HistoricalRow::row method
  • IndexedTransformation type
  • LinkClassification struct
  • ToneRow::find_transformations method
  • ToneRow::from_pitches method
  • ToneRow::is_empty method
  • ToneRow::len method
  • ToneRow::transformation method
  • Transformation enum
  • TransformationConvention enum
  • TwelveToneMatrix struct
  • TwelveToneMatrix::row method
  • TwelveToneMatrix::rows method
▶interval
14 members
  • Interval::between_notes method
  • Interval::diatonic_interval_cent_shift method
  • Interval::from_chromatic method
  • Interval::from_diatonic method
  • Interval::from_diatonic_and_chromatic method
  • Interval::from_semitones method
  • Interval::generic_number method
  • Interval::is_implicit_diatonic method
  • Interval::pythagorean_monzo method
  • Interval::transpose_pitch_in_place method
  • Interval::transpose_pitch_with_options method
  • Interval::whole_semitones method
  • IntervalDirection enum
  • IntervalDirection::as_int method
▶rest
14 members
  • Rest::articulations method
  • Rest::articulations_mut method
  • Rest::expressions method
  • Rest::expressions_mut method
  • Rest::full_measure method
  • Rest::hidden method
  • Rest::lyrics_mut method
  • Rest::set_duration method
  • Rest::set_full_measure method
  • Rest::set_hidden method
  • Rest::set_lyric method
  • Rest::set_size method
  • Rest::set_step_shift method
  • Rest::step_shift method
▶analysis::neoriemannian
13 members
  • ALL const
  • ChainOrder enum
  • HexatonicSystem enum
  • Mediant enum
  • Mediant::code method
  • Mediant::from_code method
  • MediantSide enum
  • Respell enum
  • Transform enum
  • Transform::from_symbol method
  • Transform::parse_chain method
  • lrp_chain fn
  • simpler_enharmonics fn
▶volume
13 members
  • DynamicContext enum
  • Volume::from_velocity method
  • Volume::from_velocity_scalar method
  • Volume::has_velocity_information method
  • Volume::realized_dynamic method
  • Volume::realized_with method
  • Volume::realized_without_velocity method
  • Volume::set_velocity method
  • Volume::set_velocity_is_relative method
  • Volume::set_velocity_scalar method
  • Volume::velocity_is_relative method
  • dynamics_in_force fn
  • rounded_str fn
▶metadata
12 members
  • Metadata::add_text method
  • Metadata::all_sorted method
  • Metadata::first_text method
  • Metadata::is_empty method
  • MetadataMatch struct
  • MetadataMatch::field method
  • MetadataQuery enum
  • MetadataValue struct
  • MetadataValue::role method
  • MetadataValue::with_role method
  • OLD_MUSIC21_NAMES const
  • STANDARD_PROPERTIES const
▶meter::sequence
12 members
  • MeterTerminal::flattened method
  • MeterTerminal::from_partition_string method
  • MeterTerminal::from_parts_given method
  • MeterTerminal::from_ratio_string method
  • MeterTerminal::is_empty method
  • MeterTerminal::len method
  • MeterTerminal::partition_by_parts method
  • MeterTerminal::parts_mut method
  • MeterTerminal::set_summed_numerator method
  • MeterTerminal::set_weight method
  • MeterTerminal::subdivide_nested_hierarchy_by method
  • OffsetAlign enum
▶romantext::clercq_temperley
12 members
  • CtLabels struct
  • CtRule struct
  • CtRule::expand_in method
  • CtRule::measure_groups method
  • CtSong struct
  • CtSong::lines method
  • CtSong::rule method
  • CtSong::to_part_with method
  • GroupKind enum
  • MeasureGroup struct
  • from_clercq_temperley fn
  • from_clercq_temperley_with fn
▶braille::segment
11 members
  • Affinity enum
  • BrailleElement struct
  • BrailleElementGrouping struct
  • BrailleGrandSegment::english method
  • BrailleSegment::english method
  • Hand enum
  • NoteGroupingTranscriber struct
  • NoteGroupingTranscriber::transcribe_group method
  • SegmentKey struct
  • SegmentOptions struct
  • transcribe_note_grouping fn
▶key::keysignature
11 members
  • KeySignature::accidentals_apply_only_to_octave method
  • KeySignature::description method
  • KeySignature::from_altered_pitches method
  • KeySignature::is_non_traditional method
  • KeySignature::set_accidentals_apply_only_to_octave method
  • KeySignature::set_altered_pitches method
  • KeySignature::set_non_traditional method
  • KeySignature::set_sharps method
  • KeySignature::try_as_key method
  • mode_sharps_alter fn
  • pitch_name_to_sharps fn
▶repeat
11 members
  • ALL const
  • RepeatExpression::kind method
  • RepeatExpression::set_placement method
  • RepeatExpression::set_use_symbol method
  • RepeatExpression::use_symbol method
  • RepeatExpression::with_text method
  • RepeatExpressionKind enum
  • RepeatExpressionKind::class_name method
  • RepeatExpressionKind::from_class_name method
  • RepeatExpressionKind::has_symbol method
  • RepeatExpressionKind::text_alternatives method
▶voiceleading
11 members
  • MotionType enum
  • MotionType::as_str method
  • ParallelRequirement enum
  • QuartetOptions struct
  • VoiceLeadingQuartet::from_names method
  • VoiceLeadingQuartet::horizontal_intervals method
  • VoiceLeadingQuartet::set_key method
  • VoiceLeadingQuartet::vertical_intervals method
  • VoiceLeadingQuartet::with_key method
  • verticality_positions_at fn
  • voice_leading_quartet_positions fn
▶omr::correctors
10 members
  • MeasureRelationship struct
  • PROBABILITY_ON_ADDITION const
  • PROBABILITY_ON_EQUALITY const
  • PROBABILITY_ON_OMISSION const
  • PriorsIntegrationScore struct
  • ScoreCorrector::into_score method
  • ScoreCorrector::single_parts method
  • SinglePart::incorrect_measures method
  • SinglePart::index_array method
  • SinglePart::part_number method
▶sieve
10 members
  • Sieve::contains method
  • Sieve::from_segment method
  • Sieve::intersection method
  • Sieve::interval_widths method
  • Sieve::segment_binary method
  • Sieve::segment_unit method
  • Sieve::segment_widths method
  • Sieve::shifted method
  • Sieve::symmetric_difference method
  • Sieve::union method
▶analysis::reduction
9 members
  • PartActivity struct
  • PartGroup struct
  • ReductiveNote::measure_index method
  • ReductiveNote::measure_offset method
  • ReductiveNote::parameters method
  • ReductiveParameters struct
  • ScoreReduction::set_chord_reduction method
  • ScoreReduction::set_score method
  • WeightedSpan struct
▶bar
9 members
  • ALL const
  • Barline::set_bar_type method
  • BarlineType enum
  • BarlineType::as_str method
  • Ending::number_text method
  • Ending::starts method
  • Ending::stops method
  • RepeatDirection enum
  • RepeatDirection::as_str method
▶figuredbass::realizer
9 members
  • FiguredBassLine::add_chord method
  • FiguredBassLine::in_key method
  • FiguredBassLine::in_key_and_time method
  • FiguredBassLine::is_empty method
  • FiguredBassLine::len method
  • Realization::fallbacks method
  • Realization::keyboard_style_output method
  • Realization::of method
  • Realization::set_keyboard_style_output method
▶key
9 members
  • Key::derive_by_degree_of method
  • Key::from_tonic method
  • Key::from_tonic_mode method
  • Key::harmonized_sevenths method
  • Key::harmonized_triads method
  • Key::mode method
  • Key::seventh_chord_from_degree method
  • Key::tonic_pitch method
  • Key::triad_from_degree method
▶figuredbass::segment
8 members
  • Consecutive struct
  • Possibility type
  • PossibilityPair type
  • Segment::from_pitch_names method
  • Segment::max_pitch method
  • Segment::num_parts method
  • Segment::overlaid method
  • Segment::pitches_above_bass method
▶midi
8 members
  • DEFAULT_TICKS_PER_QUARTER const
  • MidiNote struct
  • MidiNote::with_channel method
  • midi_notes_from_stream fn
  • read_midi_bytes fn
  • read_midi_bytes_with_tempo fn
  • stream_from_midi_notes fn
  • write_midi_bytes fn
▶romantext::tsv
8 members
  • Direction enum
  • TabChord struct
  • Version enum
  • Version::columns method
  • Version::from_number method
  • Version::read_columns method
  • figured_bass_of fn
  • to_tsv_with_extra fn
▶variant
8 members
  • LengthType enum
  • LengthType::as_str method
  • Variant::contents method
  • Variant::contents_mut method
  • Variant::from_stream method
  • Variant::groups_mut method
  • Variant::named method
  • Variant::set_replacement_quarter_length method
▶analysis::enharmonics
7 members
  • CHORDAL const
  • EnharmonicRules struct
  • EnharmonicRules::alteration_penalty method
  • EnharmonicRules::aug_dim_penalty method
  • EnharmonicRules::mixture_penalty method
  • MELODIC const
  • best_choice fn
▶dynamics
7 members
  • Dynamic::english_name method
  • Dynamic::from_scalar method
  • Dynamic::long_name method
  • Dynamic::set_placement method
  • Dynamic::set_value method
  • Dynamic::set_volume_scalar method
  • SHORT_NAMES const
▶humdrum::harm
7 members
  • Harm struct
  • Harm::alternative method
  • Harm::attribute method
  • Harm::implied method
  • Harm::intervals method
  • Harm::roman_figure method
  • Harm::secondary method
▶style
7 members
  • StyleValue enum
  • StyleValue::read method
  • TextStyle::set_align_horizontal method
  • TextStyle::set_align_vertical method
  • TextStyle::set_font_style method
  • TextStyle::set_font_weight method
  • TextStyle::set_justify method
▶abc
6 members
  • abc_chord fn
  • abc_duration fn
  • abc_note fn
  • abc_rest fn
  • pitch_name_from_abc_note fn
  • pitch_names_from_abc_chord fn
▶chord::guitar
6 members
  • GuitarFingering struct
  • GuitarStringFingering struct
  • GuitarTuning struct
  • GuitarTuning::standard method
  • GuitarTuning::strings method
  • GuitarTuningString struct
▶musicxml
6 members
  • CSS_COLORS const
  • DIVISIONS_PER_QUARTER const
  • ExportOptions struct
  • MUSICXML_VERSION const
  • css_color_hex fn
  • to_musicxml fn
▶analysis::harmonic_function
5 members
  • ALL const
  • FunctionDetail enum
  • HarmonicFunction enum
  • HarmonicFunction::from_symbol method
  • HarmonicFunction::main_function method
▶figuredbass::resolution
5 members
  • AugmentedSixth enum
  • AugmentedSixth::from_number method
  • AugmentedSixth::of method
  • ChordInfo struct
  • ChordInfo::of method
▶layout
5 members
  • Layout enum
  • Layout::class_name method
  • StaffType enum
  • StaffType::as_str method
  • Tenths enum
▶scale::hexatonicblues
5 members
  • ALL const
  • BluesForm enum
  • WeightedHexatonicBlues struct
  • WeightedHexatonicBlues::form_for_seed method
  • WeightedHexatonicBlues::sample method
▶scale::stepscale
5 members
  • StepScale struct
  • StepScale::cyclical_of method
  • StepScale::octave_repeating_of method
  • StepScale::sieve_by method
  • StepScale::steps method
▶tuningsystem::adaptive
5 members
  • AdaptiveTuningSystem enum
  • AdaptiveTuningSystem::cents_at method
  • AdaptiveTuningSystem::cents_vs_fixed_at method
  • AdaptiveTuningSystem::frequency_at method
  • RECURSIVE_JI const
▶tuningsystem::tuning
5 members
  • Just struct
  • Reference struct
  • Reference::a440 method
  • Reference::hertz method
  • Tuning trait
▶alpha::analysis::fixer
4 members
  • OrnamentFixer::fixed method
  • OrnamentFixer::trills method
  • OrnamentFixer::turns method
  • Recognizer enum
▶alpha::analysis::search
4 members
  • PitchAttribute enum
  • RunDirection enum
  • ScaleRun struct
  • ScaleRunOptions struct
▶analysis::windowed
4 members
  • WindowStep enum
  • WindowType enum
  • WindowedAnalysis::minimum_windows method
  • WindowedAnalysis::window_count method
▶figuredbass::possibility
4 members
  • DEFAULT_MAX_PITCH const
  • ItalianSixth struct
  • ItalianSixth::from_chord method
  • ItalianSixth::of method
▶makenotation
4 members
  • QUANTIZATION_DIVISORS const
  • make_measures_by fn
  • op_frac fn
  • set_stem_direction_for_beam_groups fn
▶volpiano
4 members
  • Break enum
  • Break::class_name method
  • from_volpiano fn
  • to_volpiano fn
▶alpha::analysis::aligner
3 members
  • Change struct
  • ChangeOp enum
  • StreamAligner::with_hasher method
▶alpha::analysis::hasher
3 members
  • HashReference struct
  • HashValue enum
  • NoteHash struct
▶audiosearch
3 members
  • AUDIO_CHUNK_LENGTH const
  • RECORD_SAMPLE_RATE const
  • monophonic_stream_from_wav fn
▶braille::basic
3 members
  • NoteContext struct
  • Transcription struct
  • tempo_to_braille fn
▶braille::text
3 members
  • BrailleText::add_measure_number_value method
  • BrailleText::current_line method
  • BrailleText::render method
▶features::language
3 members
  • LANGUAGE_CODES const
  • Trigram::distance method
  • language_name fn
▶figuredbass::scale
3 members
  • ALL const
  • FiguredBassMode enum
  • FiguredBassScale::mode method
▶error
2 members
  • Error enum
  • Result type
▶features::jsymbolic
2 members
  • JSYMBOLIC const
  • extractor fn
▶features::native
2 members
  • NATIVE const
  • extractor fn
▶lily
2 members
  • LilyOptions struct
  • to_lilypond fn
▶omr::evaluators
2 members
  • Evaluation struct
  • OmrGroundTruthPair::omr_mut method
▶romantext
2 members
  • from_roman_text fn
  • to_roman_text fn
▶analysis::correlate
1 member
  • pitch_to_dynamic_counts fn
▶analysis::floating_key
1 member
  • KeyAnalyzer::measure_count method
▶analysis::metrical
1 member
  • beat_depths fn
▶braille::translate
1 member
  • BrailleOptions struct
▶capella
1 member
  • from_capella fn
▶chord::tables
1 member
  • read_address fn
▶figuredbass::rules
1 member
  • Rules struct
▶humdrum
1 member
  • from_humdrum fn
▶mei
1 member
  • from_mei fn
▶musedata
1 member
  • from_musedata fn
▶noteworthy
1 member
  • from_noteworthy fn
▶text
1 member
  • ARTICLES const
▶tinynotation
1 member
  • from_tiny_notation fn

Counts are read out of the crate's own tables, so the report fails when one it names has gone. The list of members is derived: every public member of the crate, less every name music21 uses. It is bounded by what the map enumerates, so a member of a music21 class the map does not carry can appear here.