music21-rs

Crate report

commit a0a16a2 / music21 11.0.0b20 from float3/music21 26cfcc181 / Python 3.13.18 / Linux-7.0.0-1019-azure-x86_64-with-glibc2.43

music21 API ported 81.8% 1428 of 1745 members; 317 to port, 13 undecided
Line coverage 83.9% 83537 of 99517 lines
Own tests 2016 passing, across 3 suites Median speedup 70.2× over music21 with no Python in the way, across 33 operations Beyond music21 1524 public members music21 has nothing for, in 114 modules Source size 8.8 MB what cargo publishes music21's examples 99.9% 17402 of 17416 examples, across 96 modules
music21's docstrings 99.7% 1862 of 1867 docstrings, across 96 modules
music21's unit tests 100.0% 1096 of 1096 tests, across 96 modules
music21's own suite 0 regressions 5360 passing; the 0 failing are music21's own or listed

The suites that test the crate

7376 passing, all green

SuiteTestsResultPassedFailedCommand
Workspace crate passed 1434 0 cargo test --workspace --all-targets
Workspace doctests crate passed 323 0 cargo test --workspace --doc
Python parity and music21's doctests cratewheel passed 259 0 cargo nextest run --manifest-path python-parity/Cargo.toml --no-fail-fast
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 5360 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
83.9%83537 of 99517, 15980 not reached
Functions
85.8%10694 of 12467, 1773 not reached
Regions
83.1%103620 of 124679, 21059 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 70.2× median, across 33 cases

Casemusic21cratecrate ×
construction
Pitch('C#4')1.5 µs137 ns10.8×
Note('C#4')6.8 µs163 ns41.5×
Interval('P5')14.4 µs87 ns166.0×
Chord('C4 E4 G4')27.7 µs634 ns43.8×
chord analysis
Chord.commonName5 chords860.3 µs8.8 µs97.3×
Chord.root()5 chords194.3 µs——
Chord.inversion()5 chords285.8 µs4.1 µs70.5×
Chord.forteClass5 chords409.1 µs6.3 µs65.4×
Chord.primeForm5 chords417.5 µs7.0 µs60.1×
Chord.intervalVector5 chords415.3 µs7.2 µs57.8×
Chord.isDominantSeventh()5 chords391.7 µs4.1 µs95.8×
Chord.orderedPitchClasses5 chords185.8 µs4.9 µs38.2×
Chord: forteClass + primeForm + intervalVectorone chord, three questions93.1 µs2.9 µs32.0×
pitch
Pitch.transpose('M3')41.6 µs369 ns112.9×
Pitch.frequency1.4 µs269 ns5.3×
Pitch.getEnharmonic()33.4 µs——
Interval(p1, p2)15.7 µs297 ns53.0×
serial
pcToToneRow(...).matrix()4.2 ms4.9 µs846.9×
ToneRow.zeroCenteredTransformation402.5 µs528 ns763.0×
figured bass
Segment(G2, '7').allCorrectSinglePossibilities()4.4 ms52.2 µs83.8×
Segment(G2, '7') to Segment(C3), a dominant seventh resolving17.1 ms244.3 µs70.2×
Segment(C3) to Segment(D3, '4,3'), every pair of voicings6.2 ms83.6 µs73.6×
stream
Stream: append 100 noteseach note built and appended1.4 ms——
Stream: append 2000 noteseach note built and appended25.5 ms——
Stream: s[i] over 2000 notesone stream, every index1.5 ms——
Score.recurse().notes2 parts of 100 measures of 4 notes3.6 ms——
Score.flatten()2 parts of 100 measures of 4 notes, after an edit5.4 ms——
Part.makeMeasures()200 dotted quarters, a copy cut into measures23.4 ms——
read bach/bwv69.6.xmlmusic21's parse cache off; counting the notes read64.0 ms——
read schubert/Lindenbaum.xmlmusic21's parse cache off; counting the notes read337.5 ms——
write bach/bwv69.6.xmlas read by each side, written without makeNotation107.9 ms——
warm object
Chord.commonName (cached)music21 memoizes125 ns——
Chord.forteClass (cached)music21 memoizes2.2 µs——

music21 11.0.0b20, Python 3.13.18 (Linux-7.0.0-1019-azure-x86_64-with-glibc2.43). 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.

4053 of music21's own tests, timed on every side100s on music21, 89s on music21-rs, 90s on music21-rs-wheel; music21-rs median 1.00×

Testmusic21music21-rsmusic21-rs ×
furthest ahead
findTransformedHistorical (music21.serial.TwelveToneRow)94 ms1 ms84.44×
testOctaveRepeatingScaleClosesOnItsTonicSpelling (music21.scale.test_scale_main.Test.testOctaveRepeatingScaleClosesOnItsTonicSpelling)124 ms2 ms62.01×
isTranspositionallySymmetrical (music21.chord.Chord)108 ms3 ms39.84×
getZRelation (music21.chord.Chord)56 ms2 ms28.78×
fromIntervalVector (music21.chord)60 ms2 ms28.23×
findHistorical (music21.serial.TwelveToneRow)31 ms1 ms27.48×
testAugmented (music21.roman.Test.testAugmented)97 ms4 ms21.89×
fromForteClass (music21.chord)39 ms2 ms19.63×
simplifyMultipleEnharmonics (music21.pitch)38 ms2 ms19.40×
testSetFigureReparsesSecondaryAndAugmentedSixth (music21.roman.Test.testSetFigureReparsesSecondaryAndAugmentedSixth)44 ms2 ms17.76×
TranspositionChecker (music21.analysis.transposition)39 ms2 ms17.57×
testPreferSecondaryDominantsSkipsDiatonicChords (music21.roman.Test.testPreferSecondaryDominantsSkipsDiatonicChords)32 ms2 ms17.30×
furthest behind
testPartitionOptionsAddUpToMeter (music21.meter.tests.Test.testPartitionOptionsAddUpToMeter)1 ms7 ms0.18×
tupleEqualityWithoutReference (music21.alpha.analysis.aligner.StreamAligner)2 ms7 ms0.26×
pedalObjectToXml (music21.musicxml.m21ToXml.MeasureExporter)2 ms7 ms0.27×
testCompressedSizeLimit (music21.noteworthy.binaryTranslate.Test.testCompressedSizeLimit)4 ms14 ms0.29×
testTimeSignature (music21.midi.tests.Test.testTimeSignature)5 ms17 ms0.29×
SaxophoneFractionFeature (music21.features.jSymbolic)4 ms14 ms0.30×
test_example09_4b (music21.braille.test.Test.test_example09_4b)4 ms13 ms0.32×
unfreeze (music21.duration.FrozenDuration)2 ms4 ms0.36×
testARFFNumericClassValues (music21.features.outputFormats.Test.testARFFNumericClassValues)15 ms39 ms0.40×
testHaveAccidentalsBeenMadeB (music21.stream.tests.Test.testHaveAccidentalsBeenMadeB)8 ms18 ms0.42×
testCoreUnit2 (music21.mei.test_base.Test.testCoreUnit2)5 ms12 ms0.42×
testChordifyA (music21.stream.tests.Test.testChordifyA)5 ms11 ms0.43×

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 4053 tests, side by side →

What each costs to install

music21
88.8 MBinstalled package, corpus and all
music21-rs
8.8 MBthe source cargo publishes

Against music21's own tests

17402 of 17416 examples and 1096 of 1096 unit tests, across 96 modules, 3 with no harness yet

ModuleDocstringsExamplesUnit tests
music21.stream.base
144 of 144
2278 of 2278
274 of 274
music21.chord
108 of 108
990 of 990
30 of 30
music21.pitch
84 of 84
934 of 934
39 of 39
music21.interval
107 of 107
771 of 771
15 of 15
music21.duration
56 of 56
607 of 607
17 of 17
music21.roman
36 of 36
567 of 567
36 of 36
music21.search.serial
23 of 23
564 of 564
none
music21.voiceLeading
61 of 61
515 of 515
2 of 2
music21.features.jSymbolic
80 of 80
433 of 433
20 of 20
music21.spanner
39 of 39
419 of 419
30 of 30
music21.meter.core
56 of 56
411 of 411
none
music21.meter.base
34 of 34
395 of 395
38 of 38
music21.scale
69 of 69
378 of 378
68 of 68
music21.metadata
54 of 54
370 of 370
9 of 9
music21.variant
25 of 25
370 of 370
7 of 7
music21.harmony
26 of 26
364 of 364
28 of 28
music21.expressions
40 of 40
350 of 350
12 of 12
music21.note
33 of 33
343 of 343
14 of 14
music21.alpha.analysis.aligner
13 of 13
322 of 322
10 of 10
music21.stream.makeNotation
11 of 11
255 of 255
17 of 17
music21.key
18 of 18
245 of 245
7 of 7
music21.braille.segment
19 of 19
219 of 219
11 of 11
music21.repeat
26 of 26
215 of 215
44 of 44
music21.figuredBass.possibility
16 of 16
211 of 211
none
music21.braille.basic
25 of 25
199 of 199
3 of 3
music21.tempo
27 of 27
196 of 196
17 of 17
music21.search.base
22 of 22
185 of 185
2 of 2
music21.instrument
23 of 23
181 of 181
13 of 13
music21.metadata.primitives
31 of 31
176 of 176
9 of 9
music21.tree.verticality
14 of 14
173 of 173
1 of 1
music21.figuredBass.resolution
13 of 13
172 of 172
none
music21.omr.correctors
21 of 21
164 of 164
none
music21.layout
21 of 21
158 of 158
2 of 2
music21.clef
29 of 29
151 of 151
7 of 7
music21.serial
22 of 22
149 of 149
6 of 6
music21.braille.text
14 of 14
135 of 135
3 of 3
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.tree.spans
14 of 14
116 of 116
1 of 1
music21.beam
13 of 13
112 of 112
2 of 2
music21.audioSearch
15 of 15
107 of 107
1 of 1
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
2 of 2
music21.alpha.analysis.fixer
1 of 1
91 of 91
4 of 4
music21.romanText.clercqTemperley
14 of 14
90 of 90
1 of 1
music21.alpha.analysis.hasher
10 of 10
86 of 86
8 of 8
music21.tree.timespanTree
12 of 12
85 of 85
4 of 4
music21.features.base
16 of 16
82 of 82
10 of 10
music21.figuredBass.realizer
8 of 8
80 of 80
3 of 3
music21.text
10 of 10
80 of 80
3 of 3
music21.style
16 of 16
76 of 76
none
music21.romanText.tsvConverter
13 of 13
75 of 75
8 of 8
music21.features.native
19 of 19
74 of 74
5 of 5
music21.figuredBass.examples
11 of 11
71 of 71
none
music21.chord.tables
10 of 10
65 of 65
4 of 4
music21.analysis.reduceChordsChordReducer.collapseArpeggios fails on purpose: refused by design: it walks music21's mutable timespan tree while editing itChordReducer.keepHeaviestSlices fails on purpose: refused by design: its slices hold music21's Verticality objects from the mutable timespan treeChordReducer.measureSlices fails on purpose: refused by design: it answers music21's Verticality objects from the mutable timespan treeChordReducer.sliceWeights fails on purpose: refused by design: its slices hold music21's Verticality objects from the mutable timespan tree
6 of 11
48 of 62
12 of 12
music21.scale.scala
7 of 7
55 of 55
5 of 5
music21.tablature
8 of 8
55 of 55
4 of 4
music21.dynamics
6 of 6
49 of 49
6 of 6
music21.volume
9 of 9
46 of 46
9 of 9
music21.bar
7 of 7
43 of 43
3 of 3
music21.analysis.windowed
3 of 3
35 of 35
6 of 6
music21.midi.percussion
3 of 3
31 of 31
69 of 69
music21.braille.translate
4 of 4
30 of 30
3 of 3
music21.analysis.transposition
7 of 7
28 of 28
7 of 7
music21.tree.fromStream
3 of 3
28 of 28
3 of 3
music21.omr.evaluators
5 of 5
27 of 27
none
music21.figuredBass.realizerScale
4 of 4
26 of 26
none
music21.search.segment
4 of 4
25 of 25
none
music21.figuredBass.harmony
4 of 4
24 of 24
none
music21.braille.noteGrouping
3 of 3
23 of 23
2 of 2
music21.analysis.harmonicFunction
2 of 2
22 of 22
4 of 4
music21.percussion
2 of 2
18 of 18
none
music21.search.lyrics
3 of 3
17 of 17
3 of 3
music21.analysis.floatingKey
2 of 2
14 of 14
1 of 1
music21.analysis.patel
2 of 2
14 of 14
none
music21.analysis.metrical
2 of 2
13 of 13
none
music21.tie
2 of 2
13 of 13
1 of 1
music21.humdrum.harmParser
1 of 1
11 of 11
43 of 43
music21.analysis.correlate
1 of 1
8 of 8
2 of 2
music21.languageExcerpts.naturalLanguageObjects
3 of 3
7 of 7
3 of 3
music21.analysis.pitchAnalysis
1 of 1
7 of 7
none
music21.braille.lookup
2 of 2
6 of 6
1 of 1
music21.analysis.enharmonics
1 of 1
6 of 6
4 of 4
music21.analysis.segmentByRests
2 of 2
6 of 6
2 of 2
music21.figuredBass.rules
1 of 1
5 of 5
none
music21.braille.examples
1 of 1
4 of 4
3 of 3
music21.analysis.elements
1 of 1
4 of 4
none
music21.analysis.reduction
1 of 1
3 of 3
21 of 21
music21.tree.toStream
1 of 1
2 of 2
none
music21.tree.analysisno harness yet none none none
music21.alpha.analysis.ornamentRecognizerno harness yet none none
3 of 3
music21.alpha.analysis.searchno harness yet none none
2 of 2
every module
1862 of 1867
17402 of 17416
1096 of 1096

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

1745 members:1428 in the crate

207 classes
▶Chordchord/__init__.py crate 96 of 96

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
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
▶MidiPercussionMapMixininstrument.py crate 1 of 1

How an instrument in the General MIDI percussion map is played, and the drum that plays. v11 moved this out of UnpitchedPercussion into a mixin, the map being a synthesizer's layout rather than a family of instruments -- which is how a whistle, a flute, comes to be in it.

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 4 of 5
1 to port

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

music21Cratemusic21-rs
modifymissingno reason given
weightportedweight
numeratorportednumerator
denominatorporteddenominator
depthporteddepth
▶MeterNodemeter/core.py crate 7 of 8
1 to port

What a span and a divided span have in common: their length, comparing ratios, and dividing.

music21Cratemusic21-rs
subdividemissingno reason given
numeratorportednumerator
denominatorporteddenominator
weightportedweight
durationportedquarter_length
ratioEqualportedratio_equal
subdivideByCountportedsubdivide_by_count
subdivideByListportedsubdivide_by_list
▶MeterSequencemeter/core.py crate 27 of 30
3 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
modifymissingno reason given
loadmissingraises in music21, since a sequence cannot change; a new one is built instead
partitionedmissingone method dispatching on the type of what it is handed; the three partitions it dispatches to are each ported
setIndexportedset_index
partitionDisplayportedpartition_display
getPartitionOptionsportedpartition_options
partitionedByCountportedpartitioned_by_count
partitionedByListportedpartitioned_by_list
partitionedByOtherMeterSequenceportedpartitioned_by_other
subdividedPartitionsEqualportedsubdivided_partitions_equal
subdividedNestedHierarchyportedsubdivided_nested_hierarchy
partitionStrportedpartition_string
numeratorportednumerator
denominatorporteddenominator
weightportedweight
withWeightportedwith_weight
flattenportedflatten
flatWeightportedflat_weights
depthporteddepth
isUniformPartitionportedis_uniform_partition
getLevelListportedlevel_list
getLevelportedlevel
getLevelSpanportedlevel_span
getLevelWeightportedlevel_weight
withLevelWeightportedwith_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
▶expressions.py functionsexpressions.py crate 1 of 2
1 to port

The two functions beside music21's ornament classes: a note's ornaments played out in turn, each realizing what the one before left of it, which is realize_ornaments. The stream-level realizeOrnaments of the same name is stream/makeNotation.py's and is listed there.

music21Cratemusic21-rs
isUnisonmissingwhether an ornament's interval leaves the note where it sounds, which music21 asks of each of its three interval classes before deciding whether the ornament moves the note: the crate's Interval::is_unison is the generic question -- a unison whatever its quality -- and the sounding one is ChromaticInterval::semitones, so there is nothing to dispatch between here
realizeOrnamentsportedrealize_ornaments
▶stream/makeNotation.py functionsstream/makeNotation.py crate 12 of 17
5 to port

The notation a score leaves unsaid, worked out: measures, ties, rests, voices, beams, stem directions, tuplet brackets and accidentals, each a function over a stream as music21's is. music21's makeAccidentals and makeAccidentalsInMeasureStream are one function here, make_accidentals: given a part it walks the measures itself, carrying the key in force and the measure before -- all but that measure's ornamental pitches, which is the same thing the step itself leaves out. musicxml_make_notation_parity holds the whole of it to music21 byte for byte on 257 subjects.

music21Cratemusic21-rs
moveNotesToVoicesmissingthe half of makeVoices that moves the notes into a voice, which make_voices does itself: there is no stream here for a caller to hold between the two steps
ornamentalPitchesmissingevery ornamental pitch of a whole stream, which music21 gathers again for each measure's context: make_accidentals keeps the ones it decided as it went instead, make_ornamental_accidentals answering them note by note, and expressions::Ornament::ornamental_pitches answers for one ornament given the note's pitch and the key
iterateBeamGroupsmissingthe beam groups a stream's notes make, which set_stem_direction_for_beam_groups walks itself; a caller wanting them reads the beams each note carries
setStemDirectionOneGroupmissingone group of that walk
saveAccidentalDisplayStatusmissinga context manager that puts the display status back after an edit that rewrites it; a caller here keeps its own copy of what it wants back, there being no with to hang it on
makeBeamsportedmake_beams
makeMeasuresportedmake_measures
makeRestsportedmake_rests
makeTiesportedmake_ties
makeTupletBracketsportedmake_tuplet_brackets
realizeOrnamentsportedrealize_ornaments
getTiePitchSetportedtie_pitch_set
makeAccidentalsInMeasureStreamportedmake_accidentals
makeOrnamentalAccidentalsportedmake_ornamental_accidentals
setStemDirectionForBeamGroupsportedset_stem_direction_for_beam_groups
splitElementsToCompleteTupletsportedsplit_elements_to_complete_tuplets
consolidateCompletedTupletsportedconsolidate_completed_tuplets
▶analysis/elements.py functionsanalysis/elements.py crate 1 of 1

How often each value of some property of a stream's elements comes, counted in the order each value is first met as Python's Counter counts. The property is a function of the element rather than the name of one, and the elements are whatever reading the caller counts over, as music21 takes a stream or a stream iterator.

music21Cratemusic21-rs
attributeCountportedattribute_count
▶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 106 of 131
25 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
mergeAttributesmissingwhat clone_empty carries over
indexmissingas elementOffset
removemissingtakes a named object out; retain_leaves and remove_event take out by place or by test
setElementOffsetmissingmoves one object; an event's offset is fixed once it is in a stream, so an element is moved by taking it out (remove_event) and inserting it again
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 (set_right_barline). The wheel stores a barline as the right one and refuses anything else
isAtEndmissingasks whether one object is kept at the end; a crate stream owns values rather than objects, and keeps only a measure's barlines there (right_barline). The wheel answers it for the right barline
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
transferOffsetToElementsmissingmoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep
sortmissinga crate stream keeps itself in music21's order as it is built: insert and push put each element where music21's sort would, by offset and then class, and from_events keeps the order it is given at one offset, which is where music21's priorities are handed in; there is nothing left to sort
sortedmissingas sort
containerInHierarchymissingneeds the sites a crate stream does not keep
makeImmutablemissingmusic21's mutability machinery, which a value has no need of
makeMutablemissingas makeImmutable
beatmissingwhere one element sits in its bar; placed answers it for every element at once, and beat_and_measure_from_offset for a point. The wheel's Stream.placed(), its own member, hands the crate's answers back with each element, its offset and its measure number
beatStrmissingas beat
beatStrengthmissingas beat
attachMelodicIntervalsmissingattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line
iterportediter
firstportedfirst
lastportedlast
elementsportedevents
clefportedclef
timeSignatureportedtime_signature_at
keySignatureportedkey_signature_at
staffLinesportedstaff_lines
clearportedclear
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
getElementByIdportedelement_by_id
getElementsByOffsetportedelements_in_span
getElementAtOrBeforeportedelement_at_or_before
getElementBeforeOffsetportedelement_before_offset
getElementAfterElementportedelement_after
measuresportedmeasures_between
measureportedmeasure
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
haveAccidentalsBeenMadeportedaccidentals_made
makeNotationportedmake_notation
extendDurationportedextend_duration
stripTiesportedstrip_ties
extendTiesportedextend_ties
flattenportedflatten
recurseportedrecurse
highestOffsetportedhighest_offset
highestTimeportedhighest_time
lowestOffsetportedlowest_offset
durationportedduration
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
measuremissinga score of each part's measure of one number; measures_between(n, Some(n)) answers it, measure reading only a stream's own measures
partsportedparts
measuresportedmeasures_between
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. The wheel answers it from those built in
mostLikelyLanguageportedmost_likely_language
mostLikelyLanguageNumericportedmost_likely_language_numeric
▶Trigramtext.py crate 3 of 6
3 to port
music21Cratemusic21-rs
measuremissingthe step that counts the letter triples, which building one does
makeWordsmissingno reason given
likelymissingwhich language a trigram is nearest, which most_likely_language answers
lengthportedlength
parseExcerptportedadd_text
similarityportedsimilarity
▶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; without music21 it has its own Style and NoteStyle, which the wheel column counts.

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. The wheel has one, for use without music21
NoteStylemissinghow a note is drawn beyond its colour and its size, which the crate does not model. The wheel has one, for use without music21
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 7 of 10
3 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
SpannerportedSpanner
SlurportedSlur
MultiMeasureRestportedMultiMeasureRest
RepeatBracketportedEnding
OttavaportedOttava
LineportedLine
GlissandoportedGlissando
▶Spannerspanner.py crate 7 of 14
7 to port

The leaves a spanner joins are positions in Stream::leaves, so what it holds is the stream's to hand back, and it is edited by position: an element is joined once, as music21 joins an object once.

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
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
addSpannedElementsportedadd_spanned_elements
insertFirstSpannedElementportedinsert_first_spanned_element
hasSpannedElementportedhas_spanned_element
replaceSpannedElementportedreplace_spanned_element
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
▶MultiMeasureRestspanner.py crate 1 of 1

Rests of several measures drawn as one; how it is drawn and counted is its MultiRest.

music21Cratemusic21-rs
numRestsportednum_rests
▶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: an analysis that *shortens* a score, where repeats plays one out. The crate writes repeat marks readily enough (src/repeat.rs, and the MusicXML writer writes them) -- what it has none of is the search for a passage worth marking
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 7 of 7

Playing a score's repeats out, which Stream::expand_repeats does in one and repeat::Expander a step at a time. Its steps take a stream of measures and hand back a new one, leaving the stream they were given as it was.

music21Cratemusic21-rs
processportedexpand_repeats
measureMapportedmeasure_map
repeatBarsAreCoherentportedrepeat_bars_are_coherent
findInnermostRepeatIndicesportedfind_innermost_repeat_indices
processInnermostRepeatBarsportedprocess_innermost_repeat_bars
getRepeatExpressionIndexportedrepeat_expression_index
isExpandableportedis_expandable
▶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
▶Datemetadata/primitives.py crate 5 of 8
3 to port

A date as music21 keeps one: any part may be missing and any part may say how sure it is, which is why music21 wrote a type of its own rather than using Python's datetime. The six parts are read and written by name through one pair of members (value, set) where music21 keeps an attribute and an error attribute for each.

music21Cratemusic21-rs
loadmissingreads a date from a string, a number, a datetime or another date, which from_written, from_parts and take_from each answer for the kind they take
loadDatetimemissingreads a date out of one of Python's, which the crate has no type for: a caller hands the parts over
datetimemissinganswers one of Python's datetimes, likewise
errorToSymbolportedsymbol
loadOtherportedtake_from
loadStrportedfrom_written
hasTimeportedhas_time
hasErrorportedhas_certainty
▶DatePrimitivemetadata/primitives.py crate 1 of 2
1 to port

One or more dates and what they say, which is music21's relevance. Its four subclasses differ only in the relevances they take and in how they are written, so one type carries all four and DateKind says which it is.

music21Cratemusic21-rs
datetimemissinganswers one of Python's datetimes for the first date, which the crate has no type for
relevanceportedrelevance
▶DateRelativemetadata/primitives.py crate 1 of 1

A date something happened before or after: DatePrimitive::relative.

music21Cratemusic21-rs
relevanceportedrelevance
▶DateBetweenmetadata/primitives.py crate 1 of 1

A span between two dates: DatePrimitive::between.

music21Cratemusic21-rs
relevanceportedrelevance
▶DateSelectionmetadata/primitives.py crate 1 of 1

A choice among dates: DatePrimitive::selection.

music21Cratemusic21-rs
relevanceportedrelevance
▶Textmetadata/primitives.py crate 2 of 2

One piece of text a score says about itself: what it says, the language it is written in, whether it is a translation, and the scheme it was encoded by.

music21Cratemusic21-rs
languageportedlanguage
getNormalizedArticleportednormalized_article
▶Contributormetadata/primitives.py crate 5 of 6
1 to port

Somebody who had a hand in a work, under one or more names, with the dates of a life where they are known. A role may be given as one of Humdrum's ten abbreviations, which is read as the role it stands for.

music21Cratemusic21-rs
agemissinghow long they lived, which is arithmetic over two dates a caller has
nameportedname
namesportednames
roleportedrole
abbreviationToRoleportedrole_of_abbreviation
roleToAbbreviationportedabbreviation_of_role
▶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 15 of 17
2 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
elementmissingthe element a timespan holds, which ElementTimespan::element answers
elementEndTimeportedend_time
offsetportedlowest_position
removeTimespanListportedremove_timespan_list
removeTimespanportedremove_timespan
findNextPitchedTimespanInSameStreamByClassportednext_in_same_part
findPreviousPitchedTimespanInSameStreamByClassportedprevious_in_same_part
getVerticalityAtOrBeforeportedverticality_at_or_before
iterateConsonanceBoundedVerticalitiesportedconsonance_bounded_verticalities
iterateVerticalitiesportedverticalities
iterateVerticalitiesNwiseportedverticalities_nwise
splitAtportedsplit_at
toPartwiseTimespanTreesportedto_partwise_timespan_trees
unwrapVerticalitiesportedunwrap
allPartsportedall_parts
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 10 of 12
2 to port

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

music21Cratemusic21-rs
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
getClassPositionLabelsportedclass_position_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 13 of 14
1 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
showChangesmissingprints the changes, and colours the notes of the score to show them
getDefaultHasherporteddefault_hasher
alignportedalign
makeHashedStreamsportedalign
setupDistanceMatrixportedsetup_distance_matrix
populateDistanceMatrixportedpopulate_distance_matrix
getPossibleMovesFromLocationportedmoves_from_location
getOpFromLocationportedop_from_location
insertCostportedinsert_cost
deleteCostporteddelete_cost
substitutionCostportedsubstitution_cost
calculateNumSimilaritiesportednum_similarities
tupleEqualityWithoutReferenceportedhashes_equal_without_reference
calculateChangesListportedchange_places
▶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 2 of 8
6 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
fixportedfix_enharmonics
intervalTooBigportedinterval_too_big
▶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 13 of 14
1 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
runPriorModelmissingboth models run and the score corrected, which run does
runportedrun
getAllHashesportedall_hashes
getSinglePartportedsingle_part_mut
runHorizontalCorrectionModelportedrun_horizontal_correction_model
getMeasureSliceportedslice_hashes
getAllIncorrectMeasuresportedall_incorrect_measures
verticalProbabilityDistportedvertical_probability_dist
getVerticalProbabilityDistributionSinglePartportedvertical_probability_dist_of_part
getVerticalProbabilityDistributionSinglePartSingleMeasureportedvertical_probability_dist_of_measure
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 11 of 15
4 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
getProbabilityOnEqualitymissingthe odds of two measures reading alike, which is the PROBABILITY_ON_EQUALITY constant
getProbabilityOnOmissionmissingthe odds of a note left out, PROBABILITY_ON_OMISSION
getProbabilityOnAdditionmissingthe odds of a note put in, PROBABILITY_ON_ADDITION
getHashStringportedmeasure_hash
hashNoteportedhash_note
hashGraceportedhash_grace
hashRestportedhash_rest
hashQuarterLengthportedhash_quarter_length
getMeasureDifferenceportedmeasure_difference
getOpCodesportedopcodes
getProbabilityBasedOnChangesportedprobability_based_on_changes
differenceProbabilityForOneOpCodeportedprobability_for_one_opcode
getProbabilityOnSubstituteportedprobability_on_substitute
getProbabilityFromOneCharSubportedprobability_from_one_char_sub
▶MeasureSliceomr/correctors.py crate 2 of 2

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

music21Cratemusic21-rs
getSliceHashesportedslice_hashes
runSliceSearchportedslice_search
▶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
▶ChordReduceranalysis/reduceChords.py crate 8 of 22
14 to port

A score reduced to the chords it is made of: reduce_chords is music21's run, which reads the notes as spans of time, thins them out step by step, chordifies what is left against the score and reduces each measure to the few chords weighing most in it. The whole is held to music21 by reduce_chords_parity on twelve corpus scores. The steps music21 documents on their own are public here -- a measure's weights and its reduction, and the slices a measure is cut into, their weights, the heaviest kept and what is consonant -- and reduced_measure_places is the latter read as places, which is what lets a facade edit music21's own measure.

music21Cratemusic21-rs
alignHocketsmissinga step music21 offers and its own run never takes: it moves a verticality's spans back where the moment before it sounds a subset of its notes, editing that mutable tree as it walks
collapseArpeggiosmissinga step run never takes: it makes one chord of two neighbours standing on the same bass, walking that mutable tree and editing it as it goes -- and the walk is *live*, measured on real music: a span it fuses is fused again later, so Beach's fifth part goes from 312 spans to 268 on 18 fusions. Reading it without the tree would mean porting music21's own walk over one, which is the tree decision in miniature, so the wheel refuses it with that reason
fillBassGapsmissinga step inside the reduction, as removeZeroDurationTimespans
fillMeasureGapsmissinga step inside the reduction, as removeZeroDurationTimespans
fuseTimespansByPartmissinga step inside the reduction, as removeZeroDurationTimespans
qlbsmpConsonancemissingone of ChordWeight's four, which ChordWeight::of weighs a chord by: this is the one a reduction weighs by
quarterLengthBeatStrengthmissingone of ChordWeight's four, likewise
quarterLengthBeatStrengthMeasurePositionmissingone of ChordWeight's four, likewise
quarterLengthOnlymissingone of ChordWeight's four, likewise, and the one computeMeasureChordWeights weighs by when it is handed none
removeNonChordTonesmissinga step run never takes: it joins the two spans of a passing or neighbour tone, editing that tree likewise
removeShortTimespansmissinga step inside the reduction, as removeZeroDurationTimespans
removeVerticalDissonancesmissinga step inside the reduction, as removeZeroDurationTimespans
removeZeroDurationTimespansmissinga step inside the reduction, which reduce_chords drives: the steps work on a list of spans of the crate's own rather than on the mutable timespan tree a caller holds and music21's own step edits as it walks
splitByBassmissinga step inside the reduction, as removeZeroDurationTimespans
runportedreduce_chords
measureSlicesportedmeasure_slices
sliceWeightsportedslice_weights
sliceWeightportedslice_weight
keepHeaviestSlicesportedkeep_heaviest_slices
isConsonantportedis_consonant
computeMeasureChordWeightsportedmeasure_chord_weights
reduceMeasureToNChordsportedreduce_measure_to_n_chords
▶braille/noteGrouping.py functionsbraille/noteGrouping.py crate 1 of 1

A note grouping written out as braille, which is one function here: transcribe_note_grouping walks the grouping's elements as music21's does, and what music21 keeps on a transcriber object between the calls is that function's arguments and the grouping's own fields.

music21Cratemusic21-rs
transcribeNoteGroupingportedtranscribe_note_grouping
▶NoteGroupingTranscriberbraille/noteGrouping.py crate 0 of 13
13 to port

The object music21 keeps the transcription's state on while it walks a grouping. There is no such object here: transcribe_note_grouping is the whole of it, its settings are read off the grouping as music21 reads them, and each translate* is a branch of the walk.

music21Cratemusic21-rs
resetmissingstate between groupings, which a function that takes the grouping has none of
showClefSignsmissingread off the grouping, as music21's transcriber reads it: BrailleElementGrouping::show_clef_signs
upperFirstInFingeringmissingread off the grouping, as showClefSigns: upper_first_in_note_fingering
transcribeGroupmissingthe whole of transcribe_note_grouping
translateNotemissinga branch of the walk
translateRestmissinga branch of the walk
translateChordmissinga branch of the walk
translateDynamicmissinga branch of the walk
translateTextExpressionmissinga branch of the walk
translateBarlinemissinga branch of the walk
translateClefmissinga branch of the walk
transcribeOneElementmissingone turn of that walk
optionallyAddDotToPreviousmissingpart of the walk, which writes the dot where the element before it needs one
▶languageExcerpts/naturalLanguageObjects.py functionslanguageExcerpts/naturalLanguageObjects.py crate 2 of 4
2 to port

A pitch read from what it is called in German, French, Italian or Spanish, which is the other direction of Pitch::german and its three sisters: language_dictionary writes every name the language has, as music21's generateLanguageDictionary does, and from_language_name reads one back, answering a C natural where the language calls no pitch that. music21's own doctests for the module run against it (doctest_naturallanguage), and language_names_parity compares every pair of all four languages with music21's own dictionary.

music21Cratemusic21-rs
toNotemissinga note built on what from_language_name read, which is Note::new(pitch) here and is music21's own one-liner
toChordmissinga chord built on what it read, as toNote
generateLanguageDictionaryportedlanguage_dictionary
toPitchportedfrom_language_name
▶converter/__init__.py functionsconverter/__init__.py crate 0 of 12
12 to port

Not the crate's: each reader and writer is a function on the stream it reads or writes. The wheel's converter is Python over them (python/pysrc/music21_rs/converter.py): it tells a format by extension or content as music21 does and hands the file to the crate's reader for it, MuseScore included.

music21Cratemusic21-rs
resetSubConvertersmissingthe subconverter machinery: the readers are the crate's own, chosen by format
registerSubConvertermissingthe subconverter machinery, as resetSubConverters
unregisterSubConvertermissingthe subconverter machinery, as resetSubConverters
parseFilemissingno reason given
parseDatamissingno reason given
parseURLmissingno reason given
parsemissingno reason given
toDatamissingno reason given
freezemissingmusic21's pickle cache, which the wheel does not keep: every parse reads the file
thawmissingmusic21's pickle cache, as freeze
freezeStrmissingmusic21's pickle cache, as freeze
thawStrmissingmusic21's pickle cache, as freeze
▶corpus/__init__.py functionscorpus/__init__.py crate 0 of 9
9 to port

Not the crate's, which reads no files of its own choosing. The wheel's corpus (python/pysrc/music21_rs/corpus.py) finds a work in the directory MUSIC21_RS_CORPUS names, or in an installed music21's, and reads it with the wheel's converter.

music21Cratemusic21-rs
getCorePathsmissingno reason given
getLocalPathsmissingthe local corpus, a setting of music21's environment
addPathmissingthe local corpus, as getLocalPaths
getPathsmissingno reason given
cacheMetadatamissingthe corpus's metadata bundles, which the wheel does not keep
getComposermissinga search of the metadata bundles, as cacheMetadata
noCorpusmissingmusic21's installation without its corpus, which the wheel answers by MUSIC21_RS_CORPUS
getWorkmissingno reason given
parsemissingno reason given

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

317 members, 13 with no reason given

music21 memberWhy notWheel
undecided — 13
MeterTerminal.modifymeter/core.pyno reason givenin the wheel
MeterNode.subdividemeter/core.pyno reason givenin the wheel
MeterSequence.modifymeter/core.pyno reason givenin the wheel
Trigram.makeWordstext.pyno reason givennot in the wheel
parseFileconverter/__init__.pyno reason givenin the wheel
parseDataconverter/__init__.pyno reason givenin the wheel
parseURLconverter/__init__.pyno reason givenin the wheel
parseconverter/__init__.pyno reason givenin the wheel
toDataconverter/__init__.pyno reason givenin the wheel
getCorePathscorpus/__init__.pyno reason givenin the wheel
getPathscorpus/__init__.pyno reason givenin the wheel
getWorkcorpus/__init__.pyno reason givenin the wheel
parsecorpus/__init__.pyno reason givenin the wheel
left out, with a reason — 304
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 onenot in 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 thosenot in 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 insteadnot in the wheel
TimeSignature.loadmeter/base.pyrebuilding a meter in place; a new one is built insteadnot in 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 doesnot in 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 doesnot in 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 nonenot in 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 outin 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 backin the wheel
CTRule.expandExpansionContentromanText/clercqTemperley.pya step inside the expansion, which the crate drives from the song rather than from the rule keeping the statein the wheel
CTRule.expandSimpleContentromanText/clercqTemperley.pya step inside the expansion, as expandExpansionContentin the wheel
CTRule.addOptionalTieAndLyricsromanText/clercqTemperley.pya step inside the expansion, which ties the chord before as it writes the one afterin the wheel
CTRule.insertKsTsromanText/clercqTemperley.pya step inside the expansion: the crate writes the key and the meter into a measure as it builds itin 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 pathsin 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.loadmeter/core.pyraises in music21, since a sequence cannot change; a new one is built insteadin the wheel
MeterSequence.partitionedmeter/core.pyone method dispatching on the type of what it is handed; the three partitions it dispatches to are each portedin the wheel
Ornament.fillListOfRealizedNotesexpressions.pya helper realize fills its lists with; realize is portednot in 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
isUnisonexpressions.pywhether an ornament's interval leaves the note where it sounds, which music21 asks of each of its three interval classes before deciding whether the ornament moves the note: the crate's Interval::is_unison is the generic question -- a unison whatever its quality -- and the sounding one is ChromaticInterval::semitones, so there is nothing to dispatch between herein the wheel
moveNotesToVoicesstream/makeNotation.pythe half of makeVoices that moves the notes into a voice, which make_voices does itself: there is no stream here for a caller to hold between the two stepsnot in the wheel
ornamentalPitchesstream/makeNotation.pyevery ornamental pitch of a whole stream, which music21 gathers again for each measure's context: make_accidentals keeps the ones it decided as it went instead, make_ornamental_accidentals answering them note by note, and expressions::Ornament::ornamental_pitches answers for one ornament given the note's pitch and the keyin the wheel
iterateBeamGroupsstream/makeNotation.pythe beam groups a stream's notes make, which set_stem_direction_for_beam_groups walks itself; a caller wanting them reads the beams each note carriesin the wheel
setStemDirectionOneGroupstream/makeNotation.pyone group of that walknot in the wheel
saveAccidentalDisplayStatusstream/makeNotation.pya context manager that puts the display status back after an edit that rewrites it; a caller here keeps its own copy of what it wants back, there being no with to hang it onnot in 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.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 testnot in the wheel
Stream.setElementOffsetstream/base.pymoves one object; an event's offset is fixed once it is in a stream, so an element is moved by taking it out (remove_event) and inserting it againnot in the wheel
Stream.elementOffsetstream/base.pyasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offsetnot in the wheel
Stream.storeAtEndstream/base.pyelements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own here (set_right_barline). The wheel stores a barline as the right one and refuses anything elsenot in the wheel
Stream.isAtEndstream/base.pyasks whether one object is kept at the end; a crate stream owns values rather than objects, and keeps only a measure's barlines there (right_barline). The wheel answers it for the right barlinenot 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.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.sortstream/base.pya crate stream keeps itself in music21's order as it is built: insert and push put each element where music21's sort would, by offset and then class, and from_events keeps the order it is given at one offset, which is where music21's priorities are handed in; there is nothing left to sortnot in the wheel
Stream.sortedstream/base.pyas sortnot in 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.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 point. The wheel's Stream.placed(), its own member, hands the crate's answers back with each element, its offset and its measure numbernot 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.pya score of each part's measure of one number; measures_between(n, Some(n)) answers it, measure reading only a stream's own measuresnot in 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 IO. The wheel answers it from those built inin the wheel
Trigram.measuretext.pythe step that counts the letter triples, which building one doesin 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 holdsin 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 scorein 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 drawn. The wheel has one, for use without music21in the wheel
NoteStylestyle.pyhow a note is drawn beyond its colour and its size, which the crate does not model. The wheel has one, for use without music21in the wheel
TextStylePlacementstyle.pya text style that also says which side of the staff it is on, which is display::Drawn herein the wheel
BezierStylestyle.pythe curve of a slurin the wheel
LineStylestyle.pythe dashes of a linein the wheel
StreamStylestyle.pyhow a whole stream is drawnin the wheel
BeamStylestyle.pyhow a beam is drawnin 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
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.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 therenot in the wheel
Spanner.getLastspanner.pythe last element itself, likewisenot in 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: an analysis that *shortens* a score, where repeats plays one out. The crate writes repeat marks readily enough (src/repeat.rs, and the MusicXML writer writes them) -- what it has none of is the search for a passage worth markingnot 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
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
Date.loadmetadata/primitives.pyreads a date from a string, a number, a datetime or another date, which from_written, from_parts and take_from each answer for the kind they takein the wheel
Date.loadDatetimemetadata/primitives.pyreads a date out of one of Python's, which the crate has no type for: a caller hands the parts overin the wheel
Date.datetimemetadata/primitives.pyanswers one of Python's datetimes, likewisein the wheel
DatePrimitive.datetimemetadata/primitives.pyanswers one of Python's datetimes for the first date, which the crate has no type forin the wheel
Contributor.agemetadata/primitives.pyhow long they lived, which is arithmetic over two dates a caller hasin 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 ownin 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 herein the wheel
TimespanTree.elementtree/timespanTree.pythe element a timespan holds, which ElementTimespan::element answersin 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 argumentin the wheel
FeatureExtractor.fillFeatureAttributesfeatures/base.pycopies the extractor's own id and name onto the feature it is filling inin the wheel
FeatureExtractor.prepareFeaturefeatures/base.pymakes the blank feature and fills its attributes in, which blank answersin the wheel
FeatureExtractor.processfeatures/base.pythe reading itself, which is the row's own function and runs in extractin 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.addMultipleDatafeatures/base.pyadds several subjects at once, which is add_data in a loopin the wheel
DataSet.writefeatures/base.pywrites the table to a file, which the library does not do: to_text is the text to writein the wheel
opusToBraillebraille/translate.pyevery score of an opus one after another, which is score_to_braille of eachin the wheel
makeBrailleDictionarybraille/lookup.pybuilds music21's dictionary of cells at import; the tables here are written outin 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 readsin the wheel
areGroupingsIdenticalbraille/segment.pywhether two groupings are the same, which the segment asks of its ownin 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 numberin the wheel
BrailleSegment.extractMeasureNumberbraille/segment.pya step of the transcriptionin the wheel
BrailleSegment.extractHeadingbraille/segment.pya step of the transcription: the key, the meter and the tempo over the first measurein the wheel
BrailleSegment.extractInaccordGroupingbraille/segment.pya step of the transcription: the voices written one after anotherin the wheel
BrailleSegment.extractLongExpressionGroupingbraille/segment.pya step of the transcriptionin the wheel
BrailleSegment.showLeadingOctaveFromNoteGroupingbraille/segment.pya step of the transcription: whether the first note of a grouping shows its octavein the wheel
BrailleSegment.needsSplitToFitbraille/segment.pya step of the transcription: whether a grouping must be split to fit the linein the wheel
BrailleSegment.splitNoteGroupingAndTranscribebraille/segment.pya step of the transcription, which split_note_grouping does the splitting half ofin the wheel
BrailleSegment.extractNoteGroupingbraille/segment.pya step of the transcriptionin the wheel
BrailleSegment.addRepeatSymbolsbraille/segment.pya step of the transcription: the sign for a measure repeatedin the wheel
BrailleSegment.extractSignatureGroupingbraille/segment.pya step of the transcriptionin the wheel
BrailleSegment.extractTempoTextGroupingbraille/segment.pya step of the transcriptionin the wheel
BrailleSegment.consolidatebraille/segment.pya step of the transcription: the groupings of one kind joined into onein the wheel
BrailleGrandSegment.extractHeadingbraille/segment.pya step of the transcriptionin the wheel
BrailleGrandSegment.extractNoteGroupingbraille/segment.pya step of the transcriptionin the wheel
StreamAligner.showChangesalpha/analysis/aligner.pyprints the changes, and colours the notes of the score to show themin the wheel
Hasher.setupValidTypesAndStateVarsalpha/analysis/hasher.pyreads the switches into the state music21 hashes by, which are the fields of a Hasher herein the wheel
Hasher.hashMeasuresalpha/analysis/hasher.pythe measures hashed one at a time, which is hash_stream of eachin the wheel
Hasher.addHashToFinalHashalpha/analysis/hasher.pyappends one hash to the list being builtin the wheel
Hasher.addNoteHashWithReferenceToFinalHashalpha/analysis/hasher.pyappends a note's hash with the note it came from, likewisein the wheel
Hasher.addNoteHashToFinalHashalpha/analysis/hasher.pyappends a note's hash, likewisein 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_enharmonicin the wheel
EnharmonicFixer.hasAccalpha/analysis/fixer.pywhether a note carries an accidental, which is Pitch::accidental_is_writtenin the wheel
EnharmonicFixer.hasNatAccalpha/analysis/fixer.pywhether it carries a natural, likewisein the wheel
EnharmonicFixer.hasSharpFlatAccalpha/analysis/fixer.pywhether it carries a sharp or a flat, likewisein the wheel
EnharmonicFixer.stepEqalpha/analysis/fixer.pywhether two notes stand on the same stepin the wheel
EnharmonicFixer.stepNotEqalpha/analysis/fixer.pywhether they do notin the wheel
ScoreCorrector.runPriorModelomr/correctors.pyboth models run and the score corrected, which run doesnot in the wheel
SinglePart.getMeasuresomr/correctors.pythe measures of the part, which the Stream it was read from holdsin the wheel
MeasureHash.setSequenceMatcheromr/correctors.pykeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, portedin the wheel
MeasureHash.getProbabilityOnEqualityomr/correctors.pythe odds of two measures reading alike, which is the PROBABILITY_ON_EQUALITY constantin the wheel
MeasureHash.getProbabilityOnOmissionomr/correctors.pythe odds of a note left out, PROBABILITY_ON_OMISSIONin the wheel
MeasureHash.getProbabilityOnAdditionomr/correctors.pythe odds of a note put in, PROBABILITY_ON_ADDITIONin 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 makesin the wheel
TransformedSegmentMatchersearch/serial.pyMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the otherin the wheel
MultisetSegmentMatchersearch/serial.pyMatching::Multiset, which compares the pitch classes in any orderin the wheel
TransposedMultisetMatchersearch/serial.pyMatching::TransposedMultisetin the wheel
TransposedInvertedMultisetMatchersearch/serial.pyMatching::TransposedInvertedMultisetin 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 goesin 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 arein the wheel
SegmentMatcher.equalSubsetsearch/serial.pythe comparison Matching decides, which the crate does inside findin the wheel
ChordReducer.alignHocketsanalysis/reduceChords.pya step music21 offers and its own run never takes: it moves a verticality's spans back where the moment before it sounds a subset of its notes, editing that mutable tree as it walksin the wheel
ChordReducer.collapseArpeggiosanalysis/reduceChords.pya step run never takes: it makes one chord of two neighbours standing on the same bass, walking that mutable tree and editing it as it goes -- and the walk is *live*, measured on real music: a span it fuses is fused again later, so Beach's fifth part goes from 312 spans to 268 on 18 fusions. Reading it without the tree would mean porting music21's own walk over one, which is the tree decision in miniature, so the wheel refuses it with that reasonin the wheel
ChordReducer.fillBassGapsanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespansin the wheel
ChordReducer.fillMeasureGapsanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespansin the wheel
ChordReducer.fuseTimespansByPartanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespansin the wheel
ChordReducer.qlbsmpConsonanceanalysis/reduceChords.pyone of ChordWeight's four, which ChordWeight::of weighs a chord by: this is the one a reduction weighs byin the wheel
ChordReducer.quarterLengthBeatStrengthanalysis/reduceChords.pyone of ChordWeight's four, likewisein the wheel
ChordReducer.quarterLengthBeatStrengthMeasurePositionanalysis/reduceChords.pyone of ChordWeight's four, likewisein the wheel
ChordReducer.quarterLengthOnlyanalysis/reduceChords.pyone of ChordWeight's four, likewise, and the one computeMeasureChordWeights weighs by when it is handed nonein the wheel
ChordReducer.removeNonChordTonesanalysis/reduceChords.pya step run never takes: it joins the two spans of a passing or neighbour tone, editing that tree likewisein the wheel
ChordReducer.removeShortTimespansanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespansin the wheel
ChordReducer.removeVerticalDissonancesanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespansin the wheel
ChordReducer.removeZeroDurationTimespansanalysis/reduceChords.pya step inside the reduction, which reduce_chords drives: the steps work on a list of spans of the crate's own rather than on the mutable timespan tree a caller holds and music21's own step edits as it walksin the wheel
ChordReducer.splitByBassanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespansin the wheel
NoteGroupingTranscriber.resetbraille/noteGrouping.pystate between groupings, which a function that takes the grouping has none ofin the wheel
NoteGroupingTranscriber.showClefSignsbraille/noteGrouping.pyread off the grouping, as music21's transcriber reads it: BrailleElementGrouping::show_clef_signsin the wheel
NoteGroupingTranscriber.upperFirstInFingeringbraille/noteGrouping.pyread off the grouping, as showClefSigns: upper_first_in_note_fingeringin the wheel
NoteGroupingTranscriber.transcribeGroupbraille/noteGrouping.pythe whole of transcribe_note_groupingin the wheel
NoteGroupingTranscriber.translateNotebraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.translateRestbraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.translateChordbraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.translateDynamicbraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.translateTextExpressionbraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.translateBarlinebraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.translateClefbraille/noteGrouping.pya branch of the walknot in the wheel
NoteGroupingTranscriber.transcribeOneElementbraille/noteGrouping.pyone turn of that walkin the wheel
NoteGroupingTranscriber.optionallyAddDotToPreviousbraille/noteGrouping.pypart of the walk, which writes the dot where the element before it needs onenot in the wheel
toNotelanguageExcerpts/naturalLanguageObjects.pya note built on what from_language_name read, which is Note::new(pitch) here and is music21's own one-linerin the wheel
toChordlanguageExcerpts/naturalLanguageObjects.pya chord built on what it read, as toNotein the wheel
resetSubConvertersconverter/__init__.pythe subconverter machinery: the readers are the crate's own, chosen by formatnot in the wheel
registerSubConverterconverter/__init__.pythe subconverter machinery, as resetSubConvertersnot in the wheel
unregisterSubConverterconverter/__init__.pythe subconverter machinery, as resetSubConvertersnot in the wheel
freezeconverter/__init__.pymusic21's pickle cache, which the wheel does not keep: every parse reads the filenot in the wheel
thawconverter/__init__.pymusic21's pickle cache, as freezein the wheel
freezeStrconverter/__init__.pymusic21's pickle cache, as freezenot in the wheel
thawStrconverter/__init__.pymusic21's pickle cache, as freezenot in the wheel
getLocalPathscorpus/__init__.pythe local corpus, a setting of music21's environmentnot in the wheel
addPathcorpus/__init__.pythe local corpus, as getLocalPathsnot in the wheel
cacheMetadatacorpus/__init__.pythe corpus's metadata bundles, which the wheel does not keepnot in the wheel
getComposercorpus/__init__.pya search of the metadata bundles, as cacheMetadatanot in the wheel
noCorpuscorpus/__init__.pymusic21's installation without its corpus, which the wheel answers by MUSIC21_RS_CORPUSnot 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

1524 public members the map matches to nothing in music21179 fn, 1031 method, 101 struct, 109 enum, 3 trait, 6 type, 95 const, across 114 modules

▶stream
60 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::layout_width 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_layout_width 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
  • StreamEvent::priority method
  • StreamEvent::with_priority method
  • StreamKind enum
  • StreamKind::as_str method
▶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
▶spanner
59 members
  • LineEnd enum
  • LineEnd::as_str method
  • LineEnds struct
  • MultiRest 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::complete method
  • Spanner::ends method
  • Spanner::glissando_details method
  • Spanner::id_local method
  • Spanner::is_empty method
  • Spanner::kind method
  • Spanner::len method
  • Spanner::multi_rest method
  • Spanner::pedal method
  • Spanner::pedal_mark method
  • Spanner::set_arpeggio method
  • Spanner::set_complete method
  • Spanner::set_ends method
  • Spanner::set_glissando_details method
  • Spanner::set_id_local method
  • Spanner::set_line_type method
  • Spanner::set_multi_rest 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::set_stands_in_score method
  • Spanner::set_unplaced_element method
  • Spanner::shift method
  • Spanner::slur method
  • Spanner::spread method
  • Spanner::stands_in_score method
  • Spanner::unplaced_elements method
  • Spanner::wedge method
  • Spanner::with_unplaced method
  • SpannerKind enum
  • SpannerKind::class_name method
  • SpannerKind::is_wedge method
  • SpannerKind::numbering_class 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
48 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
▶instrument
45 members
  • EACH const
  • Instrument::class_name method
  • Instrument::families method
  • Instrument::headless 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::muted method
  • Instrument::of_kind method
  • Instrument::part_id method
  • Instrument::pitched method
  • Instrument::set_abbreviation method
  • Instrument::set_headless 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_muted 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_pitched 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
  • for_percussion_key_or_unmapped fn
  • named_percussion_sounds fn
  • percussion_keys fn
▶metadata::primitives
45 members
  • ALL const
  • Certainty enum
  • Certainty::named method
  • Contributor::birth method
  • Contributor::death method
  • Contributor::set_birth method
  • Contributor::set_death method
  • Contributor::set_name method
  • Contributor::set_names method
  • Contributor::set_role method
  • Contributor::unnamed method
  • Date::certainty method
  • Date::check method
  • Date::day method
  • Date::from_parts method
  • Date::from_written_unchecked method
  • Date::month method
  • Date::set_unchecked method
  • Date::year method
  • DateKind enum
  • DateKind::default_relevance method
  • DatePart enum
  • DatePrimitive::between method
  • DatePrimitive::dates method
  • DatePrimitive::kind method
  • DatePrimitive::of_dates method
  • DatePrimitive::selection method
  • DatePrimitive::set_relevance method
  • DatePrimitive::single method
  • ROLE_ABBREVIATIONS const
  • Relevance enum
  • Relevance::kind method
  • Relevance::named method
  • Text::data method
  • Text::encoded_by method
  • Text::encoding_scheme method
  • Text::in_language method
  • Text::in_role method
  • Text::is_translated method
  • Text::set_encoding_scheme method
  • Text::set_language method
  • Text::set_role method
  • Text::set_translated method
  • Text::translated method
  • strip_certainty fn
▶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
▶tempo
41 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::from_text method
  • MetronomeMark::hidden method
  • MetronomeMark::number_implicit method
  • MetronomeMark::parentheses method
  • MetronomeMark::quarter_length_to_seconds method
  • MetronomeMark::set_hidden 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
▶articulations
40 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
▶chord
40 members
  • Chord::diatonic_ascending_order method
  • Chord::empty method
  • Chord::found_bass method
  • Chord::found_inversion method
  • Chord::found_root method
  • Chord::guitar_fingering method
  • Chord::guitar_fingering_with_tuning method
  • Chord::inversion_name_of method
  • Chord::inversion_text_of method
  • Chord::is_empty method
  • Chord::is_sorted_diatonic_ascending method
  • Chord::iter_pitches method
  • Chord::len method
  • Chord::midi_tick_start 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_inversion method
  • Chord::overridden_root method
  • Chord::polyrhythm_components method
  • Chord::polyrhythm_ratio_string method
  • Chord::quantization_errors 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_id method
  • Chord::set_inversion_override method
  • Chord::set_midi_tick_start method
  • Chord::set_numeral method
  • Chord::set_quantization_errors method
  • Chord::set_root method
  • Chord::simplify_enharmonics_in_place method
  • Chord::with_duration method
  • Chord::with_numeral method
  • IntoNotes trait
▶meter
40 members
  • BeamedNote struct
  • BeatDivision enum
  • BeatDivision::count method
  • MAX_NUMERATOR const
  • TimeSignature::accent_partition_quarter_length method
  • TimeSignature::accent_sequence 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::beat_division method
  • TimeSignature::beat_division_quarter_lengths method
  • TimeSignature::beat_duration_at method
  • TimeSignature::beat_quarter_length method
  • TimeSignature::beat_sequence method
  • TimeSignature::common method
  • TimeSignature::cut method
  • TimeSignature::display_sequence 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_accent_sequence method
  • TimeSignature::set_bar_duration method
  • TimeSignature::set_beam_sequence method
  • TimeSignature::set_beat_count method
  • TimeSignature::set_beat_sequence method
  • TimeSignature::set_display_sequence 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
  • TimeSignature::written_bar_duration method
  • partition_name fn
  • snapped_fraction fn
▶common::numbertools
30 members
  • DENOM_LIMIT const
  • IntOrFloat enum
  • MUSIC_ORDINAL_NAMES const
  • NearestMultiple struct
  • ORDINAL_NAMES const
  • OffsetQL enum
  • OffsetQL::to_f64 method
  • add_float_precision fn
  • approximate_gcd fn
  • contiguous_list fn
  • contiguous_runs fn
  • decimal_to_tuplet fn
  • dot_multiplier fn
  • float_ratio fn
  • float_repr fn
  • is_binary_denominator fn
  • is_close fn
  • limit_denominator fn
  • mixed_numeral fn
  • mixed_numeral_fraction fn
  • nearest_multiple fn
  • num_to_int_or_float fn
  • op_frac fn
  • ordinal_abbreviation fn
  • ordinals_to_numbers fn
  • round_to_half_integer fn
  • str_trim_float fn
  • unit_boundary_proportion fn
  • unit_normalize_proportion fn
  • weighted_index fn
▶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
▶chordsymbol
26 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::transposed_pitches method
  • ChordSymbol::with_duration method
  • ChordSymbol::with_kind method
  • chord_symbol_durations fn
▶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
▶braille::segment
25 members
  • Affinity enum
  • BrailleElement struct
  • BrailleElementGrouping struct
  • BrailleGrandSegment::english method
  • BrailleGrandSegment::transcribe_into method
  • BrailleSegment::english method
  • Hand enum
  • KeyPair type
  • NoteGroupingTranscriber::transcribe_element method
  • NoteGroupingTranscriber::transcribed method
  • SegmentKey struct
  • SegmentOptions struct
  • SegmentTranscriber struct
  • SegmentTranscriber::current method
  • SegmentTranscriber::into_text method
  • SegmentTranscriber::keys_mut method
  • SegmentTranscriber::last_note method
  • SegmentTranscriber::needs_split_for method
  • SegmentTranscriber::set_current method
  • SegmentTranscriber::set_last_note method
  • SegmentTranscriber::set_previous method
  • SegmentTranscriber::show_leading_octave_from method
  • SegmentTranscriber::split_and_transcribe method
  • SegmentTranscriber::text_mut method
  • affinity_code fn
▶note
24 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::midi_tick_start method
  • Note::quantization_errors method
  • Note::set_beams method
  • Note::set_duration method
  • Note::set_hidden method
  • Note::set_id method
  • Note::set_lyric method
  • Note::set_midi_tick_start method
  • Note::set_notehead_parenthesis method
  • Note::set_pitch method
  • Note::set_quantization_errors method
  • Note::set_size method
  • Note::set_stored_instrument method
  • Note::with_duration method
▶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::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
▶metadata
21 members
  • Metadata::all_sorted method
  • Metadata::first_text method
  • Metadata::is_empty method
  • MetadataContent enum
  • MetadataMatch struct
  • MetadataMatch::field method
  • MetadataQuery enum
  • MetadataValue struct
  • MetadataValue::as_contributor method
  • MetadataValue::as_date method
  • MetadataValue::as_text method
  • MetadataValue::of_contributor method
  • MetadataValue::of_date method
  • MetadataValue::of_text method
  • MetadataValue::with_role method
  • OLD_MUSIC21_NAMES const
  • STANDARD_PROPERTIES const
  • ValueKind enum
  • unique_name_from_namespace fn
  • unique_name_of_plural fn
  • value_kind_of fn
▶polyrhythm
21 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::set_tempo method
  • Polyrhythm::tempo method
  • Polyrhythm::tick_duration method
  • Polyrhythm::with_tempo method
  • PolyrhythmAnalysis struct
  • PolyrhythmEvent struct
  • PolyrhythmRatioTone struct
▶tuningsystem::scala
21 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
  • 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
▶environment
18 members
  • LocalCorpus struct
  • PATH_KEYS const
  • Platform enum
  • Platform::as_str method
  • Platform::current method
  • Value enum
  • accepted fn
  • debug_level fn
  • default_root_temp_dir fn
  • defaults fn
  • format_to_key fn
  • is_accessible fn
  • is_path_key fn
  • is_safe_temp_dir fn
  • read_settings fn
  • settings_path fn
  • settings_xml fn
  • xml_reader_type fn
▶scale::scaletype
18 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_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
▶rest
17 members
  • FullMeasure enum
  • 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_beams method
  • Rest::set_duration method
  • Rest::set_full_measure method
  • Rest::set_hidden method
  • Rest::set_id method
  • Rest::set_lyric method
  • Rest::set_size method
  • Rest::set_step_shift method
  • Rest::step_shift 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
▶common::stringtools
15 members
  • ParenthesesMatch struct
  • camel_case_to_hyphen fn
  • camel_case_to_hyphen_checked fn
  • format_str fn
  • get_num_from_str fn
  • hyphen_to_camel_case fn
  • is_python_space fn
  • md5_hex fn
  • normalize_filename fn
  • parentheses_match fn
  • remove_punctuation fn
  • space_camel_case fn
  • str_repr fn
  • strip_accents fn
  • whitespace_equal 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
▶error
14 members
  • Error enum
  • Error::format_error method
  • Error::position method
  • Error::unplaced method
  • FormatError struct
  • FormatError::with_position method
  • FormatErrorKind enum
  • PlacedError struct
  • Position struct
  • Position::at_tick method
  • Position::in_part method
  • Position::track method
  • Position::with_column method
  • Result type
▶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
▶musedata::base40
14 members
  • Base40Error struct
  • Base40Error::message method
  • Direction enum
  • EQUIVALENTS const
  • INTERVALS const
  • actual_interval fn
  • delta_to_interval fn
  • equivalent fn
  • from_pitch fn
  • from_pitch_name fn
  • octave_and_number fn
  • quick_enharmonic_string fn
  • quick_enharmonics fn
  • representation fn
▶omr::correctors
14 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::from_part method
  • SinglePart::incorrect_measures method
  • SinglePart::index_array method
  • SinglePart::part_number method
  • incorrect_measures fn
  • part_hashes fn
  • probability_based_on_changes_between fn
▶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
▶romantext::clercq_temperley
13 members
  • CtLabels struct
  • CtRule struct
  • CtRule::expand_in method
  • CtRule::measure_groups method
  • CtSong struct
  • CtSong::from_lines method
  • CtSong::lines method
  • CtSong::rule method
  • CtSong::to_part_with method
  • GroupKind enum
  • MeasureGroup struct
  • from_clercq_temperley fn
  • from_clercq_temperley_with 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
▶voiceleading
12 members
  • MotionType enum
  • MotionType::as_str method
  • ParallelRequirement enum
  • QuartetOptions struct
  • VoiceLeadingQuartet::from_names method
  • VoiceLeadingQuartet::horizontal_intervals method
  • VoiceLeadingQuartet::set_key method
  • VoiceLeadingQuartet::set_pitches method
  • VoiceLeadingQuartet::vertical_intervals method
  • VoiceLeadingQuartet::with_key method
  • verticality_positions_at fn
  • voice_leading_quartet_positions fn
▶figuredbass::realizer
11 members
  • FiguredBassLine::add_chord method
  • FiguredBassLine::in_key method
  • FiguredBassLine::in_key_and_time method
  • FiguredBassLine::is_empty method
  • FiguredBassLine::len method
  • FiguredBassLine::set_key_signature method
  • FiguredBassLine::set_time_signature method
  • Realization::fallbacks method
  • Realization::keyboard_style_output method
  • Realization::of method
  • Realization::set_keyboard_style_output method
▶key
11 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
  • Key::with_sharps method
  • MODES const
▶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
▶meter::sequence
11 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::partitioned_by_parts method
  • MeterTerminal::sequence method
  • MeterTerminal::subdivided_nested_hierarchy_by method
  • MeterTerminal::with_summed_numerator method
  • OffsetAlign enum
▶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
▶romantext::tsv
11 members
  • Direction enum
  • Spelling struct
  • TabChord struct
  • TabChord::element_as_spelled method
  • TabChord::spelled method
  • Version enum
  • Version::columns method
  • Version::from_number method
  • Version::read_columns method
  • figured_bass_of fn
  • to_tsv_with_extra fn
▶analysis::reduce_chords
10 members
  • ChordWeight enum
  • ChordWeight::named method
  • ChordWeight::of method
  • KeptChord struct
  • ReductionOptions struct
  • SliceWeigher struct
  • SliceWeigher::weigh method
  • WeighedChord struct
  • interval_class_set fn
  • reduced_measure_places fn
▶common::formats
10 members
  • SUB_CONVERTERS const
  • SubConverter struct
  • VALID_AUTO_DOWNLOAD const
  • VALID_SHOW_FORMATS const
  • VALID_WRITE_FORMATS const
  • find_format fn
  • find_format_ext_url fn
  • find_input_extension fn
  • regularize_format fn
  • sub_converter_for_format fn
▶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
▶common::enums
9 members
  • APPEND_SPANNERS const
  • ELEMENT_SEARCH const
  • GATHER_SPANNERS const
  • METER_DIVISION const
  • Member type
  • MemberValue enum
  • OFFSET_SPECIAL const
  • ORNAMENT_DELAY const
  • hex_numbers fn
▶alpha::analysis::aligner
8 members
  • Change struct
  • ChangeOp enum
  • ChangePlace struct
  • StreamAligner::align_hashed method
  • StreamAligner::changes_count method
  • StreamAligner::with_hasher method
  • fill_distance_matrix fn
  • similarity_score fn
▶audiosearch
8 members
  • AUDIO_CHUNK_LENGTH const
  • JoinedNote struct
  • RECORD_SAMPLE_RATE const
  • REST_FREQUENCY const
  • TranscribedNote struct
  • joined_pitches fn
  • monophonic_stream_from_wav fn
  • transcribed_notes fn
▶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
▶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
▶features::language
7 members
  • LANGUAGE_CODES const
  • Trigram::add_words method
  • Trigram::distance method
  • Trigram::from_text method
  • Trigram::from_words method
  • known_trigram fn
  • language_name fn
▶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
▶alpha::analysis::fixer
6 members
  • EnharmonicFix enum
  • OrnamentFixer::fixed method
  • OrnamentFixer::trills method
  • OrnamentFixer::turns method
  • Recognizer enum
  • enharmonic_fix 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
▶braille::basic
5 members
  • NoteContext struct
  • Transcription struct
  • braille_articulations fn
  • chord_symbol_to_braille fn
  • tempo_to_braille fn
▶figuredbass::resolution
5 members
  • AugmentedSixth enum
  • AugmentedSixth::from_number method
  • AugmentedSixth::of method
  • ChordInfo struct
  • ChordInfo::of method
▶figuredbass::scale
5 members
  • ALL const
  • FiguredBassMode enum
  • FiguredBassScale::mode method
  • FiguredBassScale::with_key_signature method
  • FiguredBassScale::with_scale method
▶layout
5 members
  • Layout enum
  • Layout::class_name method
  • StaffType enum
  • StaffType::as_str method
  • Tenths enum
▶musedata::base12_26
5 members
  • BASE12_EQUIVALENTS const
  • BASE12_INTERVALS const
  • BASE26_EQUIVALENTS const
  • BASE26_INTERVALS const
  • named fn
▶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::hasher
4 members
  • HashReference struct
  • HashValue enum
  • Hasher::hash_value method
  • NoteHash struct
▶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
▶braille::text
4 members
  • BrailleText::add_measure_number_value method
  • BrailleText::current_line method
  • BrailleText::render method
  • BrailleTextLine::cells method
▶common
4 members
  • DEBUG_ALL const
  • DEBUG_DEVEL const
  • DEBUG_OFF const
  • DEBUG_USER const
▶figuredbass::possibility
4 members
  • DEFAULT_MAX_PITCH const
  • ItalianSixth struct
  • ItalianSixth::from_chord method
  • ItalianSixth::of method
▶makenotation
4 members
  • MAX_MEASURES const
  • QUANTIZATION_DIVISORS const
  • make_measures_by fn
  • op_frac fn
▶volpiano
4 members
  • Break enum
  • Break::class_name method
  • from_volpiano fn
  • to_volpiano fn
▶common::misc
3 members
  • cleaned_flat_notation fn
  • missing_import_message fn
  • platform_name fn
▶common::objects
3 members
  • Timer struct
  • Timer::elapsed method
  • Timer::stop method
▶common::parallel
3 members
  • cpus fn
  • cpus_for fn
  • update_positions fn
▶common::filetools
2 members
  • MAX_UNCOMPRESSED_BYTES const
  • read_limited fn
▶common::pathtools
2 members
  • clean_path fn
  • last_parent_dir fn
▶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
▶common::classtools
1 member
  • class_to_class_str fn
▶common::decorators
1 member
  • deprecation_message 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.