music21-rs

Wheel 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 in the wheel 49.3% 860 of 1745 members; 885 lacking, 137 the crate has no function for
Own tests 664 passing, across 3 suites music21's suite on music21-rs alone 24.2% 1299 of the 5360 tests music21 passes, music21 not installed; 151 of 217 modules import; music21.musicxml blocks the most, 343 tests
Median speedup 14.4× over music21 through the same Python API, across 33 operations Cost of the binding 4.0 µs a call, median, over the same call in Rust A whole program 1.00× median over 4053 of music21's own tests, installed over it Install size 9.3 MB what pip installs; music21 is 88.8 MB, 10× that 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 wheel

6024 passing, all green

SuiteTestsResultPassedFailedCommand
Python parity and music21's doctests cratewheel passed 259 0 cargo nextest run --manifest-path python-parity/Cargo.toml --no-fail-fast
Python wheelmusic21_rs-0.20.0-cp313-cp313-manylinux_2_39_x86_64.whl wheel passed — — maturin build --release --manifest-path python/Cargo.toml
Python wheel tests wheel passed 405 0 python -m pytest python/tests
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.

Speed and size against music21

wheel 14.4× median, across 33 cases

Casemusic21wheelwheel ×binding
construction
Pitch('C#4')1.5 µs2.1 µs0.7×+1.9 µs
Note('C#4')6.8 µs999 ns6.8×+836 ns
Interval('P5')14.4 µs528 ns27.3×+441 ns
Chord('C4 E4 G4')27.7 µs4.2 µs6.6×+3.6 µs
chord analysis
Chord.commonName5 chords860.3 µs12.9 µs66.8×+4.0 µs
Chord.root()5 chords194.3 µs13.5 µs14.4×—
Chord.inversion()5 chords285.8 µs9.3 µs30.8×+5.2 µs
Chord.forteClass5 chords409.1 µs10.8 µs38.0×+4.5 µs
Chord.primeForm5 chords417.5 µs11.3 µs37.1×+4.3 µs
Chord.intervalVector5 chords415.3 µs11.2 µs37.2×+4.0 µs
Chord.isDominantSeventh()5 chords391.7 µs8.5 µs46.1×+4.4 µs
Chord.orderedPitchClasses5 chords185.8 µs9.0 µs20.7×+4.1 µs
Chord: forteClass + primeForm + intervalVectorone chord, three questions93.1 µs4.1 µs22.5×+1.2 µs
pitch
Pitch.transpose('M3')41.6 µs2.6 µs16.0×+2.2 µs
Pitch.frequency1.4 µs2.1 µs0.7×+1.8 µs
Pitch.getEnharmonic()33.4 µs2.4 µs14.2×—
Interval(p1, p2)15.7 µs3.8 µs4.1×+3.5 µs
serial
pcToToneRow(...).matrix()4.2 ms5.3 µs784.4×+393 ns
ToneRow.zeroCenteredTransformation402.5 µs950 ns423.8×+422 ns
figured bass
Segment(G2, '7').allCorrectSinglePossibilities()4.4 ms82.8 µs52.8×+30.6 µs
Segment(G2, '7') to Segment(C3), a dominant seventh resolving17.1 ms351.0 µs48.9×+106.7 µs
Segment(C3) to Segment(D3, '4,3'), every pair of voicings6.2 ms152.9 µs40.2×+69.3 µs
stream
Stream: append 100 noteseach note built and appended1.4 ms304.6 µs4.4×—
Stream: append 2000 noteseach note built and appended25.5 ms6.2 ms4.1×—
Stream: s[i] over 2000 notesone stream, every index1.5 ms276.0 µs5.4×—
Score.recurse().notes2 parts of 100 measures of 4 notes3.6 ms847.4 µs4.2×—
Score.flatten()2 parts of 100 measures of 4 notes, after an edit5.4 ms1.4 ms4.0×—
Part.makeMeasures()200 dotted quarters, a copy cut into measures23.4 ms4.8 ms4.8×—
read bach/bwv69.6.xmlmusic21's parse cache off; counting the notes read64.0 ms10.4 ms6.1×—
read schubert/Lindenbaum.xmlmusic21's parse cache off; counting the notes read337.5 ms28.7 ms11.8×—
write bach/bwv69.6.xmlas read by each side, written without makeNotation107.9 ms22.3 ms4.8×—
warm object
Chord.commonName (cached)music21 memoizes125 ns97 ns1.3×—
Chord.forteClass (cached)music21 memoizes2.2 µs92 ns23.4×—

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-wheel median 1.00×

Testmusic21music21-rs-wheelmusic21-rs-wheel ×
furthest ahead
findTransformedHistorical (music21.serial.TwelveToneRow)94 ms1 ms84.70×
testOctaveRepeatingScaleClosesOnItsTonicSpelling (music21.scale.test_scale_main.Test.testOctaveRepeatingScaleClosesOnItsTonicSpelling)124 ms2 ms60.78×
isTranspositionallySymmetrical (music21.chord.Chord)108 ms3 ms40.10×
fromIntervalVector (music21.chord)60 ms2 ms28.80×
getZRelation (music21.chord.Chord)56 ms2 ms28.55×
findHistorical (music21.serial.TwelveToneRow)31 ms1 ms27.27×
fromForteClass (music21.chord)39 ms2 ms23.45×
testAugmented (music21.roman.Test.testAugmented)97 ms5 ms20.82×
simplifyMultipleEnharmonics (music21.pitch)38 ms2 ms19.83×
testPreferSecondaryDominantsSkipsDiatonicChords (music21.roman.Test.testPreferSecondaryDominantsSkipsDiatonicChords)32 ms2 ms17.32×
TranspositionChecker (music21.analysis.transposition)39 ms2 ms17.11×
testSetFigureReparsesSecondaryAndAugmentedSixth (music21.roman.Test.testSetFigureReparsesSecondaryAndAugmentedSixth)44 ms3 ms16.82×
furthest behind
testPartitionOptionsAddUpToMeter (music21.meter.tests.Test.testPartitionOptionsAddUpToMeter)1 ms6 ms0.18×
testActivateVariantsA (music21.stream.tests.Test.testActivateVariantsA)3 ms13 ms0.24×
tupleEqualityWithoutReference (music21.alpha.analysis.aligner.StreamAligner)2 ms7 ms0.25×
pedalObjectToXml (music21.musicxml.m21ToXml.MeasureExporter)2 ms7 ms0.26×
testTimeSignature (music21.midi.tests.Test.testTimeSignature)5 ms17 ms0.28×
testCompressedSizeLimit (music21.noteworthy.binaryTranslate.Test.testCompressedSizeLimit)4 ms14 ms0.28×
SaxophoneFractionFeature (music21.features.jSymbolic)4 ms14 ms0.29×
testChordifyE (music21.stream.tests.Test.testChordifyE)2 ms8 ms0.29×
test_example09_4b (music21.braille.test.Test.test_example09_4b)4 ms13 ms0.32×
testGetBeatStrengthA (music21.test.test_base.Test.testGetBeatStrengthA)4 ms12 ms0.34×
unfreeze (music21.duration.FrozenDuration)2 ms4 ms0.36×
testARFFNumericClassValues (music21.features.outputFormats.Test.testARFFNumericClassValues)15 ms39 ms0.39×

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 wheel
9.3 MBwhat pip installs

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.

music21's API in the wheel

1745 members:860 in the wheel

207 classes
▶Chordchord/__init__.py wheel 0 of 96
96 not in wheel

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.

music21WheelIn the crate
formatVectorStringnot in the wheelformat_vector_string
addnot in the wheeladd
annotateIntervalsnot in the wheelannotate_intervals
areZRelationsnot in the wheelare_z_relations
bassnot in the wheelbass
canBeDominantVnot in the wheelcan_be_dominant_v
canBeTonicnot in the wheelcan_be_tonic
closedPositionnot in the wheelclosed_position
containsSeventhnot in the wheelcontains_seventh
containsTriadnot in the wheelcontains_triad
geometricNormalFormnot in the wheelgeometric_normal_form
getChordStepnot in the wheelchord_step
getColornot in the wheelcolor
getNoteheadnot in the wheelnotehead
getNoteheadFillnot in the wheelnotehead_fill
getStemDirectionnot in the wheelstem_direction
getTienot in the wheeltie
getVolumenot in the wheelvolume
getZRelationnot in the wheelz_relation
hasAnyEnharmonicSpelledPitchesnot in the wheelhas_any_enharmonic_spelled_pitches
hasAnyRepeatedDiatonicNotenot in the wheelhas_any_repeated_diatonic_note
hasRepeatedChordStepnot in the wheelhas_repeated_chord_step
intervalFromChordStepnot in the wheelinterval_from_chord_step
inversionnot in the wheelinversion
setInversionnot in the wheelset_inversion
inversionNamenot in the wheelinversion_name
inversionTextnot in the wheelinversion_text
isAugmentedSixthnot in the wheelis_augmented_sixth
isAugmentedTriadnot in the wheelis_augmented_triad
isConsonantnot in the wheelis_consonant
isDiminishedSeventhnot in the wheelis_diminished_seventh
isSeventhOfTypenot in the wheelis_seventh_of_type
isDiminishedTriadnot in the wheelis_diminished_triad
isDominantSeventhnot in the wheelis_dominant_seventh
isFalseDiminishedSeventhnot in the wheelis_false_diminished_seventh
isFrenchAugmentedSixthnot in the wheelis_french_augmented_sixth
isGermanAugmentedSixthnot in the wheelis_german_augmented_sixth
isHalfDiminishedSeventhnot in the wheelis_half_diminished_seventh
isIncompleteMajorTriadnot in the wheelis_incomplete_major_triad
isIncompleteMinorTriadnot in the wheelis_incomplete_minor_triad
isItalianAugmentedSixthnot in the wheelis_italian_augmented_sixth
isMajorTriadnot in the wheelis_major_triad
isMinorTriadnot in the wheelis_minor_triad
isTranspositionallySymmetricalnot in the wheelis_transpositionally_symmetrical
isSeventhnot in the wheelis_seventh
isNinthnot in the wheelis_ninth
isSwissAugmentedSixthnot in the wheelis_swiss_augmented_sixth
isTriadnot in the wheelis_triad
removeRedundantPitchesnot in the wheelremove_redundant_pitches
removeRedundantPitchClassesnot in the wheelremove_redundant_pitch_classes
removeRedundantPitchNamesnot in the wheelremove_redundant_pitch_names
rootnot in the wheelroot
semiClosedPositionnot in the wheelsemi_closed_position
semitonesFromChordStepnot in the wheelsemitones_from_chord_step
setColornot in the wheelset_color
setNoteheadnot in the wheelset_notehead
setNoteheadFillnot in the wheelset_notehead_fill
setStemDirectionnot in the wheelset_stem_direction
setTienot in the wheelset_tie
setVolumenot in the wheelset_volume
simplifyEnharmonicsnot in the wheelsimplify_enharmonics
sortAscendingnot in the wheelsort_ascending
sortChromaticAscendingnot in the wheelsort_chromatic_ascending
sortDiatonicAscendingnot in the wheelsort_diatonic_ascending
sortFrequencyAscendingnot in the wheelsort_frequency_ascending
transposenot in the wheeltranspose
chordTablesAddressnot in the wheelchord_tables_address_entry
commonNamenot in the wheelcommon_name
durationnot in the wheelduration
fifthnot in the wheelfifth
forteClassnot in the wheelforte_class
forteClassNumbernot in the wheelforte_class_number
forteClassTnnot in the wheelforte_class_tn
forteClassTnInot in the wheelforte_class_tni
fullNamenot in the wheelfull_name
hasZRelationnot in the wheelhas_z_relation
intervalVectornot in the wheelinterval_class_vector
intervalVectorStringnot in the wheelinterval_vector_string
isPrimeFormInversionnot in the wheelis_prime_form_inversion
multisetCardinalitynot in the wheelmultiset_cardinality
notesnot in the wheelnotes
normalOrdernot in the wheelnormal_order
normalOrderStringnot in the wheelnormal_order_string
orderedPitchClassesnot in the wheelpitch_classes
orderedPitchClassesStringnot in the wheelordered_pitch_classes_string
pitchClassCardinalitynot in the wheelpitch_class_cardinality
pitchClassesnot in the wheelnote_pitch_classes
pitchNamesnot in the wheelpitch_names
pitchedCommonNamenot in the wheelpitched_common_name
pitchesnot in the wheelpitches
primeFormnot in the wheelprime_form
primeFormStringnot in the wheelprime_form_string
qualitynot in the wheelquality
scaleDegreesnot in the wheelscale_degrees
seventhnot in the wheelseventh
thirdnot in the wheelthird
▶Pitchpitch.py wheel 45 of 45
music21WheelIn the crate
groupsin the wheelthe 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
accidentalin the wheelaccidental
microtonein the wheelmicrotone
isTwelveTonein the wheelis_twelve_tone
getCentShiftFromMidiin the wheelcent_shift_from_midi
alterin the wheelalter
convertQuarterTonesToMicrotonesin the wheelconvert_quarter_tones_to_microtones
convertMicrotonesToQuarterTonesin the wheelconvert_microtones_to_quarter_tones
psin the wheelps
midiin the wheelmidi
namein the wheelname
unicodeNamein the wheelunicode_name
nameWithOctavein the wheelname_with_octave
unicodeNameWithOctavein the wheelunicode_name_with_octave
fullNamein the wheelfull_name
stepin the wheelstep
pitchClassin the wheelpitch_class
pitchClassStringin the wheelpitch_class_string
octavein the wheeloctave
octaveIsImplicitin the wheeloctave_is_implicit
implicitOctavein the wheelimplicit_octave
germanin the wheelgerman
italianin the wheelitalian
spanishin the wheelspanish
frenchin the wheelfrench
frequencyin the wheelfrequency_hz
freq440in the wheelfrequency_hz
getHarmonicin the wheelharmonic
harmonicFromFundamentalin the wheelharmonic_from_fundamental
harmonicStringin the wheelharmonic_string
harmonicAndFundamentalFromPitchin the wheelharmonic_and_fundamental_from_pitch
harmonicAndFundamentalStringFromPitchin the wheelharmonic_and_fundamental_string_from_pitch
isEnharmonicin the wheelis_enharmonic
getHigherEnharmonicin the wheelget_higher_enharmonic
getLowerEnharmonicin the wheelget_lower_enharmonic
simplifyEnharmonicin the wheelsimplify_enharmonic
getEnharmonicin the wheelget_enharmonic
informClientin the wheelobserver callback for a containing note; there is none
getAllCommonEnharmonicsin the wheelall_common_enharmonics
diatonicNoteNumin the wheeldiatonic_note_number
transposein the wheeltranspose
transposeBelowTargetin the wheeltranspose_below_target
transposeAboveTargetin the wheeltranspose_above_target
updateAccidentalDisplayin the wheelupdate_accidental_display
getStringHarmonicin the wheelstring_harmonic
▶Accidentalpitch.py wheel 12 of 12
music21WheelIn the crate
listNamesin the wheellist_names
setin the wheelset
isTwelveTonein the wheelis_twelve_tone
setAttributeIndependentlyin the wheelset_attribute_independently
inheritDisplayin the wheelinherit_display
namein the wheelname
alterin the wheelalter
modifierin the wheelmodifier
displayTypein the wheeldisplay_type
displayStatusin the wheeldisplay_status
unicodein the wheelunicode
fullNamein the wheelfull_name
▶Microtonepitch.py wheel 3 of 3
music21WheelIn the crate
alterin the wheelalter
centsin the wheelcents
harmonicShiftin the wheelharmonic_shift
▶Intervalinterval.py wheel 0 of 29
29 not in wheel
music21WheelIn the crate
genericnot in the wheelgeneric
namenot in the wheelshort_name
niceNamenot in the wheelname
simpleNamenot in the wheelsimple_name
simpleNiceNamenot in the wheelsimple_nice_name
semiSimpleNamenot in the wheelsemi_simple_name
semiSimpleNiceNamenot in the wheelsemi_simple_nice_name
directedNamenot in the wheeldirected_name
directedNiceNamenot in the wheeldirected_nice_name
directedSimpleNamenot in the wheeldirected_simple_name
directedSimpleNiceNamenot in the wheeldirected_simple_nice_name
semitonesnot in the wheelsemitones
directionnot in the wheeldirection
specifiernot in the wheelspecifier
specificNamenot in the wheelspecific_name
isDiatonicStepnot in the wheelis_diatonic_step
isChromaticStepnot in the wheelis_chromatic_step
isStepnot in the wheelis_step
isSkipnot in the wheelis_skip
isConsonantnot in the wheelis_consonant
complementnot in the wheelcomplement
intervalClassnot in the wheelinterval_class
centsnot in the wheelcents
transposePitchnot in the wheeltranspose_pitch
reversenot in the wheelreversed
pitchStartnot in the wheelpitch_start
pitchEndnot in the wheelpitch_end
noteStartnot in the wheelnote_start
noteEndnot in the wheelnote_end
▶GenericIntervalinterval.py wheel 0 of 26
26 not in wheel
music21WheelIn the crate
valuenot in the wheelvalue
directednot in the wheeldirected
undirectednot in the wheelundirected
directionnot in the wheeldirection
isSkipnot in the wheelis_skip
isDiatonicStepnot in the wheelis_diatonic_step
isStepnot in the wheelis_step
isUnisonnot in the wheelis_unison
simpleUndirectednot in the wheelsimple_undirected
semiSimpleUndirectednot in the wheelsemi_simple_undirected
undirectedOctavesnot in the wheelundirected_octaves
octavesnot in the wheeloctaves
simpleDirectednot in the wheelsimple_directed
semiSimpleDirectednot in the wheelsemi_simple_directed
perfectablenot in the wheelis_perfectable
niceNamenot in the wheelnice_name
simpleNiceNamenot in the wheelsimple_nice_name
semiSimpleNiceNamenot in the wheelsemi_simple_nice_name
staffDistancenot in the wheelstaff_distance
mod7inversionnot in the wheelmod7_inversion
mod7not in the wheelmod7
complementnot in the wheelcomplement
reversenot in the wheelreverse
transposePitchnot in the wheeltranspose_pitch
transposePitchKeyAwarenot in the wheeltranspose_pitch_key_aware
getDiatonicnot in the wheelget_diatonic
▶DiatonicIntervalinterval.py wheel 0 of 25
25 not in wheel
music21WheelIn the crate
namenot in the wheelname
niceNamenot in the wheelnice_name
specificNamenot in the wheelspecific_name
simpleNamenot in the wheelsimple_name
simpleNiceNamenot in the wheelsimple_nice_name
semiSimpleNamenot in the wheelsemi_simple_name
semiSimpleNiceNamenot in the wheelsemi_simple_nice_name
directionnot in the wheeldirection
directedNamenot in the wheeldirected_name
directedNiceNamenot in the wheeldirected_nice_name
directedSimpleNamenot in the wheeldirected_simple_name
directedSimpleNiceNamenot in the wheeldirected_simple_nice_name
directedSemiSimpleNamenot in the wheeldirected_semi_simple_name
directedSemiSimpleNiceNamenot in the wheeldirected_semi_simple_nice_name
isStepnot in the wheelis_step
isDiatonicStepnot in the wheelis_diatonic_step
isSkipnot in the wheelis_skip
perfectablenot in the wheelis_perfectable
mod7inversionnot in the wheelmod7_inversion
mod7not in the wheelmod7
reversenot in the wheelreverse
getChromaticnot in the wheelget_chromatic
transposePitchnot in the wheeltranspose_pitch
specifierAbbreviationnot in the wheelspecifier_abbreviation
centsnot in the wheelcents
▶ChromaticIntervalinterval.py wheel 0 of 13
13 not in wheel
music21WheelIn the crate
centsnot in the wheelcents
directednot in the wheeldirected
undirectednot in the wheelundirected
directionnot in the wheeldirection
mod12not in the wheelmod12
simpleUndirectednot in the wheelsimple_undirected
simpleDirectednot in the wheelsimple_directed
intervalClassnot in the wheelinterval_class
isChromaticStepnot in the wheelis_chromatic_step
isStepnot in the wheelis_step
reversenot in the wheelreverse
getDiatonicnot in the wheelget_diatonic
transposePitchnot in the wheeltranspose_pitch
▶Specifierinterval.py wheel 4 of 4
music21WheelIn the crate
niceNamein the wheelnice_name
inversionin the wheelinversion
semitonesAbovePerfectin the wheelsemitones_above_perfect
semitonesAboveMajorin the wheelsemitones_above_major
▶interval.py functionsinterval.py wheel 20 of 20

Module-level helpers.

music21WheelIn the crate
convertStaffDistanceToIntervalin the wheelstaff_distance_to_generic_number
convertDiatonicNumberToStepin the wheelconvert_diatonic_number_to_step
parseSpecifierin the wheelparse_specifier
convertGenericin the wheelconvert_generic
convertSemitoneToSpecifierGenericMicrotonein the wheelconvert_semitone_to_specifier_generic_microtone
convertSemitoneToSpecifierGenericin the wheelconvert_semitone_to_specifier_generic
intervalToPythagoreanRatioin the wheelpythagorean_ratio
notesToGenericin the wheelnotes_to_generic
notesToChromaticin the wheelnotes_to_chromatic
intervalsToDiatonicin the wheelintervals_to_diatonic
intervalFromGenericAndChromaticin the wheelfrom_generic_and_chromatic
getWrittenHigherNotein the wheelwritten_higher_pitch
getAbsoluteHigherNotein the wheelabsolute_higher_pitch
getWrittenLowerNotein the wheelwritten_lower_pitch
getAbsoluteLowerNotein the wheelabsolute_lower_pitch
transposePitchin the wheeltranspose_pitch
transposeNotein the wheeltranspose_note
notesToIntervalin the wheelbetween_pitches
addin the wheelsum
subtractin the wheeldifference
▶KeySignaturekey.py wheel 0 of 7
7 not in wheel
music21WheelIn the crate
asKeynot in the wheelas_key
alteredPitchesnot in the wheelaltered_pitches
accidentalByStepnot in the wheelaccidental_by_step
transposenot in the wheeltranspose
transposePitchFromCnot in the wheeltranspose_pitch_from_c
getScalenot in the wheelscale
sharpsnot in the wheelsharps
▶Keykey.py wheel 0 of 6
6 not in wheel

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

music21WheelIn the crate
relativenot in the wheelrelative
parallelnot in the wheelparallel
tonicPitchNameWithCasenot in the wheeltonic_pitch_name_with_case
deriveByDegreenot in the wheelderive_by_degree
tonalCertaintynot in the wheeltonal_certainty
transposenot in the wheeltranspose
▶ConcreteScalescale/__init__.py wheel 0 of 27
27 not in wheel
music21WheelIn the crate
isConcretenot in the wheelevery Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one
namenot in the wheelmusic21_name
getTonicnot in the wheeltonic
abstractnot in the wheela 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
getDegreeMaxUniquenot in the wheeldegree_count
transposenot in the wheeltranspose
tunenot in the wheeltune
romanNumeralnot in the wheelroman_numeral
getPitchesnot in the wheelpitches
getChordnot in the wheelchord
pitchFromDegreenot in the wheelpitch_at_degree
pitchesFromScaleDegreesnot in the wheelpitches_from_scale_degrees
intervalBetweenDegreesnot in the wheelinterval_between_degrees
getScaleDegreeFromPitchnot in the wheeldegree_of
getScaleDegreeAndAccidentalFromPitchnot in the wheeldegree_and_accidental_of
solfegnot in the wheelsolfeg
nextPitchnot in the wheelnext_pitch_above
isNextnot in the wheelis_next
matchnot in the wheelmatch_pitches
findMissingnot in the wheelfind_missing
deriveRankednot in the wheelderive_ranked
derivenot in the wheelderive
deriveAllnot in the wheelderive_all
deriveByDegreenot in the wheelderive_by_degree
getScalaDatanot in the wheelscala_data
writenot in the wheelwrites 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
shownot in the wheelopens the scale in another program, which is the caller's to do
▶scale/__init__.py classesscale/__init__.py wheel 26 of 32
6 not in wheel

The ConcreteScale subclasses, as ScaleType variants or runtime constructors.

music21WheelIn the crate
AbstractDiatonicScalenot in the wheelthe IntervalNetwork layer
AbstractOctatonicScalenot in the wheelthe IntervalNetwork layer
AbstractHarmonicMinorScalenot in the wheelthe IntervalNetwork layer
AbstractMelodicMinorScalenot in the wheelthe IntervalNetwork layer
AbstractCyclicalScalenot in the wheelthe IntervalNetwork layer
AbstractOctaveRepeatingScalenot in the wheelthe IntervalNetwork layer
Scalein the wheelthe abstract base
AbstractScalein the wheela 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
ConcreteScalein the wheelrealized by Scale, StepScale and ScalaScale
DiatonicScalein the wheelthe diatonic modes are ScaleType variants
MajorScalein the wheelMajorScale
MinorScalein the wheelMinorScale
DorianScalein the wheelDorianScale
PhrygianScalein the wheelPhrygianScale
LydianScalein the wheelLydianScale
MixolydianScalein the wheelMixolydianScale
HypodorianScalein the wheelHypodorianScale
HypophrygianScalein the wheelHypophrygianScale
HypolydianScalein the wheelHypolydianScale
HypomixolydianScalein the wheelHypomixolydianScale
LocrianScalein the wheelLocrianScale
HypolocrianScalein the wheelHypolocrianScale
HypoaeolianScalein the wheelHypoaeolianScale
HarmonicMinorScalein the wheelHarmonicMinorScale
MelodicMinorScalein the wheelMelodicMinorScale
OctatonicScalein the wheelOctatonicScale
OctaveRepeatingScalein the wheeloctave_repeating
CyclicalScalein the wheelcyclical
ChromaticScalein the wheelChromaticScale
WholeToneScalein the wheelWholeToneScale
SieveScalein the wheelsieve
ScalaScalein the wheelScalaScale
▶RomanNumeralroman.py wheel 0 of 11
11 not in wheel
music21WheelIn the crate
adjustMinorVIandVIIByQualitynot in the wheeladjust_minor_vi_and_vii_by_quality
transposenot in the wheeltranspose
romanNumeralnot in the wheelroman_numeral
figurenot in the wheelfigure
figureAndKeynot in the wheelfigure_and_key
keynot in the wheelkey
scaleDegreeWithAlterationnot in the wheelscale_degree_with_alteration
bassScaleDegreeFromNotationnot in the wheelbass_scale_degree_from_notation
functionalityScorenot in the wheelfunctionality_score
isNeapolitannot in the wheelis_neapolitan
isMixturenot in the wheelis_mixture
▶TimeSignaturemeter/base.py wheel 0 of 33
33 not in wheel

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.

music21WheelIn the crate
resetValuesnot in the wheelrebuilding a meter in place; a new one is built instead
loadnot in the wheelrebuilding a meter in place; a new one is built instead
ratioStringnot in the wheelratio_string
ratioEqualnot in the wheelratio_equal
numeratornot in the wheelnumerator
denominatornot in the wheeldenominator
barDurationnot in the wheelbar_duration
beatLengthToQuarterLengthRationot in the wheelbeat_length_to_quarter_length_ratio
quarterLengthToBeatLengthRationot in the wheelquarter_length_to_beat_length_ratio
beatCountnot in the wheelbeat_count
beatCountNamenot in the wheelbeat_count_name
beatDurationnot in the wheelbeat_duration
beatDivisionCountnot in the wheelbeat_division_count
beatDivisionCountNamenot in the wheelbeat_division_count_name
beatDivisionDurationsnot in the wheelbeat_division_durations
beatSubDivisionDurationsnot in the wheelbeat_sub_division_durations
classificationnot in the wheelclassification
summedNumeratornot in the wheelsummed_numerator
getBeamsnot in the wheelbeams_for
setDisplaynot in the wheelset_display
getAccentnot in the wheelaccent
setAccentWeightnot in the wheelset_accent_weight
averageBeatStrengthnot in the wheelaverage_beat_strength
getMeasureOffsetOrMeterModulusOffsetnot in the wheeloffset_in_bar
getAccentWeightnot in the wheelaccent_weight
getBeatnot in the wheelbeat_at_offset
getBeatOffsetsnot in the wheelbeat_offsets
getBeatDurationnot in the wheelbeat_duration
getOffsetFromBeatnot in the wheeloffset_from_beat
getBeatProgressnot in the wheelbeat_progress
getBeatProportionnot in the wheelbeat_proportion
getBeatProportionStrnot in the wheelbeat_proportion_string
getBeatDepthnot in the wheelbeat_depth
▶MetronomeMarktempo.py wheel 0 of 10
10 not in wheel
music21WheelIn the crate
referentnot in the wheelreferent
numberSoundingnot in the wheelnumber_sounding
getQuarterBPMnot in the wheelquarter_bpm
setQuarterBPMnot in the wheelquarter_bpm
getTextExpressionnot in the wheeltext_expression
getEquivalentByReferentnot in the wheelequivalent_by_referent
getMaintainedNumberWithReferentnot in the wheelmaintained_number_with_referent
secondsPerQuarternot in the wheelseconds_per_quarter
durationToSecondsnot in the wheelduration_to_seconds
secondsToDurationnot in the wheelseconds_to_duration
▶MetricModulationtempo.py wheel 0 of 8
8 not in wheel

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

music21WheelIn the crate
oldMetronomenot in the wheelold_metronome
oldReferentnot in the wheelold_referent
newMetronomenot in the wheelnew_metronome
newReferentnot in the wheelnew_referent
numbernot in the wheelnumber
updateByContextnot in the wheelupdate_from
setEqualityByReferentnot in the wheelset_equality_by_referent
setOtherByReferentnot in the wheelset_other_by_referent
▶Instrumentinstrument.py wheel 0 of 4
4 not in wheel

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

music21WheelIn the crate
bestNamenot in the wheelbest_name
partIdRandomizenot in the wheelmakes 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
instrumentIdRandomizenot in the wheelmakes 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
autoAssignMidiChannelnot in the wheelauto_assign_midi_channel
▶StringInstrumentinstrument.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
stringPitchesnot in the wheelstring_pitches
▶MidiPercussionMapMixininstrument.py wheel 0 of 1
1 not in wheel

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.

music21WheelIn the crate
modifiernot in the wheelmodifier
▶instrument.py functionsinstrument.py wheel 8 of 8

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

music21WheelIn the crate
unbundleInstrumentsin the wheelunbundle_instruments
bundleInstrumentsin the wheelbundle_instruments
ensembleNameBySizein the wheelensemble_name_by_size
deduplicatein the wheeldeduplicate
instrumentFromMidiProgramin the wheelfrom_midi_program
partitionByInstrumentin the wheelpartition_by_instrument
fromStringin the wheelfrom_name
getAllNamesForInstrumentin the wheelall_names
▶PercussionMappermidi/percussion.py wheel 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.

music21WheelIn the crate
midiPitchToInstrumentin the wheelfor_percussion_key
midiInstrumentToPitchin the wheelpercussion_pitch
▶Durationduration.py wheel 24 of 24

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

music21WheelIn the crate
linkedin the wheellinked
addDurationTuplein the wheeladd_duration_tuple
appendTupletin the wheelappend_tuplet
augmentOrDiminishin the wheelaugment_or_diminish
clearin the wheelclear
componentIndexAtQtrPositionin the wheelcomponent_index_at_qtr_position
componentStartTimein the wheelcomponent_start_time
consolidatein the wheelconsolidate
getGraceDurationin the wheelgrace_duration
informClientin the wheelobserver callback for a containing note; there is none
sliceComponentAtPositionin the wheelslice_component_at_position
currentComponentsin the wheelthe working-out is not deferred here, so there is no half-worked-out state to read
splitDotGroupsin the wheelsplit_dot_groups
componentsin the wheelcomponents
dotGroupsin the wheeldot_groups
dotsin the wheeldots
fullNamein the wheelfull_name
isComplexin the wheelis_complex
ordinalin the wheelordinal
quarterLengthNoTupletsin the wheelquarter_length_no_tuplets
quarterLengthin the wheelquarter_length
tupletsin the wheeltuplets
aggregateTupletMultiplierin the wheelaggregate_tuplet_multiplier
typein the wheelduration_type
▶ToneRowserial.py wheel 0 of 10
10 not in wheel
music21WheelIn the crate
pitchClassesnot in the wheelpitch_classes
noteNamesnot in the wheelnote_names
isTwelveToneRownot in the wheelis_twelve_tone_row
makeTwelveToneRownot in the wheelmake_twelve_tone_row
isSameRownot in the wheelis_same_row
getIntervalsAsStringnot in the wheelintervals_as_string
zeroCenteredTransformationnot in the wheelzero_centered_transformation
originalCenteredTransformationnot in the wheeloriginal_centered_transformation
findZeroCenteredTransformationsnot in the wheelfind_zero_centered_transformations
findOriginalCenteredTransformationsnot in the wheelfind_original_centered_transformations
▶TwelveToneRowserial.py wheel 0 of 7
7 not in wheel
music21WheelIn the crate
matrixnot in the wheelmatrix
findHistoricalnot in the wheelfind_historical
findTransformedHistoricalnot in the wheelfind_transformed_historical
isAllIntervalnot in the wheelis_all_interval
getLinkClassificationnot in the wheellink_classification
isLinkChordnot in the wheelis_link_chord
areCombinatorialnot in the wheelare_combinatorial
▶serial.py functionsserial.py wheel 3 of 3

Module-level helpers.

music21WheelIn the crate
getHistoricalRowByNamein the wheelhistorical_row_by_name
pcToToneRowin the wheelnew
rowToMatrixin the wheelrow_to_matrix
▶VoiceLeadingQuartetvoiceLeading.py wheel 0 of 30
30 not in wheel
music21WheelIn the crate
keynot in the wheelkey
v1n1not in the wheelv1n1
v1n2not in the wheelv1n2
v2n1not in the wheelv2n1
v2n2not in the wheelv2n2
motionTypenot in the wheelmotion_type
noMotionnot in the wheelno_motion
obliqueMotionnot in the wheeloblique_motion
similarMotionnot in the wheelsimilar_motion
parallelMotionnot in the wheelparallel_motion
contraryMotionnot in the wheelcontrary_motion
outwardContraryMotionnot in the wheeloutward_contrary_motion
inwardContraryMotionnot in the wheelinward_contrary_motion
antiParallelMotionnot in the wheelanti_parallel_motion
parallelIntervalnot in the wheelparallel_interval
parallelFifthnot in the wheelparallel_fifth
parallelOctavenot in the wheelparallel_octave
parallelUnisonnot in the wheelparallel_unison
parallelUnisonOrOctavenot in the wheelparallel_unison_or_octave
hiddenIntervalnot in the wheelhidden_interval
hiddenFifthnot in the wheelhidden_fifth
hiddenOctavenot in the wheelhidden_octave
voiceOverlapnot in the wheelvoice_overlap
voiceCrossingnot in the wheelvoice_crossing
isProperResolutionnot in the wheelis_proper_resolution
leapNotSetWithStepnot in the wheelleap_not_set_with_step
modalOpeningnot in the wheelmodal_opening
opensIncorrectlynot in the wheelopens_incorrectly
clausulaVeranot in the wheelclausula_vera
closesIncorrectlynot in the wheelcloses_incorrectly
▶Sievesieve.py wheel 9 of 9

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

music21WheelIn the crate
expandin the wheelwhich reading answers is not state on the sieve here; compressed hands back the other one and the sieve as written stays as it was
compressin the wheelcompressed
setZin the wheelthe range is an argument of each question here, not state on the sieve
setZRangein the wheelthe range is an argument of each question here, not state on the sieve
setSegmentFormatin the wheelthe segment format is an argument of each question here, not state on the sieve
segmentin the wheelsegment
periodin the wheelperiod
collectin the wheelcollect
representin the wheelthe sieve is written by Display, which is not a function the map can name
▶Beamsbeam.py wheel 12 of 12

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

music21WheelIn the crate
naiveBeamsin the wheelnaive_beams
removeSandwichedUnbeamablesin the wheelremove_sandwiched_unbeamables
mergeConnectingPartialBeamsin the wheelmerge_connecting_partial_beams
sanitizePartialBeamsin the wheelsanitize_partial_beams
appendin the wheelappend
fillin the wheelfill
getByNumberin the wheelby_number
getNumbersin the wheelnumbers
getTypeByNumberin the wheelby_number
getTypesin the wheeltypes
setAllin the wheelset_all
setByNumberin the wheelset_by_number
▶Volumevolume.py wheel 9 of 9

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

music21WheelIn the crate
getDynamicContextin the wheeldynamic_context
mergeAttributesin the wheelmerge_attributes
getRealizedStrin the wheelrealized_str
getRealizedin the wheelrealized
cachedRealizedin the wheelthe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does
cachedRealizedStrin the wheelthe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does
realizedin the wheelrealized
velocityin the wheelvelocity
velocityScalarin the wheelvelocity_scalar
▶volume.py functionsvolume.py wheel 1 of 1
music21WheelIn the crate
realizeVolumein the wheelrealize_volume
▶FigurefiguredBass/notation.py wheel 1 of 1

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

music21WheelIn the crate
isPureExtenderin the wheelis_pure_extender
▶ModifierfiguredBass/notation.py wheel 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.

music21WheelIn the crate
modifyPitchNamein the wheelmodify_pitch_name
modifyPitchin the wheelmodify
▶figuredBass/notation.py functionsfiguredBass/notation.py wheel 1 of 1
music21WheelIn the crate
convertToPitchin the wheelconvert_to_pitch
▶sieve.py functionssieve.py wheel 6 of 6

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

music21WheelIn the crate
eratosthenesin the wheeleratosthenes
rabinMillerin the wheelrabin_miller
discreteBinaryPadin the wheeldiscrete_binary_pad
unitNormRangein the wheelunit_norm_range
unitNormEqualin the wheelunit_norm_equal
unitNormStepin the wheelunit_norm_step
▶GeneralNotenote.py wheel 0 of 8
8 not in wheel

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.

music21WheelIn the crate
tienot in the wheeltie
lyricnot in the wheellyric
addLyricnot in the wheeladd_lyric
insertLyricnot in the wheelinsert_lyric
fullNamenot in the wheelfull_name
pitchesnot in the wheelpitches
augmentOrDiminishnot in the wheelaugment_or_diminish
getGracenot in the wheelgrace_note
▶NotRestnote.py wheel 0 of 8
8 not in wheel

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

music21WheelIn the crate
stemDirectionnot in the wheelstem_direction
noteheadnot in the wheelnotehead
noteheadFillnot in the wheelnotehead_fill
noteheadParenthesisnot in the wheelnotehead_parenthesis
hasVolumeInformationnot in the wheelhas_volume_information
volumenot in the wheelvolume
storedInstrumentnot in the wheelstored_instrument
getInstrumentnot in the wheelinstrument
▶Lyricnote.py wheel 7 of 7

A syllable sung to a note.

music21WheelIn the crate
isCompositein the wheelis_composite
textin the wheeltext
syllabicin the wheelsyllabic
identifierin the wheelidentifier
rawTextin the wheelraw_text
numberin the wheelnumber
setTextAndSyllabicin the wheelset_text_and_syllabic
▶Restnote.py wheel 0 of 1
1 not in wheel

A silence of a written length.

music21WheelIn the crate
fullNamenot in the wheelfull_name
▶ChordBasechord/__init__.py wheel 0 of 7
7 not in wheel

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

music21WheelIn the crate
addnot in the wheeladd
removenot in the wheelremove
notesnot in the wheelnotes
tienot in the wheeltie
volumenot in the wheelvolume
hasComponentVolumesnot in the wheelhas_component_volumes
setVolumesnot in the wheelset_volumes
▶Tupletduration.py wheel 10 of 10

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

music21WheelIn the crate
augmentOrDiminishin the wheelaugment_or_diminish
setDurationTypein the wheelset_duration_type
setRatioin the wheelset_ratio
totalTupletLengthin the wheeltotal_tuplet_length
tupletMultiplierin the wheelmultiplier
durationActualin the wheelduration_actual
durationNormalin the wheelduration_normal
fullNamein the wheelfull_name
tupletActualin the wheeltuplet_actual
tupletNormalin the wheeltuplet_normal
▶Notenote.py wheel 0 of 8
8 not in wheel

A pitch and an optional duration.

music21WheelIn the crate
namenot in the wheelpitch_name
nameWithOctavenot in the wheelpitch_name_with_octave
stepnot in the wheelstep
octavenot in the wheeloctave
pitchesnot in the wheelpitches
transposenot in the wheeltranspose
fullNamenot in the wheelfull_name
pitchChangednot in the wheelobserver callback; there is none
▶ChordSymbolharmony.py wheel 0 of 3
3 not in wheel
music21WheelIn the crate
findFigurenot in the wheelfind_figure
inversionIsValidnot in the wheelinversion_is_valid
transposenot in the wheeltranspose
▶pitch.py functionspitch.py wheel 4 of 4

Module-level helpers.

music21WheelIn the crate
isValidAccidentalNamein the wheelis_valid_name
standardizeAccidentalNamein the wheelstandardize_name
convertPitchClassToStrin the wheelconvert_pitch_class_to_str
simplifyMultipleEnharmonicsin the wheelsimplify_multiple_enharmonics
▶key.py functionskey.py wheel 3 of 3

Module-level helpers.

music21WheelIn the crate
convertKeyStringToMusic21KeyStringin the wheelconvert_key_string_to_music21_key_string
sharpsToPitchin the wheelsharps_to_pitch
pitchToSharpsin the wheelpitch_to_sharps
▶duration.py functionsduration.py wheel 12 of 12

Module-level helpers.

music21WheelIn the crate
nextLargerTypein the wheelnext_larger
nextSmallerTypein the wheelnext_smaller
quarterLengthToClosestTypein the wheelquarter_length_to_closest_type
convertQuarterLengthToTypein the wheelfrom_quarter_length
dottedMatchin the wheeltype_and_dots
quarterLengthToNonPowerOf2Tupletin the wheelquarter_length_to_non_power_of_2_tuplet
quarterLengthToTupletin the wheelquarter_length_to_tuplet
quarterConversionin the wheelquarter_conversion
convertTypeToQuarterLengthin the wheelquarter_length
convertTypeToNumberin the wheeltype_number
durationTupleFromQuarterLengthin the wheeltype_and_dots
durationTupleFromTypeDotsin the wheelfrom_type_with_dots
▶tempo.py functionstempo.py wheel 2 of 2

Module-level helpers.

music21WheelIn the crate
convertTempoByReferentin the wheelconvert_tempo_by_referent
interpolateElementsin the wheelinterpolate_elements
▶roman.py functionsroman.py wheel 8 of 8

Module-level helpers.

music21WheelIn the crate
expandShortHandin the wheelexpand_shorthand
correctSuffixForChordQualityin the wheelcorrect_suffix_for_chord_quality
figureTuplesin the wheelfigure_tuples
figureTupleSoloin the wheelfrom_pitch_and_reference
identifyAsTonicOrDominantin the wheelidentify_as_tonic_or_dominant
romanInversionNamein the wheelroman_inversion_name
correctRNAlterationForMinorin the wheelcorrect_rn_alteration_for_minor
romanNumeralFromChordin the wheelroman_numeral_from_chord
▶chord/__init__.py functionschord/__init__.py wheel 2 of 2

Module-level helpers.

music21WheelIn the crate
fromForteClassin the wheelfrom_forte_class
fromIntervalVectorin the wheelfrom_interval_vector
▶chord/tables.py functionschord/tables.py wheel 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.

music21WheelIn the crate
forteIndexToInversionsAvailablein the wheelinversions_available
addressToTransposedNormalFormin the wheelnormal_form
addressToPrimeFormin the wheelprime_form
addressToIntervalVectorin the wheelinterval_class_vector
intervalVectorToAddressin the wheelset_classes_with_interval_vector
addressToZAddressin the wheelz_related_class
addressToCommonNamesin the wheelcommon_names
addressToForteNamein the wheelforte_name
seekChordTablesAddressin the wheeladdress_of_pitch_classes
▶TabChordBaseromanText/tsvConverter.py wheel 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.

music21WheelIn the crate
combinedChordin the wheelchord
tabToM21in the wheelelement
populateFromRowin the wheelfrom_row
▶TabChordV2romanText/tsvConverter.py wheel 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.

music21WheelIn the crate
beatin the wheelbeat
measurein the wheelmeasure
local_keyin the wheellocal_key
global_keyin the wheelglobal_key
▶TsvHandlerromanText/tsvConverter.py wheel 0 of 3
3 not in wheel

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

music21WheelIn the crate
tsvToChordsnot in the wheeltsv_to_chords
toM21Streamnot in the wheelfrom_tsv
prepStreamnot in the wheela step inside the reader: from_tsv prepares the measures from the table's own numbers and meters itself and hands back the whole score
▶M21toTSVromanText/tsvConverter.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
m21ToTsvnot in the wheelto_tsv
writenot in the wheelwrites a file, which the library does not do: to_tsv hands back the text
▶romanText/tsvConverter.py functionsromanText/tsvConverter.py wheel 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.

music21WheelIn the crate
getFormin the wheelform_of
handleAddedTonesin the wheelhandle_added_tones
localKeyAsRnin the wheellocal_key_as_roman
isMinorin the wheelis_minor
characterSwapsin the wheelcharacter_swaps
getLocalKeyin the wheellocal_key
getSecondaryKeyin the wheelsecondary_key
▶CTSongromanText/clercqTemperley.py wheel 8 of 8

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.

music21WheelIn the crate
parsein the wheelparse
titlein the wheeltitle
commentsin the wheelcomments
rulesin the wheelrules
homeTimeSigin the wheelhome_time_signature
homeKeyin the wheelhome_key
toPartin the wheelto_part
toScorein the wheelmusic21's own deprecated name for toPart, which it will take out
▶CTRuleromanText/clercqTemperley.py wheel 12 of 12

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.

music21WheelIn the crate
parentin the wheelmusic21 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
expandin the wheelexpand
expandExpansionContentin the wheela step inside the expansion, which the crate drives from the song rather than from the rule keeping the state
expandSimpleContentin the wheela step inside the expansion, as expandExpansionContent
isSamein the wheelis_same
addOptionalTieAndLyricsin the wheela step inside the expansion, which ties the chord before as it writes the one after
insertKsTsin the wheela step inside the expansion: the crate writes the key and the meter into a measure as it builds it
fixupChordAtomin the wheelfixup_chord_atom
musicTextin the wheelmusic_text
commentin the wheelcomment
LHSin the wheelleft_hand_side
sectionNamein the wheelsection_name
▶harmony.py functionsharmony.py wheel 7 of 10
3 not in wheel

Module-level helpers.

music21WheelIn the crate
addNewChordSymbolnot in the wheelmutates 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
changeAbbreviationFornot in the wheelmutates 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
removeChordSymbolsnot in the wheelmutates 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
chordSymbolFigureFromChordin the wheelchord_symbol_figure_from_chord
alterToChordSymbolStringin the wheelalter_to_chord_symbol_string
chordSymbolFromChordin the wheelchord_symbol_from_chord
getAbbreviationListGivenChordTypein the wheelabbreviations_for_kind
getCurrentAbbreviationForin the wheelcurrent_abbreviation_for_kind
getNotationStringGivenChordTypein the wheelnotation_for_kind
realizeChordSymbolDurationsin the wheelrealize_chord_symbol_durations
▶meter/base.py functionsmeter/base.py wheel 1 of 1

Module-level helpers.

music21WheelIn the crate
bestTimeSignaturein the wheelbest_time_signature
▶ScalaDatascale/scala/__init__.py wheel 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.

music21WheelIn the crate
parsein the wheelparse
getCentsAboveTonicin the wheelwritten_cents
getAdjacentCentsin the wheeladjacent_cents
setAdjacentCentsin the wheelfrom_adjacent_cents
getIntervalSequencein the wheelinterval_sequence
setIntervalSequencein the wheelfrom_interval_sequence
getFileStringin the wheelfile_string
▶scale/scala/__init__.py functionsscale/scala/__init__.py wheel 3 of 3

Module-level helpers.

music21WheelIn the crate
getPathsin the wheelwhere the archive's files sit on disk; the archive here is one bundled table and has no paths
parsein the wheelfind
searchin the wheelsearch
▶Tietie.py wheel 4 of 4

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

music21WheelIn the crate
idin the wheelthe 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
placementin the wheelplacement
stylein the wheelstyle
typein the wheeltie_type
▶MeterTerminalmeter/core.py wheel 5 of 5

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

music21WheelIn the crate
modifyin the wheelno reason given
weightin the wheelweight
numeratorin the wheelnumerator
denominatorin the wheeldenominator
depthin the wheeldepth
▶MeterNodemeter/core.py wheel 8 of 8

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

music21WheelIn the crate
numeratorin the wheelnumerator
denominatorin the wheeldenominator
weightin the wheelweight
durationin the wheelquarter_length
ratioEqualin the wheelratio_equal
subdivideByCountin the wheelsubdivide_by_count
subdivideByListin the wheelsubdivide_by_list
subdividein the wheelno reason given
▶MeterSequencemeter/core.py wheel 30 of 30

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

music21WheelIn the crate
modifyin the wheelno reason given
loadin the wheelraises in music21, since a sequence cannot change; a new one is built instead
setIndexin the wheelset_index
partitionDisplayin the wheelpartition_display
getPartitionOptionsin the wheelpartition_options
partitionedByCountin the wheelpartitioned_by_count
partitionedByListin the wheelpartitioned_by_list
partitionedByOtherMeterSequencein the wheelpartitioned_by_other
partitionedin the wheelone method dispatching on the type of what it is handed; the three partitions it dispatches to are each ported
subdividedPartitionsEqualin the wheelsubdivided_partitions_equal
subdividedNestedHierarchyin the wheelsubdivided_nested_hierarchy
partitionStrin the wheelpartition_string
numeratorin the wheelnumerator
denominatorin the wheeldenominator
weightin the wheelweight
withWeightin the wheelwith_weight
flattenin the wheelflatten
flatWeightin the wheelflat_weights
depthin the wheeldepth
isUniformPartitionin the wheelis_uniform_partition
getLevelListin the wheellevel_list
getLevelin the wheellevel
getLevelSpanin the wheellevel_span
getLevelWeightin the wheellevel_weight
withLevelWeightin the wheelwith_level_weight
offsetToIndexin the wheeloffset_to_index
offsetToAddressin the wheeloffset_to_address
offsetToSpanin the wheeloffset_to_span
offsetToWeightin the wheeloffset_to_weight
offsetToDepthin the wheeloffset_to_depth
▶voiceLeading.py functionsvoiceLeading.py wheel 2 of 2

Module-level helpers.

music21WheelIn the crate
getVerticalityFromObjectin the wheelverticality_at
iterateAllVoiceLeadingQuartetsin the wheeliterate_all_voice_leading_quartets
▶Dynamicdynamics.py wheel 0 of 2
2 not in wheel

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.

music21WheelIn the crate
valuenot in the wheelvalue
volumeScalarnot in the wheelvolume_scalar
▶dynamics.py functionsdynamics.py wheel 1 of 1

Module-level helpers.

music21WheelIn the crate
dynamicStrFromDecimalin the wheeldynamic_str_from_decimal
▶Clefclef.py wheel 0 of 3
3 not in wheel

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

music21WheelIn the crate
octaveChangenot in the wheeloctave_change
namenot in the wheelname
getStemDirectionForPitchesnot in the wheelstem_direction_for_pitches
▶PitchClefclef.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
octaveChangenot in the wheeloctave_change
▶clef.py functionsclef.py wheel 2 of 2

Module-level helpers.

music21WheelIn the crate
clefFromStringin the wheelfrom_string
bestClefin the wheelbest_for
▶Articulationarticulations.py wheel 0 of 2
2 not in wheel

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.

music21WheelIn the crate
namenot in the wheelname
volumeShiftnot in the wheelvolume_shift
▶Ornamentexpressions.py wheel 0 of 5
5 not in wheel

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

music21WheelIn the crate
realizenot in the wheelrealize
fillListOfRealizedNotesnot in the wheela helper realize fills its lists with; realize is ported
resolveOrnamentalPitchesnot in the wheelornamental_pitches
ornamentalPitchesnot in the wheelornamental_pitches
updateAccidentalDisplaynot in the wheelupdate_accidental_display
▶GeneralMordentexpressions.py wheel 0 of 9
9 not in wheel
music21WheelIn the crate
namenot in the wheelname
accidentalnot in the wheelaccidental
directionnot in the wheeldirection
getSizenot in the wheelsize
resolveOrnamentalPitchesnot in the wheelornamental_pitches
ornamentalPitchnot in the wheelornamental_pitches
ornamentalPitchesnot in the wheelornamental_pitches
updateAccidentalDisplaynot in the wheelupdate_accidental_display
realizenot in the wheelrealize
▶Trillexpressions.py wheel 0 of 10
10 not in wheel
music21WheelIn the crate
namenot in the wheelname
directionnot in the wheeldirection
accidentalnot in the wheelaccidental
splitClientnot in the wheelsplit_client
getSizenot in the wheelsize
resolveOrnamentalPitchesnot in the wheelornamental_pitches
ornamentalPitchnot in the wheelornamental_pitches
ornamentalPitchesnot in the wheelornamental_pitches
updateAccidentalDisplaynot in the wheelupdate_accidental_display
realizenot in the wheelrealize
▶Turnexpressions.py wheel 0 of 12
12 not in wheel
music21WheelIn the crate
upperAccidentalnot in the wheelupper_accidental
lowerAccidentalnot in the wheellower_accidental
delaynot in the wheeldelay
isDelayednot in the wheelis_delayed
namenot in the wheelname
getSizenot in the wheelturn_size
resolveOrnamentalPitchesnot in the wheelornamental_pitches
upperOrnamentalPitchnot in the wheelornamental_pitches
lowerOrnamentalPitchnot in the wheelornamental_pitches
ornamentalPitchesnot in the wheelornamental_pitches
updateAccidentalDisplaynot in the wheelupdate_accidental_display
realizenot in the wheelrealize
▶GeneralAppoggiaturaexpressions.py wheel 0 of 1
1 not in wheel
music21WheelIn the crate
realizenot in the wheelrealize
▶Tremoloexpressions.py wheel 0 of 2
2 not in wheel
music21WheelIn the crate
numberOfMarksnot in the wheelnumber_of_marks
realizenot in the wheelrealize
▶figuredBass/possibility.py functionsfiguredBass/possibility.py wheel 15 of 15

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

music21WheelIn the crate
voiceCrossingin the wheelvoice_crossing
isIncompletein the wheelis_incomplete
upperPartsWithinLimitin the wheelupper_parts_within_limit
pitchesWithinLimitin the wheelpitches_within_limit
limitPartToPitchin the wheellimit_part_to_pitch
parallelFifthsin the wheelparallel_fifths
parallelOctavesin the wheelparallel_octaves
hiddenFifthsin the wheelhidden_fifths
hiddenOctavesin the wheelhidden_octaves
voiceOverlapin the wheelvoice_overlap
partMovementsWithinLimitsin the wheelpart_movements_within_limits
upperPartsSamein the wheelupper_parts_same
partsSamein the wheelparts_same
couldBeItalianA6Resolutionin the wheelcould_be_italian_a6_resolution
partPairsin the wheelpart_pairs
▶figuredBass/resolution.py functionsfiguredBass/resolution.py wheel 13 of 14
1 not in wheel

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

music21WheelIn the crate
showResolutionsnot in the wheelputs 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
augmentedSixthToDominantin the wheelaugmented_sixth_to_dominant
augmentedSixthToMajorTonicin the wheelaugmented_sixth_to_major_tonic
augmentedSixthToMinorTonicin the wheelaugmented_sixth_to_minor_tonic
dominantSeventhToMajorTonicin the wheeldominant_seventh_to_major_tonic
dominantSeventhToMinorTonicin the wheeldominant_seventh_to_minor_tonic
dominantSeventhToMajorSubmediantin the wheeldominant_seventh_to_major_submediant
dominantSeventhToMinorSubmediantin the wheeldominant_seventh_to_minor_submediant
dominantSeventhToMajorSubdominantin the wheeldominant_seventh_to_major_subdominant
dominantSeventhToMinorSubdominantin the wheeldominant_seventh_to_minor_subdominant
diminishedSeventhToMajorTonicin the wheeldiminished_seventh_to_major_tonic
diminishedSeventhToMinorTonicin the wheeldiminished_seventh_to_minor_tonic
diminishedSeventhToMajorSubdominantin the wheeldiminished_seventh_to_major_subdominant
diminishedSeventhToMinorSubdominantin the wheeldiminished_seventh_to_minor_subdominant
▶FiguredBassScalefiguredBass/realizerScale.py wheel 3 of 3

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

music21WheelIn the crate
getPitchNamesin the wheelpitch_names
getSamplePitchesin the wheelsample_pitches
getPitchesin the wheelpitches
▶SegmentfiguredBass/segment.py wheel 9 of 9

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

music21WheelIn the crate
singlePossibilityRulesin the wheelmusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
consecutivePossibilityRulesin the wheelmusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
specialResolutionRulesin the wheelmusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
resolveDominantSeventhSegmentin the wheelresolve_dominant_seventh_segment
resolveDiminishedSeventhSegmentin the wheelresolve_diminished_seventh_segment
resolveAugmentedSixthSegmentin the wheelresolve_augmented_sixth_segment
allSinglePossibilitiesin the wheelall_single_possibilities
allCorrectSinglePossibilitiesin the wheelall_correct_single_possibilities
allCorrectConsecutivePossibilitiesin the wheelall_correct_consecutive_possibilities
▶figuredBass/segment.py functionsfiguredBass/segment.py wheel 1 of 2
1 not in wheel

Module-level helpers.

music21WheelIn the crate
printRulesnot in the wheelprints music21's rule tables, which hold its Python functions
getPitchesin the wheelpitches
▶FiguredBassLinefiguredBass/realizer.py wheel 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.

music21WheelIn the crate
addElementin the wheeladd_element
generateBassLinein the wheelgenerate_bass_line
retrieveSegmentsin the wheelsegments
overlayPartin the wheeloverlay_part
realizein the wheelrealize
▶RealizationfiguredBass/realizer.py wheel 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.

music21WheelIn the crate
getNumSolutionsin the wheelnum_solutions
getAllPossibilityProgressionsin the wheelall_possibility_progressions
getRandomPossibilityProgressionin the wheelpossibility_progression_by
generateRealizationFromPossibilityProgressionin the wheelgenerate_realization_from_possibility_progression
generateAllRealizationsin the wheelgenerate_all_realizations
generateRandomRealizationin the wheelgenerate_random_realization
generateRandomRealizationsin the wheelgenerate_random_realizations
▶KeyWeightKeyAnalysisanalysis/discrete.py wheel 2 of 6
4 not in wheel

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

music21WheelIn the crate
solutionLegendnot in the wheelthe colour legend of a keyscape graph; presentation
solutionUnitStringnot in the wheelthe unit a graph's legend is labelled with; presentation
solutionToColornot in the wheelthe colour a key is drawn in; presentation
processnot in the wheelestimate_key_from_distribution
getWeightsin the wheelmajor_weights
getSolutionin the wheelestimate_key_from_distribution
▶Ambitusanalysis/discrete.py wheel 2 of 6
4 not in wheel
music21WheelIn the crate
solutionLegendnot in the wheelthe colour legend of a graph; presentation
solutionUnitStringnot in the wheelthe unit a graph's legend is labelled with; presentation
solutionToColornot in the wheelthe colour a span is drawn in; presentation
processnot in the wheelpitch_span
getPitchSpanin the wheelpitch_span
getSolutionin the wheelpitch_span
▶MelodicIntervalDiversityanalysis/discrete.py wheel 4 of 4
music21WheelIn the crate
solutionToColorin the wheelthe colour a count is drawn in; presentation
countMelodicIntervalsin the wheelmelodic_interval_counts
processin the wheelmelodic_interval_counts
getSolutionin the wheelmelodic_interval_counts
▶EnharmonicSimplifieranalysis/enharmonics.py wheel 6 of 6

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

music21WheelIn the crate
getRepresentationsin the wheelspelling_options
getProductin the wheellists every combination of the spellings at once; best_choice walks them one at a time
bestPitchesin the wheelbest_spelling
getAlterationScorein the wheelalteration_score
getMixSharpFlatsScorein the wheelmixture_score
getAugDimScorein the wheelaug_dim_score
▶analysis/neoRiemannian.py functionsanalysis/neoRiemannian.py wheel 12 of 12

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

music21WheelIn the crate
Lin the wheelapply
Pin the wheelapply
Rin the wheelapply
isNeoRin the wheelis_neo_r
isChromaticMediantin the wheelis_chromatic_mediant
LRP_combinationsin the wheellrp_combination
completeHexatonicin the wheelcomplete_hexatonic
hexatonicSystemin the wheelhexatonic_system
chromaticMediantsin the wheelchromatic_mediant
disjunctMediantsin the wheeldisjunct_mediant
Sin the wheelslide
Nin the wheelnebenverwandt
▶analysis/harmonicFunction.py functionsanalysis/harmonicFunction.py wheel 2 of 2

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

music21WheelIn the crate
functionToRomanin the wheelto_roman
romanToFunctionin the wheelfrom_roman
▶TranspositionCheckeranalysis/transposition.py wheel 6 of 6

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

music21WheelIn the crate
getTranspositionsin the wheeltranspositions
listNormalOrdersin the wheelnormal_orders
listDistinctNormalOrdersin the wheeldistinct_normal_orders
numDistinctTranspositionsin the wheeldistinct_count
getChordsOfDistinctTranspositionsin the wheeldistinct_chords
getPitchesOfDistinctTranspositionsin the wheeldistinct_pitches
▶analysis/patel.py functionsanalysis/patel.py wheel 2 of 2

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

music21WheelIn the crate
nPVIin the wheeln_pvi
melodicIntervalVariabilityin the wheelmelodic_interval_variability
▶analysis/metrical.py functionsanalysis/metrical.py wheel 2 of 2

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

music21WheelIn the crate
labelBeatDepthin the wheellabel_beat_depth
thomassenMelodicAccentin the wheelthomassen_melodic_accent
▶expressions.py functionsexpressions.py wheel 2 of 2

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.

music21WheelIn the crate
isUnisonin the wheelwhether 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
realizeOrnamentsin the wheelrealize_ornaments
▶stream/makeNotation.py functionsstream/makeNotation.py wheel 11 of 17
6 not in wheel

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.

music21WheelIn the crate
moveNotesToVoicesnot in the wheelthe 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
makeAccidentalsInMeasureStreamnot in the wheelmake_accidentals
setStemDirectionOneGroupnot in the wheelone group of that walk
splitElementsToCompleteTupletsnot in the wheelsplit_elements_to_complete_tuplets
consolidateCompletedTupletsnot in the wheelconsolidate_completed_tuplets
saveAccidentalDisplayStatusnot in the wheela 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
makeBeamsin the wheelmake_beams
makeMeasuresin the wheelmake_measures
makeRestsin the wheelmake_rests
makeTiesin the wheelmake_ties
makeTupletBracketsin the wheelmake_tuplet_brackets
realizeOrnamentsin the wheelrealize_ornaments
getTiePitchSetin the wheeltie_pitch_set
ornamentalPitchesin the wheelevery 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
makeOrnamentalAccidentalsin the wheelmake_ornamental_accidentals
iterateBeamGroupsin the wheelthe 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
setStemDirectionForBeamGroupsin the wheelset_stem_direction_for_beam_groups
▶analysis/elements.py functionsanalysis/elements.py wheel 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.

music21WheelIn the crate
attributeCountin the wheelattribute_count
▶Segmenteranalysis/segmentByRests.py wheel 2 of 2

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

music21WheelIn the crate
getSegmentsListin the wheelsegments_list
getIntervalListin the wheelinterval_list
▶analysis/pitchAnalysis.py functionsanalysis/pitchAnalysis.py wheel 1 of 1

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

music21WheelIn the crate
pitchAttributeCountin the wheelpitch_attribute_count
▶WindowedAnalysisanalysis/windowed.py wheel 3 of 3

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

music21WheelIn the crate
getMinimumWindowStreamin the wheelnew
analyzein the wheelanalyze
processin the wheelprocess
▶KeyAnalyzeranalysis/floatingKey.py wheel 4 of 4

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

music21WheelIn the crate
runin the wheelrun
getRawKeyByMeasurein the wheelraw_key_by_measure
getInterpretationByMeasurein the wheelinterpretation_by_measure
smoothInterpretationByMeasurein the wheelsmooth_interpretation_by_measure
▶analysis/floatingKey.py functionsanalysis/floatingKey.py wheel 1 of 1
music21WheelIn the crate
dividein the wheeldivide
▶humdrum/harmParser.py functionshumdrum/harmParser.py wheel 1 of 1

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

music21WheelIn the crate
convertHarmToRomanin the wheelconvert_harm_to_roman
▶HarmParserhumdrum/harmParser.py wheel 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.

music21WheelIn the crate
parsein the wheelparse
▶Barlinebar.py wheel 0 of 2
2 not in wheel

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.

music21WheelIn the crate
typenot in the wheelbar_type
musicXMLBarStylenot in the wheelmusicxml_bar_style
▶Repeatbar.py wheel 0 of 3
3 not in wheel

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.

music21WheelIn the crate
directionnot in the wheelrepeat_direction
timesnot in the wheelrepeat_times
getTextExpressionnot in the wheelrepeat_text_expression
▶Streamstream/base.py wheel 0 of 131
131 not in wheel

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.

music21WheelIn the crate
writenot in the wheelwriting a file, which the format modules do
shownot in the wheelrendering, which the crate leaves to its caller
iternot in the wheeliter
firstnot in the wheelfirst
lastnot in the wheellast
elementsnot in the wheelevents
clefnot in the wheelclef
timeSignaturenot in the wheeltime_signature_at
keySignaturenot in the wheelkey_signature_at
staffLinesnot in the wheelstaff_lines
clearnot in the wheelclear
cloneEmptynot in the wheelclone_empty
mergeAttributesnot in the wheelwhat clone_empty carries over
hasElementOfClassnot in the wheelhas_element_of_class
mergeElementsnot in the wheelmerge_elements
indexnot in the wheelas elementOffset
removenot in the wheeltakes a named object out; retain_leaves and remove_event take out by place or by test
popnot in the wheelremove_event
removeByClassnot in the wheelremove_by_class
removeByNotOfClassnot in the wheelremove_by_not_of_class
setElementOffsetnot in the wheelmoves 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
elementOffsetnot in the wheelasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset
insertnot in the wheelinsert
insertIntoNoteOrChordnot in the wheelinsert_into_note_or_chord
appendnot in the wheelpush
storeAtEndnot in the wheelelements 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
isAtEndnot in the wheelasks 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
insertAndShiftnot in the wheelinsert_and_shift
setDerivationMethodnot in the wheelderivations, which a crate stream does not keep
replacenot in the wheelswaps one object for another; events_mut reaches each in place
splitAtDurationsnot in the wheelsplit_at_durations
splitAtQuarterLengthnot in the wheelsplit_at_quarter_length
recurseReprnot in the wheelmusic21's own text dump of a stream
plotnot in the wheelplotting, which the crate leaves to its caller
analyzenot in the wheelanalyze
addGroupForElementsnot in the wheelthe group names music21 picks elements out of a stream by; nothing a crate stream holds carries them
getElementsByClassnot in the wheelelements_of_class
getElementsNotOfClassnot in the wheelelements_not_of_class
getElementsByGroupnot in the wheelas addGroupForElements
getElementByIdnot in the wheelelement_by_id
getElementsByOffsetnot in the wheelelements_in_span
getElementAtOrBeforenot in the wheelelement_at_or_before
getElementBeforeOffsetnot in the wheelelement_before_offset
getElementAfterElementnot in the wheelelement_after
measuresnot in the wheelmeasures_between
measurenot in the wheelmeasure
templatenot in the wheeltemplate
measureOffsetMapnot in the wheelmeasure_offset_map
finalBarlinenot in the wheelfinal_barline
voicesnot in the wheelvoices
spannersnot in the wheelspanners
atSoundingPitchnot in the wheelat_sounding_pitch
toSoundingPitchnot in the wheelto_sounding_pitch
toWrittenPitchnot in the wheelto_written_pitch
getTimeSignaturesnot in the wheeltime_signatures
getInstrumentsnot in the wheelinstruments
getInstrumentnot in the wheelinstrument
invertDiatonicnot in the wheelinvert_diatonic
shiftElementsnot in the wheelshift_elements
transferOffsetToElementsnot in the wheelmoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep
repeatAppendnot in the wheelrepeat_append
repeatInsertnot in the wheelrepeat_insert
extractContextnot in the wheelextract_context
chordifynot in the wheelchordify
splitByClassnot in the wheelsplit_by
offsetMapnot in the wheeloffset_map
makeMeasuresnot in the wheelmake_measures
makeRestsnot in the wheelmake_rests
makeTiesnot in the wheelmake_ties
makeBeamsnot in the wheelmake_beams
makeAccidentalsnot in the wheelmake_accidentals
haveAccidentalsBeenMadenot in the wheelaccidentals_made
makeNotationnot in the wheelmake_notation
extendDurationnot in the wheelextend_duration
stripTiesnot in the wheelstrip_ties
extendTiesnot in the wheelextend_ties
sortnot in the wheela 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
sortednot in the wheelas sort
flattennot in the wheelflatten
recursenot in the wheelrecurse
containerInHierarchynot in the wheelneeds the sites a crate stream does not keep
makeImmutablenot in the wheelmusic21's mutability machinery, which a value has no need of
makeMutablenot in the wheelas makeImmutable
highestOffsetnot in the wheelhighest_offset
highestTimenot in the wheelhighest_time
lowestOffsetnot in the wheellowest_offset
durationnot in the wheelduration
secondsnot in the wheelseconds
metronomeMarkBoundariesnot in the wheelmetronome_mark_boundaries
metadatanot in the wheelmetadata
beatnot in the wheelwhere 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
beatStrnot in the wheelas beat
beatDurationnot in the wheelbeat_duration
beatStrengthnot in the wheelas beat
beatAndMeasureFromOffsetnot in the wheelbeat_and_measure_from_offset
transposenot in the wheeltranspose
scaleOffsetsnot in the wheelscale_offsets
scaleDurationsnot in the wheelscale_durations
augmentOrDiminishnot in the wheelaugment_or_diminish
quantizenot in the wheelquantize
expandRepeatsnot in the wheelexpand_repeats
sliceByQuarterLengthsnot in the wheelslice_by_quarter_lengths
sliceByGreatestDivisornot in the wheelslice_by_greatest_divisor
sliceAtOffsetsnot in the wheelslice_at_offsets
sliceByBeatnot in the wheelslice_by_beat
hasMeasuresnot in the wheelhas_measures
hasVoicesnot in the wheelhas_voices
hasPartLikeStreamsnot in the wheelhas_part_like_streams
isTwelveTonenot in the wheelis_twelve_tone
isWellFormedNotationnot in the wheelis_well_formed_notation
notesAndRestsnot in the wheelnotes_and_rests
notesnot in the wheelnotes
pitchesnot in the wheelpitches
findConsecutiveNotesnot in the wheelfind_consecutive_notes
melodicIntervalsnot in the wheelmelodic_intervals
findGapsnot in the wheelfind_gaps
isGaplessnot in the wheelis_gapless
getOverlapsnot in the wheelget_overlaps
isSequencenot in the wheelis_sequence
simultaneousAttacksnot in the wheelsimultaneous_attacks
attachIntervalsBetweenStreamsnot in the wheelharmonic_intervals
attachMelodicIntervalsnot in the wheelattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line
playingWhenAttackednot in the wheelplaying_when_attacked
allPlayingWhileSoundingnot in the wheelall_playing_while_sounding
makeVoicesnot in the wheelmake_voices
voicesToPartsnot in the wheelvoices_to_parts
explodenot in the wheelexplode
flattenUnnecessaryVoicesnot in the wheelflatten_unnecessary_voices
lyricsnot in the wheellyrics
activateVariantsnot in the wheelactivate_variants
showVariantAsOssialikePartnot in the wheelshow_variant_as_ossialike_part
▶Measurestream/base.py wheel 0 of 9
9 not in wheel

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.

music21WheelIn the crate
measureNumberWithSuffixnot in the wheelnumber_with_suffix
mergeAttributesnot in the wheelwhat clone_empty carries over
makeNotationnot in the wheelmake_notation
barDurationProportionnot in the wheelbar_duration_proportion
padAsAnacrusisnot in the wheelpad_as_anacrusis
barDurationnot in the wheelbar_duration
bestTimeSignaturenot in the wheelbest_time_signature
leftBarlinenot in the wheelleft_barline
rightBarlinenot in the wheelright_barline
▶Partstream/base.py wheel 0 of 4
4 not in wheel

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

music21WheelIn the crate
partNamenot in the wheelname
partAbbreviationnot in the wheelabbreviation
makeAccidentalsnot in the wheelmake_accidentals
mergeAttributesnot in the wheelwhat clone_empty carries over
▶Scorestream/base.py wheel 0 of 9
9 not in wheel

Every part of a piece together.

music21WheelIn the crate
partsnot in the wheelparts
measuresnot in the wheelmeasures_between
measurenot in the wheela score of each part's measure of one number; measures_between(n, Some(n)) answers it, measure reading only a stream's own measures
expandRepeatsnot in the wheelexpand_repeats
measureOffsetMapnot in the wheelmeasure_offset_map
sliceByGreatestDivisornot in the wheelslice_by_greatest_divisor
partsToVoicesnot in the wheelparts_to_voices
implodenot in the wheelimplode
makeNotationnot in the wheelmake_notation
▶Opusstream/base.py wheel 0 of 7
7 not in wheel

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

music21WheelIn the crate
getNumbersnot in the wheelscore_numbers
getScoreByNumbernot in the wheelscore_by_number
getScoreByTitlenot in the wheelscore_by_title
scoresnot in the wheelscores
mergeScoresnot in the wheelmerge_scores
writenot in the wheelwriting a file, which the format modules do
shownot in the wheelrendering, which the crate leaves to its caller
▶percussion.py classespercussion.py wheel 1 of 1

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

music21WheelIn the crate
PercussionChordin the wheelPercussionChord
▶PercussionChordpercussion.py wheel 0 of 2
2 not in wheel

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.

music21WheelIn the crate
notesnot in the wheelmembers
pitchesnot in the wheelpitches
▶tablature.py classestablature.py wheel 7 of 8
1 not in wheel

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.

music21WheelIn the crate
ChordWithFretBoardnot in the wheelChordWithFretBoard
FretNotein the wheelFretNote
FretBoardin the wheelFretBoard
FirstFretin the wheelFirstFret
GuitarFretBoardin the wheelguitar
UkeleleFretBoardin the wheelukulele
BassGuitarFretBoardin the wheelbass_guitar
MandolinFretBoardin the wheelmandolin
▶FretBoardtablature.py wheel 3 of 3
music21WheelIn the crate
fretNotesLowestFirstin the wheelfret_notes_lowest_first
getFretNoteByStringin the wheelfret_note_by_string
getPitchesin the wheelpitches
▶ChordWithFretBoardtablature.py wheel 0 of 1
1 not in wheel

A chord symbol with a diagram under it.

music21WheelIn the crate
getFretNotesFromFigurenot in the wheelmusic21'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 wheel 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.

music21WheelIn the crate
assembleLyricsin the wheelassemble_lyrics
assembleAllLyricsin the wheelassemble_all_lyrics
prependArticlein the wheelprepend_article
postpendArticlein the wheelpostpend_article
▶TextBoxtext.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
contentnot in the wheelcontent
pagenot in the wheelpage
▶LanguageDetectortext.py wheel 3 of 3

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

music21WheelIn the crate
readExcerptsin the wheelreads 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
mostLikelyLanguagein the wheelmost_likely_language
mostLikelyLanguageNumericin the wheelmost_likely_language_numeric
▶Trigramtext.py wheel 4 of 6
2 not in wheel
music21WheelIn the crate
makeWordsnot in the wheelno reason given
likelynot in the wheelwhich language a trigram is nearest, which most_likely_language answers
lengthin the wheellength
parseExcerptin the wheeladd_text
measurein the wheelthe step that counts the letter triples, which building one does
similarityin the wheelsimilarity
▶layout.py classeslayout.py wheel 6 of 10
4 not in wheel

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.

music21WheelIn the crate
StaffGroupnot in the wheelStaffGroup
LayoutScorenot in the wheela 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
Pagenot in the wheela page of such a score
Staffnot in the wheela staff of such a score
LayoutBasein the wheelthe class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds
ScoreLayoutin the wheelScoreLayout
PageLayoutin the wheelPageLayout
SystemLayoutin the wheelSystemLayout
StaffLayoutin the wheelStaffLayout
Systemin the wheela system of such a score
▶layout.py functionslayout.py wheel 0 of 4
4 not in wheel

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

music21WheelIn the crate
divideByPagesnot in the wheelbuilds a LayoutScore, which the crate has none of
getPageRegionMeasureNumbersnot in the wheelthe measures on a page of a LayoutScore
getSystemRegionMeasureNumbersnot in the wheelthe measures in a system of a LayoutScore
getRegionMeasureNumbersnot in the wheelthe measures in a region of a LayoutScore
▶ScoreLayoutlayout.py wheel 0 of 1
1 not in wheel
music21WheelIn the crate
tenthsToMillimetersnot in the wheeltenths_to_millimeters
▶StaffGrouplayout.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
barTogethernot in the wheelbar_together
symbolnot in the wheelsymbol
▶style.py classesstyle.py wheel 8 of 10
2 not in wheel

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.

music21WheelIn the crate
Enclosurenot in the wheelthe 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
StyleMixinnot in the wheelwhat music21 mixes into every class it draws; nothing here has a style of its own to mix in
Stylein the wheelthe 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
NoteStylein the wheelhow a note is drawn beyond its colour and its size, which the crate does not model. The wheel has one, for use without music21
TextStylein the wheelTextStyle
TextStylePlacementin the wheela text style that also says which side of the staff it is on, which is display::Drawn here
BezierStylein the wheelthe curve of a slur
LineStylein the wheelthe dashes of a line
StreamStylein the wheelhow a whole stream is drawn
BeamStylein the wheelhow a beam is drawn
▶TextStylestyle.py wheel 0 of 8
8 not in wheel
music21WheelIn the crate
alignVerticalnot in the wheelalign_vertical
alignHorizontalnot in the wheelalign_horizontal
justifynot in the wheeljustify
fontStylenot in the wheelfont_style
fontWeightnot in the wheelfont_weight
fontSizenot in the wheelfont_size
letterSpacingnot in the wheelthe 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
fontFamilynot in the wheelfont_family
▶spanner.py classesspanner.py wheel 7 of 10
3 not in wheel

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.

music21WheelIn the crate
PendingAssignmentRefnot in the wheelmusic21's note to itself that a spanner is waiting for its first element, which the readers keep as a queue
SpannerAnchornot in the wheelan 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
RepeatBracketnot in the wheelEnding
Spannerin the wheelSpanner
SpannerBundlein the wheelthe collection music21 keeps a stream's spanners in; a crate stream holds its own
Slurin the wheelSlur
MultiMeasureRestin the wheelMultiMeasureRest
Ottavain the wheelOttava
Linein the wheelLine
Glissandoin the wheelGlissando
▶Spannerspanner.py wheel 0 of 14
14 not in wheel

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.

music21WheelIn the crate
purgeOrphansnot in the wheeldrops the elements no stream holds any more, which only a spanner keeping objects can have
purgeLocationsnot in the wheeldrops the sites it remembers, and it remembers none
getSpannedElementsnot in the wheelspanned
getSpannedElementsByClassnot in the wheelthe elements of a class among them, which the stream holding them answers
getSpannedElementIdsnot in the wheelPython object ids
addSpannedElementsnot in the wheeladd_spanned_elements
insertFirstSpannedElementnot in the wheelinsert_first_spanned_element
hasSpannedElementnot in the wheelhas_spanned_element
replaceSpannedElementnot in the wheelreplace_spanned_element
fillnot in the wheelfills in every element between the first and the last, which asks the stream what stands between them
isFirstnot in the wheelis_first
getFirstnot in the wheelthe first element itself; spanned gives its position and the stream hands back what stands there
isLastnot in the wheelis_last
getLastnot in the wheelthe last element itself, likewise
▶Ottavaspanner.py wheel 0 of 6
6 not in wheel

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

music21WheelIn the crate
typenot in the wheelname
shiftMagnitudenot in the wheelmagnitude
shiftDirectionnot in the wheelup
intervalnot in the wheelinterval
performTranspositionnot in the wheelto_sounding_pitch
undoTranspositionnot in the wheelto_written_pitch
▶Linespanner.py wheel 0 of 6
6 not in wheel

A bracket with a tick at each end.

music21WheelIn the crate
endTicknot in the wheelend
startTicknot in the wheelstart
ticknot in the wheelsets both ends at once; LineEnds carries each
lineTypenot in the wheelline_type
endHeightnot in the wheelend_height
startHeightnot in the wheelstart_height
▶Glissandospanner.py wheel 0 of 2
2 not in wheel
music21WheelIn the crate
lineTypenot in the wheelline_type
slideTypenot in the wheelslide_type
▶MultiMeasureRestspanner.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
numRestsnot in the wheelnum_rests
▶repeat.py classesrepeat.py wheel 11 of 16
5 not in wheel

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.

music21WheelIn the crate
RepeatMarknot in the wheelwhat music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back to
RepeatExpressionMarkernot in the wheelis_marker
RepeatExpressionCommandnot in the wheelthe kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to
Expandernot in the wheelexpand_repeats
RepeatFindernot in the wheelfinds 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
RepeatExpressionin the wheelRepeatExpression
Codain the wheelCoda
Segnoin the wheelSegno
Finein the wheelFine
DaCapoin the wheelDaCapo
DaCapoAlFinein the wheelDaCapoAlFine
DaCapoAlCodain the wheelDaCapoAlCoda
AlSegnoin the wheelAlSegno
DalSegnoin the wheelDalSegno
DalSegnoAlFinein the wheelDalSegnoAlFine
DalSegnoAlCodain the wheelDalSegnoAlCoda
▶repeat.py functionsrepeat.py wheel 0 of 3
3 not in wheel

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

music21WheelIn the crate
insertRepeatEndingnot in the wheelwrites an ending bracket over some measures
insertRepeatnot in the wheelwrites repeat barlines round some measures
deleteMeasuresnot in the wheeltakes measures out and renumbers the rest
▶RepeatExpressionrepeat.py wheel 0 of 6
6 not in wheel
music21WheelIn the crate
getTextnot in the wheeltext
setTextnot in the wheelset_text
applyTextFormattingnot in the wheelthe font and the justification a renderer draws the words with; justify says which way they are set
setTextExpressionnot in the wheelkeeps the words as a TextExpression object
getTextExpressionnot in the wheelthe words as a TextExpression for a renderer; text is what they say
isValidTextnot in the wheelis_valid_text
▶Expanderrepeat.py wheel 0 of 7
7 not in wheel

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.

music21WheelIn the crate
processnot in the wheelexpand_repeats
measureMapnot in the wheelmeasure_map
repeatBarsAreCoherentnot in the wheelrepeat_bars_are_coherent
findInnermostRepeatIndicesnot in the wheelfind_innermost_repeat_indices
processInnermostRepeatBarsnot in the wheelprocess_innermost_repeat_bars
getRepeatExpressionIndexnot in the wheelrepeat_expression_index
isExpandablenot in the wheelis_expandable
▶variant.py functionsvariant.py wheel 8 of 10
2 not in wheel

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.

music21WheelIn the crate
getMeasureHashesnot in the wheelmeasure_hashes
makeVariantBlocksnot in the wheelmake_variant_blocks
mergeVariantsin the wheelmerge_variants
mergeVariantScoresin the wheelmerge_variant_scores
mergeVariantMeasureStreamsin the wheelmerge_variant_measure_streams
mergeVariantsEqualDurationin the wheelmerge_variants_equal_duration
mergePartAsOssiain the wheelmerge_part_as_ossia
addVariantin the wheeladd_variant
refineVariantin the wheelrefine_variant
makeAllVariantsReplacementsin the wheelmake_all_variants_replacements
▶Variantvariant.py wheel 0 of 15
15 not in wheel
music21WheelIn the crate
purgeOrphansnot in the wheeldrops the elements no stream holds any more, which only a variant keeping objects can have
purgeLocationsnot in the wheeldrops the sites it remembers, and it remembers none
getElementIdsnot in the wheelPython object ids
replaceElementnot in the wheelswaps one element for another by object
highestTimenot in the wheelhighest_time
highestOffsetnot in the wheelthe offset of the stream it holds, which Stream::highest_offset answers of its contents
shownot in the wheelrendering, which the crate leaves to its caller
containedHighestTimenot in the wheelcontained_highest_time
containedHighestOffsetnot in the wheelcontained_highest_offset
containedSitenot in the wheelthe stream it was read out of, which is a site
replacementQuarterLengthnot in the wheelreplacement_quarter_length
replacementDurationnot in the wheelthe Duration of what it replaces; replacement_quarter_length is how long that is
lengthTypenot in the wheellength_type
replacedElementsnot in the wheelreplaced_elements
removeReplacedElementsFromStreamnot in the wheelremove_replaced_elements_from_stream
▶Datemetadata/primitives.py wheel 8 of 8

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.

music21WheelIn the crate
errorToSymbolin the wheelsymbol
loadin the wheelreads 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
loadDatetimein the wheelreads a date out of one of Python's, which the crate has no type for: a caller hands the parts over
loadOtherin the wheeltake_from
loadStrin the wheelfrom_written
datetimein the wheelanswers one of Python's datetimes, likewise
hasTimein the wheelhas_time
hasErrorin the wheelhas_certainty
▶DatePrimitivemetadata/primitives.py wheel 2 of 2

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.

music21WheelIn the crate
datetimein the wheelanswers one of Python's datetimes for the first date, which the crate has no type for
relevancein the wheelrelevance
▶DateRelativemetadata/primitives.py wheel 1 of 1

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

music21WheelIn the crate
relevancein the wheelrelevance
▶DateBetweenmetadata/primitives.py wheel 1 of 1

A span between two dates: DatePrimitive::between.

music21WheelIn the crate
relevancein the wheelrelevance
▶DateSelectionmetadata/primitives.py wheel 1 of 1

A choice among dates: DatePrimitive::selection.

music21WheelIn the crate
relevancein the wheelrelevance
▶Textmetadata/primitives.py wheel 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.

music21WheelIn the crate
languagein the wheellanguage
getNormalizedArticlein the wheelnormalized_article
▶Contributormetadata/primitives.py wheel 6 of 6

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.

music21WheelIn the crate
agein the wheelhow long they lived, which is arithmetic over two dates a caller has
namein the wheelname
namesin the wheelnames
rolein the wheelrole
abbreviationToRolein the wheelrole_of_abbreviation
roleToAbbreviationin the wheelabbreviation_of_role
▶Metadatametadata/__init__.py wheel 0 of 35
35 not in wheel

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.

music21WheelIn the crate
addnot in the wheeladd
getCustomnot in the wheelget
addCustomnot in the wheeladd
setCustomnot in the wheelset
uniqueNameToNamespaceNamenot in the wheelnamespace_name
namespaceNameToUniqueNamenot in the wheelunique_name_of
isContributorUniqueNamenot in the wheelis_contributor_unique_name
isStandardNamenot in the wheelunique_name_of
softwarenot in the wheelget
contributorsnot in the wheelcontributors
copyrightnot in the wheelstring_value
allnot in the wheelall
addContributornot in the wheeladd_contributor
getContributorsByRolenot in the wheelcontributors_by_role
searchnot in the wheelsearch
alternativeTitlenot in the wheelstring_value
composernot in the wheelstring_value
composersnot in the wheelget
dateCreatednot in the wheelstring_value
fileFormatnot in the wheelstring_value
filePathnot in the wheelstring_value
corpusFilePathnot in the wheelstring_value
fileNumbernot in the wheelstring_value
localeOfCompositionnot in the wheelstring_value
librettistnot in the wheelstring_value
librettistsnot in the wheelget
lyricistnot in the wheelstring_value
lyricistsnot in the wheelget
movementNamenot in the wheelstring_value
movementNumbernot in the wheelstring_value
numbernot in the wheelstring_value
opusNumbernot in the wheelstring_value
titlenot in the wheeltitle
bestTitlenot in the wheelbest_title
convertValuenot in the wheelreads 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
▶RichMetadatametadata/__init__.py wheel 0 of 4
4 not in wheel

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

music21WheelIn the crate
mergenot in the wheeltakes in another score's cached numbers
getSourcePathnot in the wheelwhere the file sits, relative to the corpus
updatenot in the wheelworks 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
allnot in the wheelthe cached numbers beside the metadata
▶search/base.py functionssearch/base.py wheel 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.

music21WheelIn the crate
streamSearchBasein the wheelrun_over
rhythmicSearchin the wheelrhythmic_search
noteNameSearchin the wheelnote_name_search
noteNameRhythmicSearchin the wheelnote_name_rhythmic_search
approximateNoteSearchin the wheelapproximate_note_search
approximateNoteSearchNoRhythmin the wheelapproximate_note_search_no_rhythm
approximateNoteSearchOnlyRhythmin the wheelapproximate_note_search_only_rhythm
approximateNoteSearchWeightedin the wheelapproximate_note_search_weighted
translateStreamToStringin the wheeltranslate_stream_to_string
translateDiatonicStreamToStringin the wheeltranslate_diatonic_stream_to_string
translateIntervalsAndSpeedin the wheeltranslate_intervals_and_speed
translateStreamToStringNoRhythmin the wheeltranslate_stream_to_string_no_rhythm
translateStreamToStringOnlyRhythmin the wheeltranslate_stream_to_string_only_rhythm
translateNoteToBytein the wheeltranslate_note_to_byte
translateNoteWithDurationToBytesin the wheeltranslate_note_with_duration_to_bytes
translateNoteTieToBytein the wheeltranslate_note_tie_to_byte
translateDurationToBytesin the wheeltranslate_duration_to_bytes
mostCommonMeasureRhythmsin the wheelmost_common_measure_rhythms
▶StreamSearchersearch/base.py wheel 4 of 4

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

music21WheelIn the crate
runin the wheelrun
wildcardAlgorithmin the wheelrun_over
rhythmAlgorithmin the wheelrhythmic_search
noteNameAlgorithmin the wheelnote_name_search
▶LyricSearchersearch/lyrics.py wheel 4 of 4

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

music21WheelIn the crate
indexTextin the wheelindex_text
indexTuplesin the wheelindexed
indexin the wheelindexed
searchin the wheelsearch
▶IndexedLyricsearch/lyrics.py wheel 1 of 1
music21WheelIn the crate
modifyin the wheela named tuple's _replace, which is Python's own
▶search/segment.py functionssearch/segment.py wheel 3 of 8
5 not in wheel

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

music21WheelIn the crate
indexScoreFilePathsnot in the wheelindexes the scores at a list of paths, which means reading files
indexOnePathnot in the wheelindexes the score at a path, likewise
saveScoreDictnot in the wheelwrites an index to a file
loadScoreDictnot in the wheelreads an index back
getDifflibOrPyLevnot in the wheelchooses between two Python libraries for the string comparison; search::difflib is the one difflib.SequenceMatcher ratio, ported
translateMonophonicPartToSegmentsin the wheeltranslate_monophonic_part_to_segments
indexScorePartsin the wheelindex_score_parts
scoreSimilarityin the wheelscore_similarity
▶ReductiveNoteanalysis/reduction.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
isParsednot in the wheelis_parsed
getNoteAndTextExpressionnot in the wheelnote_and_text_expression
▶ScoreReductionanalysis/reduction.py wheel 3 of 3
music21WheelIn the crate
scorein the wheelscore
chordReductionin the wheelchord_reduction
reducein the wheelreduce
▶PartReductionanalysis/reduction.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
processnot in the wheelweighted_spans
getGraphHorizontalBarWeightedDatanot in the wheelthe spans arranged for music21's bar graph; weighted_spans is what they say
▶ActivityMatchanalysis/correlate.py wheel 1 of 1

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

music21WheelIn the crate
pitchToDynamicin the wheelpitch_to_dynamic
▶ElementTimespantree/spans.py wheel 4 of 6
2 not in wheel

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

music21WheelIn the crate
newnot in the wheela copy with some of its values changed, which a value type here is made afresh
makeElementnot in the wheelthe element itself, which an ElementTimespan holds a reference to
quarterLengthin the wheelquarter_length
measureNumberin the wheelmeasure_number
getParentageByClassin the wheelparentage
partin the wheelpart
▶Timespantree/spans.py wheel 2 of 6
4 not in wheel
music21WheelIn the crate
newnot in the wheela copy with some of its values changed
canMergenot in the wheelwhether two timespans may be joined, which only the tree's own merging asks
mergeWithnot in the wheeljoins two timespans
splitAtnot in the wheelcuts a timespan in two
offsetin the wheeloffset
endTimein the wheelend_time
▶TimespanTreetree/timespanTree.py wheel 13 of 17
4 not in wheel

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.

music21WheelIn the crate
removeTimespanListnot in the wheelremove_timespan_list
removeTimespannot in the wheelremove_timespan
splitAtnot in the wheelsplit_at
toPartwiseTimespanTreesnot in the wheelto_partwise_timespan_trees
elementEndTimein the wheelend_time
indexin the wheelwhere a timespan sits in the tree, which is its place in the list here
offsetin the wheellowest_position
findNextPitchedTimespanInSameStreamByClassin the wheelnext_in_same_part
findPreviousPitchedTimespanInSameStreamByClassin the wheelprevious_in_same_part
getVerticalityAtOrBeforein the wheelverticality_at_or_before
iterateConsonanceBoundedVerticalitiesin the wheelconsonance_bounded_verticalities
iterateVerticalitiesin the wheelverticalities
iterateVerticalitiesNwisein the wheelverticalities_nwise
unwrapVerticalitiesin the wheelunwrap
allPartsin the wheelall_parts
maximumOverlapin the wheelmaximum_overlap
elementin the wheelthe element a timespan holds, which ElementTimespan::element answers
▶Verticalitytree/verticality.py wheel 13 of 14
1 not in wheel

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

music21WheelIn the crate
beatStrengthnot in the wheelthe 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
bassTimespanin the wheelbass_timespan
toChordin the wheelto_chord
measureNumberin the wheelmeasure_number
nextStartOffsetin the wheelnext_start_offset
nextVerticalityin the wheelnext
pitchSetin the wheelpitch_set
pitchClassSetin the wheelpitch_class_set
previousVerticalityin the wheelprevious
startAndOverlapTimespansin the wheelstart_and_overlap_timespans
timeToNextEventin the wheeltime_to_next_event
makeElementin the wheelmake_element
getAllVoiceLeadingQuartetsin the wheelvoice_leading_quartets
getPairedMotionin the wheelpaired_motion
▶Horizontalitytree/analysis.py wheel 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.

music21WheelIn the crate
hasPassingTonein the wheelhas_passing_tone
hasNeighborTonein the wheelhas_neighbor_tone
hasNoMotionin the wheelhas_no_motion
▶tree/fromStream.py functionstree/fromStream.py wheel 1 of 4
3 not in wheel

Reading a score into timespans.

music21WheelIn the crate
listOfTreesByClassnot in the wheela tree per part per class, which the caller builds of what as_timespans reads
asTreenot in the wheelas_timespans
makeFastShallowTreeFromSortedStreamnot in the wheela tree of one stream's own elements with nothing nested, built without sorting; the crate sorts once and keeps a list
asTimespansin the wheelas_timespans
▶tree/toStream.py functionstree/toStream.py wheel 0 of 2
2 not in wheel

Writing timespans back out as a stream.

music21WheelIn the crate
chordifiednot in the wheelchordify
partwisenot in the wheelthe timespans written back out as a part each, which is the score they were read from
▶features/base.py functionsfeatures/base.py wheel 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.

music21WheelIn the crate
allFeaturesAsListin the wheelall_features_as_list
extractorsByIdin the wheelextractors_by_id
extractorByIdin the wheelextractor_by_id
vectorByIdin the wheelvector_by_id
getIndexin the wheelindex_of
▶Featurefeatures/base.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
prepareVectorsnot in the wheelmakes room for the numbers before they are worked out, which building one does
normalizenot in the wheeldivides the numbers by their sum, which Extractor::extract does where the extractor asks for it
▶FeatureExtractorfeatures/base.py wheel 7 of 7

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.

music21WheelIn the crate
setDatain the wheelhands the extractor the stream to read, which extract takes as an argument
getAttributeLabelsin the wheelattribute_labels
fillFeatureAttributesin the wheelcopies the extractor's own id and name onto the feature it is filling in
prepareFeaturein the wheelmakes the blank feature and fills its attributes in, which blank answers
processin the wheelthe reading itself, which is the row's own function and runs in extract
extractin the wheelextract
getBlankFeaturein the wheelblank
▶StreamFormsfeatures/base.py wheel 0 of 14
14 not in wheel

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.

music21WheelIn the crate
keysnot in the wheelthe names music21 looks a form up by
formPartitionByInstrumentnot in the wheelpartition_by_instrument
formSetClassHistogramnot in the wheelhow often each set class comes, which the extractors that read it work out where they read it
formPitchClassSetHistogramnot in the wheelhow often each pitch-class set comes, likewise
formTypesHistogramnot in the wheelhow often each written value comes, likewise
formGetElementsByClassMeasurenot in the wheelthe measures of the stream, which Stream::measures answers
formChordifynot in the wheelchordified_chords
formQuarterLengthHistogramnot in the wheelquarter_length_histogram
formMidiPitchHistogramnot in the wheelmidi_pitch_histogram
formPitchClassHistogramnot in the wheelpitch_class_histogram
formMidiIntervalHistogramnot in the wheelmidi_interval_histogram
formContourListnot in the wheelcontour_list
formSecondsMapnot in the wheelseconds_map
formBeatHistogramnot in the wheelhow often each beat strength comes, which the extractor reading it works out
▶DataInstancefeatures/base.py wheel 0 of 5
5 not in wheel

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.

music21WheelIn the crate
setupPostStreamParsenot in the wheelthe second half of reading the stream in, which building one does in one
setClassLabelnot in the wheelthe class a subject belongs to for the data set it is in; DataSet::add_data takes it beside the subject
getClassValuenot in the wheelthat class, likewise
getIdnot in the wheelthe name a subject goes by, which DataSet::add_data takes beside it
parseStreamnot in the wheelnew
▶DataSetfeatures/base.py wheel 12 of 12

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

music21WheelIn the crate
getClassLabelin the wheelclass_label
addFeatureExtractorsin the wheeladd_extractors
getAttributeLabelsin the wheelattribute_labels
getDiscreteLabelsin the wheeldiscrete_labels
getClassPositionLabelsin the wheelclass_position_labels
addMultipleDatain the wheeladds several subjects at once, which is add_data in a loop
addDatain the wheeladd_data
processin the wheelprocess
getFeaturesAsListin the wheelfeatures_as_list
getUniqueClassValuesin the wheelunique_class_values
getStringin the wheelto_text
writein the wheelwrites the table to a file, which the library does not do: to_text is the text to write
▶braille/basic.py functionsbraille/basic.py wheel 24 of 27
3 not in wheel

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

music21WheelIn the crate
handlePitchWithAccidentalnot in the wheelnote_to_braille
handleArticulationsnot in the wheelnote_to_braille
handleExpressionsnot in the wheelnote_to_braille
barlineToBraillein the wheelbarline_to_braille
chordToBraillein the wheelchord_to_braille
pitchToOctavein the wheelpitch_to_octave
clefToBraillein the wheelclef_to_braille
dynamicToBraillein the wheeldynamic_to_braille
instrumentToBraillein the wheelinstrument_to_braille
keySigToBraillein the wheelkey_sig_to_braille
metronomeMarkToBraillein the wheelmetronome_mark_to_braille
yieldBrailleArticulationsin the wheelnote_to_braille
noteToBraillein the wheelnote_to_braille
restToBraillein the wheelrest_to_braille
tempoTextToBraillein the wheeltempo_text_to_braille
textExpressionToBraillein the wheeltext_expression_to_braille
timeSigToBraillein the wheeltime_sig_to_braille
showOctaveWithNotein the wheelshow_octave_with_note
transcribeHeadingin the wheeltranscribe_heading
transcribeNoteFingeringin the wheeltranscribe_note_fingering
transcribeSignaturesin the wheeltranscribe_signatures
brailleUnicodeToBrailleAsciiin the wheelbraille_unicode_to_braille_ascii
brailleAsciiToBrailleUnicodein the wheelbraille_ascii_to_braille_unicode
brailleUnicodeToSymbolsin the wheelbraille_unicode_to_symbols
yieldDotsin the wheelyield_dots
wordToBraillein the wheelword_to_braille
numberToBraillein the wheelnumber_to_braille
▶braille/translate.py functionsbraille/translate.py wheel 8 of 8

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

music21WheelIn the crate
objectToBraillein the wheelelement_to_braille
streamToBraillein the wheelstream_to_braille
scoreToBraillein the wheelscore_to_braille
metadataToStringin the wheelmetadata_to_string
opusToBraillein the wheelevery score of an opus one after another, which is score_to_braille of each
measureToBraillein the wheelmeasure_to_braille
partToBraillein the wheelpart_to_braille
keyboardPartsToBraillein the wheelkeyboard_parts_to_braille
▶BrailleTextbraille/text.py wheel 11 of 11

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

music21WheelIn the crate
showHandin the wheelset_show_hand
addHeadingin the wheeladd_heading
addLongExpressionin the wheeladd_long_expression
addToNewLinein the wheeladd_to_new_line
appendOrInsertCurrentin the wheelappend_or_insert_current
addInaccordin the wheeladd_inaccord
addMeasureNumberin the wheeladd_measure_number
optionalAddKeyboardSymbolsAndDotsin the wheeloptional_add_keyboard_symbols_and_dots
addSignaturesin the wheeladd_signatures
makeNewLinein the wheelmake_new_line
recenterHeadingsin the wheelrecenter_headings
▶BrailleTextLinebraille/text.py wheel 5 of 5
music21WheelIn the crate
appendin the wheelappend
insertin the wheelinsert
canAppendin the wheelcan_append
canInsertin the wheelcan_insert
lastHyphenToSpacein the wheellast_hyphen_to_space
▶BrailleKeyboardbraille/text.py wheel 2 of 2
music21WheelIn the crate
makeNewLinesin the wheelmake_new_lines
addNoteGroupingsin the wheeladd_note_groupings
▶braille/lookup.py functionsbraille/lookup.py wheel 3 of 3

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

music21WheelIn the crate
makeBrailleDictionaryin the wheelbuilds music21's dictionary of cells at import; the tables here are written out
dotsAddin the wheeldots_add
makePitchNameToNotesin the wheelpitch_name_to_note
▶braille/segment.py functionsbraille/segment.py wheel 8 of 10
2 not in wheel

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

music21WheelIn the crate
setGroupingGlobalsnot in the wheelmusic21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says instead
splitMeasurenot in the wheelcuts a measure in two so that the braille fits, which split_note_grouping does of the grouping
findSegmentsin the wheelfind_segments
prepareSlurredNotesin the wheelprepare_slurred_notes
getRawSegmentsin the wheelget_raw_segments
extractBrailleElementsin the wheelextract_braille_elements
prepareBeamedNotesin the wheelprepare_beamed_notes
setAffinityCodein the wheelwhich kind of segment an element belongs in, which extract_braille_elements says as it reads
areGroupingsIdenticalin the wheelwhether two groupings are the same, which the segment asks of its own
splitNoteGroupingin the wheelsplit_note_grouping
▶BrailleSegmentbraille/segment.py wheel 17 of 17

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.

music21WheelIn the crate
brailleTextin the wheeltranscribe
transcribein the wheeltranscribe
addDummyRestsin the wheela step of the transcription: the rests that stand before a measure number
extractMeasureNumberin the wheela step of the transcription
extractHeadingin the wheela step of the transcription: the key, the meter and the tempo over the first measure
extractInaccordGroupingin the wheela step of the transcription: the voices written one after another
extractLongExpressionGroupingin the wheela step of the transcription
showLeadingOctaveFromNoteGroupingin the wheela step of the transcription: whether the first note of a grouping shows its octave
needsSplitToFitin the wheela step of the transcription: whether a grouping must be split to fit the line
splitNoteGroupingAndTranscribein the wheela step of the transcription, which split_note_grouping does the splitting half of
extractNoteGroupingin the wheela step of the transcription
addRepeatSymbolsin the wheela step of the transcription: the sign for a measure repeated
extractSignatureGroupingin the wheela step of the transcription
extractTempoTextGroupingin the wheela step of the transcription
consolidatein the wheela step of the transcription: the groupings of one kind joined into one
addGroupingAttributesin the wheeladd_grouping_attributes
fixArticulationsin the wheelfix_articulations
▶BrailleGrandSegmentbraille/segment.py wheel 5 of 5

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

music21WheelIn the crate
brailleTextin the wheeltranscribe
yieldCombinedGroupingKeysin the wheelcombined_keys
transcribein the wheeltranscribe
extractHeadingin the wheela step of the transcription
extractNoteGroupingin the wheela step of the transcription
▶StreamAligneralpha/analysis/aligner.py wheel 14 of 14

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.

music21WheelIn the crate
getDefaultHasherin the wheeldefault_hasher
alignin the wheelalign
makeHashedStreamsin the wheelalign
setupDistanceMatrixin the wheelsetup_distance_matrix
populateDistanceMatrixin the wheelpopulate_distance_matrix
getPossibleMovesFromLocationin the wheelmoves_from_location
getOpFromLocationin the wheelop_from_location
insertCostin the wheelinsert_cost
deleteCostin the wheeldelete_cost
substitutionCostin the wheelsubstitution_cost
calculateNumSimilaritiesin the wheelnum_similarities
tupleEqualityWithoutReferencein the wheelhashes_equal_without_reference
calculateChangesListin the wheelchange_places
showChangesin the wheelprints the changes, and colours the notes of the score to show them
▶Hasheralpha/analysis/hasher.py wheel 7 of 7

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

music21WheelIn the crate
setupValidTypesAndStateVarsin the wheelreads the switches into the state music21 hashes by, which are the fields of a Hasher here
setupTupleListin the wheeltuple_list
hashMeasuresin the wheelthe measures hashed one at a time, which is hash_stream of each
hashStreamin the wheelhash_stream
addHashToFinalHashin the wheelappends one hash to the list being built
addNoteHashWithReferenceToFinalHashin the wheelappends a note's hash with the note it came from, likewise
addNoteHashToFinalHashin the wheelappends a note's hash, likewise
▶alpha/analysis/fixer.py functionsalpha/analysis/fixer.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
getNotesWithinDurationnot in the wheelnotes_within_duration
▶OrnamentFixeralpha/analysis/fixer.py wheel 0 of 3
3 not in wheel

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

music21WheelIn the crate
findOrnamentnot in the wheelfind_ornament
addOrnamentnot in the wheelwrites the ornament onto the read note, which fix does where it finds one
fixnot in the wheelfix
▶EnharmonicFixeralpha/analysis/fixer.py wheel 8 of 8

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

music21WheelIn the crate
fixin the wheelfix_enharmonics
isEnharmonicin the wheelwhether two notes sound alike, which is Pitch::is_enharmonic
hasAccin the wheelwhether a note carries an accidental, which is Pitch::accidental_is_written
hasNatAccin the wheelwhether it carries a natural, likewise
hasSharpFlatAccin the wheelwhether it carries a sharp or a flat, likewise
stepEqin the wheelwhether two notes stand on the same step
stepNotEqin the wheelwhether they do not
intervalTooBigin the wheelinterval_too_big
▶alpha/analysis/ornamentRecognizer.py functionsalpha/analysis/ornamentRecognizer.py wheel 1 of 1

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

music21WheelIn the crate
calculateTrillNoteDurationin the wheelornament_note_quarter_length
▶TrillRecognizeralpha/analysis/ornamentRecognizer.py wheel 1 of 1

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

music21WheelIn the crate
recognizein the wheelrecognize
▶TurnRecognizeralpha/analysis/ornamentRecognizer.py wheel 2 of 2
music21WheelIn the crate
isAcceptableIntervalin the wheelis_acceptable_interval
recognizein the wheelrecognize
▶OrnamentRecognizeralpha/analysis/ornamentRecognizer.py wheel 2 of 2
music21WheelIn the crate
calculateOrnamentNoteQlin the wheelornament_note_quarter_length
calculateOrnamentTotalQlin the wheelornament_total_quarter_length
▶alpha/analysis/search.py functionsalpha/analysis/search.py wheel 1 of 1

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

music21WheelIn the crate
findConsecutiveScalein the wheelfind_consecutive_scale
▶ScoreCorrectoromr/correctors.py wheel 0 of 14
14 not in wheel

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.

music21WheelIn the crate
runnot in the wheelrun
runPriorModelnot in the wheelboth models run and the score corrected, which run does
getAllHashesnot in the wheelall_hashes
getSinglePartnot in the wheelsingle_part_mut
runHorizontalCorrectionModelnot in the wheelrun_horizontal_correction_model
getMeasureSlicenot in the wheelslice_hashes
getAllIncorrectMeasuresnot in the wheelall_incorrect_measures
verticalProbabilityDistnot in the wheelvertical_probability_dist
getVerticalProbabilityDistributionSinglePartnot in the wheelvertical_probability_dist_of_part
getVerticalProbabilityDistributionSinglePartSingleMeasurenot in the wheelvertical_probability_dist_of_measure
runVerticalSearchnot in the wheelrun_vertical_search
substituteOneMeasureContentsForAnothernot in the wheelsubstitute_measure
runVerticalCorrectionModelnot in the wheelrun_vertical_correction_model
generateCorrectedScorenot in the wheelgenerate_corrected_score
▶SinglePartomr/correctors.py wheel 7 of 7
music21WheelIn the crate
getMeasuresin the wheelthe measures of the part, which the Stream it was read from holds
getIncorrectMeasureIndicesin the wheelfind_incorrect_measures
getSequenceHashesFromMeasureStreamin the wheelhashed_notes
horizontalProbabilityDistin the wheelhorizontal_probability_dist
runHorizontalSearchin the wheelrun_horizontal_search
runHorizontalCorrectionModelin the wheelrun_horizontal_correction_model
getProbabilityDistributionin the wheelprobability_distribution
▶MeasureHashomr/correctors.py wheel 15 of 15

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

music21WheelIn the crate
getHashStringin the wheelmeasure_hash
hashNotein the wheelhash_note
hashGracein the wheelhash_grace
hashRestin the wheelhash_rest
hashQuarterLengthin the wheelhash_quarter_length
setSequenceMatcherin the wheelkeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported
getMeasureDifferencein the wheelmeasure_difference
getOpCodesin the wheelopcodes
getProbabilityBasedOnChangesin the wheelprobability_based_on_changes
differenceProbabilityForOneOpCodein the wheelprobability_for_one_opcode
getProbabilityOnEqualityin the wheelthe odds of two measures reading alike, which is the PROBABILITY_ON_EQUALITY constant
getProbabilityOnOmissionin the wheelthe odds of a note left out, PROBABILITY_ON_OMISSION
getProbabilityOnAdditionin the wheelthe odds of a note put in, PROBABILITY_ON_ADDITION
getProbabilityOnSubstitutein the wheelprobability_on_substitute
getProbabilityFromOneCharSubin the wheelprobability_from_one_char_sub
▶MeasureSliceomr/correctors.py wheel 2 of 2

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

music21WheelIn the crate
getSliceHashesin the wheelslice_hashes
runSliceSearchin the wheelslice_search
▶omr/evaluators.py functionsomr/evaluators.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
evaluateCorrectingModelnot in the wheelevaluate_correcting_model
autoCorrelationBestMeasurenot in the wheelauto_correlation_best_measure
▶OmrGroundTruthPairomr/evaluators.py wheel 0 of 10
10 not in wheel
music21WheelIn the crate
debugnot in the wheelmusic21's switch for printing what it is doing
parseAllnot in the wheelreads both scores from their files
hashAllnot in the wheelhashes both scores, which building the pair does
getOmrScorenot in the wheelomr
getGroundScorenot in the wheelground
substCostnot in the wheelwhat a substitution costs, which the hashes' difference says
insertCostnot in the wheelwhat an insertion costs, which is one everywhere
deleteCostnot in the wheelwhat a deletion costs, likewise
minEditDistnot in the wheelmin_edit_distance
getDifferencesnot in the wheeldifferences
▶audioSearch/__init__.py functionsaudioSearch/__init__.py wheel 13 of 16
3 not in wheel

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

music21WheelIn the crate
getFrequenciesFromMicrophonenot in the wheellistens to a microphone, which the library does not do
getFrequenciesFromAudioFilenot in the wheelfrequencies_from_wav
getFrequenciesFromPartialAudioFilenot in the wheelreads part of a file as it is being recorded
histogramin the wheelhistogram
autocorrelationFunctionin the wheelautocorrelation_frequency
prepareThresholdsin the wheelprepare_thresholds
interpolationin the wheelinterpolation
normalizeInputFrequencyin the wheelnormalize_input_frequency
pitchFrequenciesToObjectsin the wheelpitch_frequencies_to_objects
detectPitchFrequenciesin the wheeldetect_pitch_frequencies
smoothFrequenciesin the wheelsmooth_frequencies
joinConsecutiveIdenticalPitchesin the wheeljoin_consecutive_identical_pitches
quantizeDurationin the wheelquantize_duration
quarterLengthEstimationin the wheelquarter_length_estimation
notesAndDurationsToStreamin the wheelnotes_and_durations_to_stream
decisionProcessin the wheeldecision_process
▶search/serial.py classessearch/serial.py wheel 8 of 8

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.

music21WheelIn the crate
ContiguousSegmentOfNotesin the wheelContiguousSegment
ContiguousSegmentSearcherin the wheelContiguousSegmentSearcher
SegmentMatcherin the wheelSegmentMatcher
TransposedSegmentMatcherin the wheelone of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes
TransformedSegmentMatcherin the wheelMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other
MultisetSegmentMatcherin the wheelMatching::Multiset, which compares the pitch classes in any order
TransposedMultisetMatcherin the wheelMatching::TransposedMultiset
TransposedInvertedMultisetMatcherin the wheelMatching::TransposedInvertedMultiset
▶ContiguousSegmentOfNotessearch/serial.py wheel 0 of 7
7 not in wheel

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.

music21WheelIn the crate
startMeasureNumbernot in the wheelstart_measure
startOffsetnot in the wheelstart_offset
getActiveMatchedRowsnot in the wheeltwo 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
zeroCenteredTransformationsFromMatchednot in the wheelzero_centered_transformations_from_matched
originalCenteredTransformationsFromMatchednot in the wheeloriginal_centered_transformations_from_matched
readPitchClassesFromBottomnot in the wheelpitch_classes_from_bottom
getDistinctPitchClassesnot in the wheeldistinct_pitch_classes
▶ContiguousSegmentSearchersearch/serial.py wheel 1 of 11
10 not in wheel

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

music21WheelIn the crate
getSearchBoundMethodnot in the wheelmusic21 chooses a method by name for each way of reading repetitions; the crate's one walk takes Repetitions as an argument
addActiveChordsnot in the wheela step inside that walk: the crate reads a chord's pitch classes where it meets one
searchIncludeAllExcludenot in the wheelone of the twelve methods that choice picks between, which the one walk answers for
searchIncludeAllIncludenot in the wheelas searchIncludeAllExclude
searchSkipConsecutiveExcludenot in the wheelas searchIncludeAllExclude
searchSkipConsecutiveIncludenot in the wheelas searchIncludeAllExclude
searchIgnoreAllExcludenot in the wheelas searchIncludeAllExclude
searchIgnoreAllIncludenot in the wheelas searchIncludeAllExclude
searchRowsOnlyExcludenot in the wheelas searchIncludeAllExclude
searchRowsOnlyIncludenot in the wheelas searchIncludeAllExclude
byLengthin the wheelby_length
▶SegmentMatchersearch/serial.py wheel 6 of 9
3 not in wheel

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.

music21WheelIn the crate
getContiguousSegmentsByLengthnot in the wheelthe searcher's by_length, which find asks for itself
findOneIgnoreAllnot in the wheelone of the two branches of music21's find, which it picks by how repetitions are read; the crate's find is the one walk
findOneOtherRepsnot in the wheelthe other branch of find
repsin the wheelrepetitions
includeChordsin the wheelinclude_chords
findin the wheelfind
checkSearchedAlreadyin the wheelwhether a segment the same as one already searched for is to be passed over, which find keeps as it goes
normalizein the wheelhow 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
equalSubsetin the wheelthe comparison Matching decides, which the crate does inside find
▶search/serial.py functionssearch/serial.py wheel 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.

music21WheelIn the crate
labelSegmentsin the wheellabel
labelTransposedSegmentsin the wheellabel
labelTransformedSegmentsin the wheellabel
labelMultisetsin the wheellabel
labelTransposedMultisetsin the wheellabel
labelTransposedAndInvertedMultisetsin the wheellabel
▶ChordReduceranalysis/reduceChords.py wheel 19 of 22
3 not in wheel

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.

music21WheelIn the crate
measureSlicesnot in the wheelmeasure_slices
sliceWeightsnot in the wheelslice_weights
keepHeaviestSlicesnot in the wheelkeep_heaviest_slices
runin the wheelreduce_chords
sliceWeightin the wheelslice_weight
isConsonantin the wheelis_consonant
alignHocketsin the wheela 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
collapseArpeggiosin the wheela 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
computeMeasureChordWeightsin the wheelmeasure_chord_weights
fillBassGapsin the wheela step inside the reduction, as removeZeroDurationTimespans
fillMeasureGapsin the wheela step inside the reduction, as removeZeroDurationTimespans
fuseTimespansByPartin the wheela step inside the reduction, as removeZeroDurationTimespans
qlbsmpConsonancein the wheelone of ChordWeight's four, which ChordWeight::of weighs a chord by: this is the one a reduction weighs by
quarterLengthBeatStrengthin the wheelone of ChordWeight's four, likewise
quarterLengthBeatStrengthMeasurePositionin the wheelone of ChordWeight's four, likewise
quarterLengthOnlyin the wheelone of ChordWeight's four, likewise, and the one computeMeasureChordWeights weighs by when it is handed none
reduceMeasureToNChordsin the wheelreduce_measure_to_n_chords
removeNonChordTonesin the wheela step run never takes: it joins the two spans of a passing or neighbour tone, editing that tree likewise
removeShortTimespansin the wheela step inside the reduction, as removeZeroDurationTimespans
removeVerticalDissonancesin the wheela step inside the reduction, as removeZeroDurationTimespans
removeZeroDurationTimespansin the wheela 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
splitByBassin the wheela step inside the reduction, as removeZeroDurationTimespans
▶braille/noteGrouping.py functionsbraille/noteGrouping.py wheel 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.

music21WheelIn the crate
transcribeNoteGroupingin the wheeltranscribe_note_grouping
▶NoteGroupingTranscriberbraille/noteGrouping.py wheel 5 of 13
8 not in wheel

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.

music21WheelIn the crate
translateNotenot in the wheela branch of the walk
translateRestnot in the wheela branch of the walk
translateChordnot in the wheela branch of the walk
translateDynamicnot in the wheela branch of the walk
translateTextExpressionnot in the wheela branch of the walk
translateBarlinenot in the wheela branch of the walk
translateClefnot in the wheela branch of the walk
optionallyAddDotToPreviousnot in the wheelpart of the walk, which writes the dot where the element before it needs one
resetin the wheelstate between groupings, which a function that takes the grouping has none of
showClefSignsin the wheelread off the grouping, as music21's transcriber reads it: BrailleElementGrouping::show_clef_signs
upperFirstInFingeringin the wheelread off the grouping, as showClefSigns: upper_first_in_note_fingering
transcribeGroupin the wheelthe whole of transcribe_note_grouping
transcribeOneElementin the wheelone turn of that walk
▶languageExcerpts/naturalLanguageObjects.py functionslanguageExcerpts/naturalLanguageObjects.py wheel 4 of 4

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.

music21WheelIn the crate
generateLanguageDictionaryin the wheellanguage_dictionary
toPitchin the wheelfrom_language_name
toNotein the wheela note built on what from_language_name read, which is Note::new(pitch) here and is music21's own one-liner
toChordin the wheela chord built on what it read, as toNote
▶converter/__init__.py functionsconverter/__init__.py wheel 6 of 12
6 not in wheel

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.

music21WheelIn the crate
resetSubConvertersnot in the wheelthe subconverter machinery: the readers are the crate's own, chosen by format
registerSubConverternot in the wheelthe subconverter machinery, as resetSubConverters
unregisterSubConverternot in the wheelthe subconverter machinery, as resetSubConverters
freezenot in the wheelmusic21's pickle cache, which the wheel does not keep: every parse reads the file
freezeStrnot in the wheelmusic21's pickle cache, as freeze
thawStrnot in the wheelmusic21's pickle cache, as freeze
parseFilein the wheelno reason given
parseDatain the wheelno reason given
parseURLin the wheelno reason given
parsein the wheelno reason given
toDatain the wheelno reason given
thawin the wheelmusic21's pickle cache, as freeze
▶corpus/__init__.py functionscorpus/__init__.py wheel 4 of 9
5 not in wheel

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.

music21WheelIn the crate
getLocalPathsnot in the wheelthe local corpus, a setting of music21's environment
addPathnot in the wheelthe local corpus, as getLocalPaths
cacheMetadatanot in the wheelthe corpus's metadata bundles, which the wheel does not keep
getComposernot in the wheela search of the metadata bundles, as cacheMetadata
noCorpusnot in the wheelmusic21's installation without its corpus, which the wheel answers by MUSIC21_RS_CORPUS
getCorePathsin the wheelno reason given
getPathsin the wheelno reason given
getWorkin the wheelno reason given
parsein the wheelno reason given

Every public member of the music21 classes the wheel stands in for, asked of the wheel under music21's own names. A member it lacks is one a program loses when it calls install_into_music21(), where it raises rather than quietly answering out of music21's implementation. The last column says what the crate makes of the same member.

Not in the wheel

885 members

music21 memberCratemusic21-rs
raises under install_into_music21() — 885
Chord.formatVectorStringchord/__init__.pyportedformat_vector_string
Chord.addchord/__init__.pyportedadd
Chord.annotateIntervalschord/__init__.pyportedannotate_intervals
Chord.areZRelationschord/__init__.pyportedare_z_relations
Chord.basschord/__init__.pyportedbass
Chord.canBeDominantVchord/__init__.pyportedcan_be_dominant_v
Chord.canBeTonicchord/__init__.pyportedcan_be_tonic
Chord.closedPositionchord/__init__.pyportedclosed_position
Chord.containsSeventhchord/__init__.pyportedcontains_seventh
Chord.containsTriadchord/__init__.pyportedcontains_triad
Chord.geometricNormalFormchord/__init__.pyportedgeometric_normal_form
Chord.getChordStepchord/__init__.pyportedchord_step
Chord.getColorchord/__init__.pyportedcolor
Chord.getNoteheadchord/__init__.pyportednotehead
Chord.getNoteheadFillchord/__init__.pyportednotehead_fill
Chord.getStemDirectionchord/__init__.pyportedstem_direction
Chord.getTiechord/__init__.pyportedtie
Chord.getVolumechord/__init__.pyportedvolume
Chord.getZRelationchord/__init__.pyportedz_relation
Chord.hasAnyEnharmonicSpelledPitcheschord/__init__.pyportedhas_any_enharmonic_spelled_pitches
Chord.hasAnyRepeatedDiatonicNotechord/__init__.pyportedhas_any_repeated_diatonic_note
Chord.hasRepeatedChordStepchord/__init__.pyportedhas_repeated_chord_step
Chord.intervalFromChordStepchord/__init__.pyportedinterval_from_chord_step
Chord.inversionchord/__init__.pyportedinversion
Chord.setInversionchord/__init__.pyportedset_inversion
Chord.inversionNamechord/__init__.pyportedinversion_name
Chord.inversionTextchord/__init__.pyportedinversion_text
Chord.isAugmentedSixthchord/__init__.pyportedis_augmented_sixth
Chord.isAugmentedTriadchord/__init__.pyportedis_augmented_triad
Chord.isConsonantchord/__init__.pyportedis_consonant
Chord.isDiminishedSeventhchord/__init__.pyportedis_diminished_seventh
Chord.isSeventhOfTypechord/__init__.pyportedis_seventh_of_type
Chord.isDiminishedTriadchord/__init__.pyportedis_diminished_triad
Chord.isDominantSeventhchord/__init__.pyportedis_dominant_seventh
Chord.isFalseDiminishedSeventhchord/__init__.pyportedis_false_diminished_seventh
Chord.isFrenchAugmentedSixthchord/__init__.pyportedis_french_augmented_sixth
Chord.isGermanAugmentedSixthchord/__init__.pyportedis_german_augmented_sixth
Chord.isHalfDiminishedSeventhchord/__init__.pyportedis_half_diminished_seventh
Chord.isIncompleteMajorTriadchord/__init__.pyportedis_incomplete_major_triad
Chord.isIncompleteMinorTriadchord/__init__.pyportedis_incomplete_minor_triad
Chord.isItalianAugmentedSixthchord/__init__.pyportedis_italian_augmented_sixth
Chord.isMajorTriadchord/__init__.pyportedis_major_triad
Chord.isMinorTriadchord/__init__.pyportedis_minor_triad
Chord.isTranspositionallySymmetricalchord/__init__.pyportedis_transpositionally_symmetrical
Chord.isSeventhchord/__init__.pyportedis_seventh
Chord.isNinthchord/__init__.pyportedis_ninth
Chord.isSwissAugmentedSixthchord/__init__.pyportedis_swiss_augmented_sixth
Chord.isTriadchord/__init__.pyportedis_triad
Chord.removeRedundantPitcheschord/__init__.pyportedremove_redundant_pitches
Chord.removeRedundantPitchClasseschord/__init__.pyportedremove_redundant_pitch_classes
Chord.removeRedundantPitchNameschord/__init__.pyportedremove_redundant_pitch_names
Chord.rootchord/__init__.pyportedroot
Chord.semiClosedPositionchord/__init__.pyportedsemi_closed_position
Chord.semitonesFromChordStepchord/__init__.pyportedsemitones_from_chord_step
Chord.setColorchord/__init__.pyportedset_color
Chord.setNoteheadchord/__init__.pyportedset_notehead
Chord.setNoteheadFillchord/__init__.pyportedset_notehead_fill
Chord.setStemDirectionchord/__init__.pyportedset_stem_direction
Chord.setTiechord/__init__.pyportedset_tie
Chord.setVolumechord/__init__.pyportedset_volume
Chord.simplifyEnharmonicschord/__init__.pyportedsimplify_enharmonics
Chord.sortAscendingchord/__init__.pyportedsort_ascending
Chord.sortChromaticAscendingchord/__init__.pyportedsort_chromatic_ascending
Chord.sortDiatonicAscendingchord/__init__.pyportedsort_diatonic_ascending
Chord.sortFrequencyAscendingchord/__init__.pyportedsort_frequency_ascending
Chord.transposechord/__init__.pyportedtranspose
Chord.chordTablesAddresschord/__init__.pyportedchord_tables_address_entry
Chord.commonNamechord/__init__.pyportedcommon_name
Chord.durationchord/__init__.pyportedduration
Chord.fifthchord/__init__.pyportedfifth
Chord.forteClasschord/__init__.pyportedforte_class
Chord.forteClassNumberchord/__init__.pyportedforte_class_number
Chord.forteClassTnchord/__init__.pyportedforte_class_tn
Chord.forteClassTnIchord/__init__.pyportedforte_class_tni
Chord.fullNamechord/__init__.pyportedfull_name
Chord.hasZRelationchord/__init__.pyportedhas_z_relation
Chord.intervalVectorchord/__init__.pyportedinterval_class_vector
Chord.intervalVectorStringchord/__init__.pyportedinterval_vector_string
Chord.isPrimeFormInversionchord/__init__.pyportedis_prime_form_inversion
Chord.multisetCardinalitychord/__init__.pyportedmultiset_cardinality
Chord.noteschord/__init__.pyportednotes
Chord.normalOrderchord/__init__.pyportednormal_order
Chord.normalOrderStringchord/__init__.pyportednormal_order_string
Chord.orderedPitchClasseschord/__init__.pyportedpitch_classes
Chord.orderedPitchClassesStringchord/__init__.pyportedordered_pitch_classes_string
Chord.pitchClassCardinalitychord/__init__.pyportedpitch_class_cardinality
Chord.pitchClasseschord/__init__.pyportednote_pitch_classes
Chord.pitchNameschord/__init__.pyportedpitch_names
Chord.pitchedCommonNamechord/__init__.pyportedpitched_common_name
Chord.pitcheschord/__init__.pyportedpitches
Chord.primeFormchord/__init__.pyportedprime_form
Chord.primeFormStringchord/__init__.pyportedprime_form_string
Chord.qualitychord/__init__.pyportedquality
Chord.scaleDegreeschord/__init__.pyportedscale_degrees
Chord.seventhchord/__init__.pyportedseventh
Chord.thirdchord/__init__.pyportedthird
Interval.genericinterval.pyportedgeneric
Interval.nameinterval.pyportedshort_name
Interval.niceNameinterval.pyportedname
Interval.simpleNameinterval.pyportedsimple_name
Interval.simpleNiceNameinterval.pyportedsimple_nice_name
Interval.semiSimpleNameinterval.pyportedsemi_simple_name
Interval.semiSimpleNiceNameinterval.pyportedsemi_simple_nice_name
Interval.directedNameinterval.pyporteddirected_name
Interval.directedNiceNameinterval.pyporteddirected_nice_name
Interval.directedSimpleNameinterval.pyporteddirected_simple_name
Interval.directedSimpleNiceNameinterval.pyporteddirected_simple_nice_name
Interval.semitonesinterval.pyportedsemitones
Interval.directioninterval.pyporteddirection
Interval.specifierinterval.pyportedspecifier
Interval.specificNameinterval.pyportedspecific_name
Interval.isDiatonicStepinterval.pyportedis_diatonic_step
Interval.isChromaticStepinterval.pyportedis_chromatic_step
Interval.isStepinterval.pyportedis_step
Interval.isSkipinterval.pyportedis_skip
Interval.isConsonantinterval.pyportedis_consonant
Interval.complementinterval.pyportedcomplement
Interval.intervalClassinterval.pyportedinterval_class
Interval.centsinterval.pyportedcents
Interval.transposePitchinterval.pyportedtranspose_pitch
Interval.reverseinterval.pyportedreversed
Interval.pitchStartinterval.pyportedpitch_start
Interval.pitchEndinterval.pyportedpitch_end
Interval.noteStartinterval.pyportednote_start
Interval.noteEndinterval.pyportednote_end
GenericInterval.valueinterval.pyportedvalue
GenericInterval.directedinterval.pyporteddirected
GenericInterval.undirectedinterval.pyportedundirected
GenericInterval.directioninterval.pyporteddirection
GenericInterval.isSkipinterval.pyportedis_skip
GenericInterval.isDiatonicStepinterval.pyportedis_diatonic_step
GenericInterval.isStepinterval.pyportedis_step
GenericInterval.isUnisoninterval.pyportedis_unison
GenericInterval.simpleUndirectedinterval.pyportedsimple_undirected
GenericInterval.semiSimpleUndirectedinterval.pyportedsemi_simple_undirected
GenericInterval.undirectedOctavesinterval.pyportedundirected_octaves
GenericInterval.octavesinterval.pyportedoctaves
GenericInterval.simpleDirectedinterval.pyportedsimple_directed
GenericInterval.semiSimpleDirectedinterval.pyportedsemi_simple_directed
GenericInterval.perfectableinterval.pyportedis_perfectable
GenericInterval.niceNameinterval.pyportednice_name
GenericInterval.simpleNiceNameinterval.pyportedsimple_nice_name
GenericInterval.semiSimpleNiceNameinterval.pyportedsemi_simple_nice_name
GenericInterval.staffDistanceinterval.pyportedstaff_distance
GenericInterval.mod7inversioninterval.pyportedmod7_inversion
GenericInterval.mod7interval.pyportedmod7
GenericInterval.complementinterval.pyportedcomplement
GenericInterval.reverseinterval.pyportedreverse
GenericInterval.transposePitchinterval.pyportedtranspose_pitch
GenericInterval.transposePitchKeyAwareinterval.pyportedtranspose_pitch_key_aware
GenericInterval.getDiatonicinterval.pyportedget_diatonic
DiatonicInterval.nameinterval.pyportedname
DiatonicInterval.niceNameinterval.pyportednice_name
DiatonicInterval.specificNameinterval.pyportedspecific_name
DiatonicInterval.simpleNameinterval.pyportedsimple_name
DiatonicInterval.simpleNiceNameinterval.pyportedsimple_nice_name
DiatonicInterval.semiSimpleNameinterval.pyportedsemi_simple_name
DiatonicInterval.semiSimpleNiceNameinterval.pyportedsemi_simple_nice_name
DiatonicInterval.directioninterval.pyporteddirection
DiatonicInterval.directedNameinterval.pyporteddirected_name
DiatonicInterval.directedNiceNameinterval.pyporteddirected_nice_name
DiatonicInterval.directedSimpleNameinterval.pyporteddirected_simple_name
DiatonicInterval.directedSimpleNiceNameinterval.pyporteddirected_simple_nice_name
DiatonicInterval.directedSemiSimpleNameinterval.pyporteddirected_semi_simple_name
DiatonicInterval.directedSemiSimpleNiceNameinterval.pyporteddirected_semi_simple_nice_name
DiatonicInterval.isStepinterval.pyportedis_step
DiatonicInterval.isDiatonicStepinterval.pyportedis_diatonic_step
DiatonicInterval.isSkipinterval.pyportedis_skip
DiatonicInterval.perfectableinterval.pyportedis_perfectable
DiatonicInterval.mod7inversioninterval.pyportedmod7_inversion
DiatonicInterval.mod7interval.pyportedmod7
DiatonicInterval.reverseinterval.pyportedreverse
DiatonicInterval.getChromaticinterval.pyportedget_chromatic
DiatonicInterval.transposePitchinterval.pyportedtranspose_pitch
DiatonicInterval.specifierAbbreviationinterval.pyportedspecifier_abbreviation
DiatonicInterval.centsinterval.pyportedcents
ChromaticInterval.centsinterval.pyportedcents
ChromaticInterval.directedinterval.pyporteddirected
ChromaticInterval.undirectedinterval.pyportedundirected
ChromaticInterval.directioninterval.pyporteddirection
ChromaticInterval.mod12interval.pyportedmod12
ChromaticInterval.simpleUndirectedinterval.pyportedsimple_undirected
ChromaticInterval.simpleDirectedinterval.pyportedsimple_directed
ChromaticInterval.intervalClassinterval.pyportedinterval_class
ChromaticInterval.isChromaticStepinterval.pyportedis_chromatic_step
ChromaticInterval.isStepinterval.pyportedis_step
ChromaticInterval.reverseinterval.pyportedreverse
ChromaticInterval.getDiatonicinterval.pyportedget_diatonic
ChromaticInterval.transposePitchinterval.pyportedtranspose_pitch
KeySignature.asKeykey.pyportedas_key
KeySignature.alteredPitcheskey.pyportedaltered_pitches
KeySignature.accidentalByStepkey.pyportedaccidental_by_step
KeySignature.transposekey.pyportedtranspose
KeySignature.transposePitchFromCkey.pyportedtranspose_pitch_from_c
KeySignature.getScalekey.pyportedscale
KeySignature.sharpskey.pyportedsharps
Key.relativekey.pyportedrelative
Key.parallelkey.pyportedparallel
Key.tonicPitchNameWithCasekey.pyportedtonic_pitch_name_with_case
Key.deriveByDegreekey.pyportedderive_by_degree
Key.tonalCertaintykey.pyportedtonal_certainty
Key.transposekey.pyportedtranspose
ConcreteScale.isConcretescale/__init__.pymissingevery Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one
ConcreteScale.namescale/__init__.pyportedmusic21_name
ConcreteScale.getTonicscale/__init__.pyportedtonic
ConcreteScale.abstractscale/__init__.pymissinga 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
ConcreteScale.getDegreeMaxUniquescale/__init__.pyporteddegree_count
ConcreteScale.transposescale/__init__.pyportedtranspose
ConcreteScale.tunescale/__init__.pyportedtune
ConcreteScale.romanNumeralscale/__init__.pyportedroman_numeral
ConcreteScale.getPitchesscale/__init__.pyportedpitches
ConcreteScale.getChordscale/__init__.pyportedchord
ConcreteScale.pitchFromDegreescale/__init__.pyportedpitch_at_degree
ConcreteScale.pitchesFromScaleDegreesscale/__init__.pyportedpitches_from_scale_degrees
ConcreteScale.intervalBetweenDegreesscale/__init__.pyportedinterval_between_degrees
ConcreteScale.getScaleDegreeFromPitchscale/__init__.pyporteddegree_of
ConcreteScale.getScaleDegreeAndAccidentalFromPitchscale/__init__.pyporteddegree_and_accidental_of
ConcreteScale.solfegscale/__init__.pyportedsolfeg
ConcreteScale.nextPitchscale/__init__.pyportednext_pitch_above
ConcreteScale.isNextscale/__init__.pyportedis_next
ConcreteScale.matchscale/__init__.pyportedmatch_pitches
ConcreteScale.findMissingscale/__init__.pyportedfind_missing
ConcreteScale.deriveRankedscale/__init__.pyportedderive_ranked
ConcreteScale.derivescale/__init__.pyportedderive
ConcreteScale.deriveAllscale/__init__.pyportedderive_all
ConcreteScale.deriveByDegreescale/__init__.pyportedderive_by_degree
ConcreteScale.getScalaDatascale/__init__.pyportedscala_data
ConcreteScale.writescale/__init__.pymissingwrites 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
ConcreteScale.showscale/__init__.pymissingopens the scale in another program, which is the caller's to do
AbstractDiatonicScalescale/__init__.pymissingthe IntervalNetwork layer
AbstractOctatonicScalescale/__init__.pymissingthe IntervalNetwork layer
AbstractHarmonicMinorScalescale/__init__.pymissingthe IntervalNetwork layer
AbstractMelodicMinorScalescale/__init__.pymissingthe IntervalNetwork layer
AbstractCyclicalScalescale/__init__.pymissingthe IntervalNetwork layer
AbstractOctaveRepeatingScalescale/__init__.pymissingthe IntervalNetwork layer
RomanNumeral.adjustMinorVIandVIIByQualityroman.pyportedadjust_minor_vi_and_vii_by_quality
RomanNumeral.transposeroman.pyportedtranspose
RomanNumeral.romanNumeralroman.pyportedroman_numeral
RomanNumeral.figureroman.pyportedfigure
RomanNumeral.figureAndKeyroman.pyportedfigure_and_key
RomanNumeral.keyroman.pyportedkey
RomanNumeral.scaleDegreeWithAlterationroman.pyportedscale_degree_with_alteration
RomanNumeral.bassScaleDegreeFromNotationroman.pyportedbass_scale_degree_from_notation
RomanNumeral.functionalityScoreroman.pyportedfunctionality_score
RomanNumeral.isNeapolitanroman.pyportedis_neapolitan
RomanNumeral.isMixtureroman.pyportedis_mixture
TimeSignature.resetValuesmeter/base.pymissingrebuilding a meter in place; a new one is built instead
TimeSignature.loadmeter/base.pymissingrebuilding a meter in place; a new one is built instead
TimeSignature.ratioStringmeter/base.pyportedratio_string
TimeSignature.ratioEqualmeter/base.pyportedratio_equal
TimeSignature.numeratormeter/base.pyportednumerator
TimeSignature.denominatormeter/base.pyporteddenominator
TimeSignature.barDurationmeter/base.pyportedbar_duration
TimeSignature.beatLengthToQuarterLengthRatiometer/base.pyportedbeat_length_to_quarter_length_ratio
TimeSignature.quarterLengthToBeatLengthRatiometer/base.pyportedquarter_length_to_beat_length_ratio
TimeSignature.beatCountmeter/base.pyportedbeat_count
TimeSignature.beatCountNamemeter/base.pyportedbeat_count_name
TimeSignature.beatDurationmeter/base.pyportedbeat_duration
TimeSignature.beatDivisionCountmeter/base.pyportedbeat_division_count
TimeSignature.beatDivisionCountNamemeter/base.pyportedbeat_division_count_name
TimeSignature.beatDivisionDurationsmeter/base.pyportedbeat_division_durations
TimeSignature.beatSubDivisionDurationsmeter/base.pyportedbeat_sub_division_durations
TimeSignature.classificationmeter/base.pyportedclassification
TimeSignature.summedNumeratormeter/base.pyportedsummed_numerator
TimeSignature.getBeamsmeter/base.pyportedbeams_for
TimeSignature.setDisplaymeter/base.pyportedset_display
TimeSignature.getAccentmeter/base.pyportedaccent
TimeSignature.setAccentWeightmeter/base.pyportedset_accent_weight
TimeSignature.averageBeatStrengthmeter/base.pyportedaverage_beat_strength
TimeSignature.getMeasureOffsetOrMeterModulusOffsetmeter/base.pyportedoffset_in_bar
TimeSignature.getAccentWeightmeter/base.pyportedaccent_weight
TimeSignature.getBeatmeter/base.pyportedbeat_at_offset
TimeSignature.getBeatOffsetsmeter/base.pyportedbeat_offsets
TimeSignature.getBeatDurationmeter/base.pyportedbeat_duration
TimeSignature.getOffsetFromBeatmeter/base.pyportedoffset_from_beat
TimeSignature.getBeatProgressmeter/base.pyportedbeat_progress
TimeSignature.getBeatProportionmeter/base.pyportedbeat_proportion
TimeSignature.getBeatProportionStrmeter/base.pyportedbeat_proportion_string
TimeSignature.getBeatDepthmeter/base.pyportedbeat_depth
MetronomeMark.referenttempo.pyportedreferent
MetronomeMark.numberSoundingtempo.pyportednumber_sounding
MetronomeMark.getQuarterBPMtempo.pyportedquarter_bpm
MetronomeMark.setQuarterBPMtempo.pyportedquarter_bpm
MetronomeMark.getTextExpressiontempo.pyportedtext_expression
MetronomeMark.getEquivalentByReferenttempo.pyportedequivalent_by_referent
MetronomeMark.getMaintainedNumberWithReferenttempo.pyportedmaintained_number_with_referent
MetronomeMark.secondsPerQuartertempo.pyportedseconds_per_quarter
MetronomeMark.durationToSecondstempo.pyportedduration_to_seconds
MetronomeMark.secondsToDurationtempo.pyportedseconds_to_duration
MetricModulation.oldMetronometempo.pyportedold_metronome
MetricModulation.oldReferenttempo.pyportedold_referent
MetricModulation.newMetronometempo.pyportednew_metronome
MetricModulation.newReferenttempo.pyportednew_referent
MetricModulation.numbertempo.pyportednumber
MetricModulation.updateByContexttempo.pyportedupdate_from
MetricModulation.setEqualityByReferenttempo.pyportedset_equality_by_referent
MetricModulation.setOtherByReferenttempo.pyportedset_other_by_referent
Instrument.bestNameinstrument.pyportedbest_name
Instrument.partIdRandomizeinstrument.pymissingmakes 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
Instrument.instrumentIdRandomizeinstrument.pymissingmakes 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
Instrument.autoAssignMidiChannelinstrument.pyportedauto_assign_midi_channel
StringInstrument.stringPitchesinstrument.pyportedstring_pitches
MidiPercussionMapMixin.modifierinstrument.pyportedmodifier
ToneRow.pitchClassesserial.pyportedpitch_classes
ToneRow.noteNamesserial.pyportednote_names
ToneRow.isTwelveToneRowserial.pyportedis_twelve_tone_row
ToneRow.makeTwelveToneRowserial.pyportedmake_twelve_tone_row
ToneRow.isSameRowserial.pyportedis_same_row
ToneRow.getIntervalsAsStringserial.pyportedintervals_as_string
ToneRow.zeroCenteredTransformationserial.pyportedzero_centered_transformation
ToneRow.originalCenteredTransformationserial.pyportedoriginal_centered_transformation
ToneRow.findZeroCenteredTransformationsserial.pyportedfind_zero_centered_transformations
ToneRow.findOriginalCenteredTransformationsserial.pyportedfind_original_centered_transformations
TwelveToneRow.matrixserial.pyportedmatrix
TwelveToneRow.findHistoricalserial.pyportedfind_historical
TwelveToneRow.findTransformedHistoricalserial.pyportedfind_transformed_historical
TwelveToneRow.isAllIntervalserial.pyportedis_all_interval
TwelveToneRow.getLinkClassificationserial.pyportedlink_classification
TwelveToneRow.isLinkChordserial.pyportedis_link_chord
TwelveToneRow.areCombinatorialserial.pyportedare_combinatorial
VoiceLeadingQuartet.keyvoiceLeading.pyportedkey
VoiceLeadingQuartet.v1n1voiceLeading.pyportedv1n1
VoiceLeadingQuartet.v1n2voiceLeading.pyportedv1n2
VoiceLeadingQuartet.v2n1voiceLeading.pyportedv2n1
VoiceLeadingQuartet.v2n2voiceLeading.pyportedv2n2
VoiceLeadingQuartet.motionTypevoiceLeading.pyportedmotion_type
VoiceLeadingQuartet.noMotionvoiceLeading.pyportedno_motion
VoiceLeadingQuartet.obliqueMotionvoiceLeading.pyportedoblique_motion
VoiceLeadingQuartet.similarMotionvoiceLeading.pyportedsimilar_motion
VoiceLeadingQuartet.parallelMotionvoiceLeading.pyportedparallel_motion
VoiceLeadingQuartet.contraryMotionvoiceLeading.pyportedcontrary_motion
VoiceLeadingQuartet.outwardContraryMotionvoiceLeading.pyportedoutward_contrary_motion
VoiceLeadingQuartet.inwardContraryMotionvoiceLeading.pyportedinward_contrary_motion
VoiceLeadingQuartet.antiParallelMotionvoiceLeading.pyportedanti_parallel_motion
VoiceLeadingQuartet.parallelIntervalvoiceLeading.pyportedparallel_interval
VoiceLeadingQuartet.parallelFifthvoiceLeading.pyportedparallel_fifth
VoiceLeadingQuartet.parallelOctavevoiceLeading.pyportedparallel_octave
VoiceLeadingQuartet.parallelUnisonvoiceLeading.pyportedparallel_unison
VoiceLeadingQuartet.parallelUnisonOrOctavevoiceLeading.pyportedparallel_unison_or_octave
VoiceLeadingQuartet.hiddenIntervalvoiceLeading.pyportedhidden_interval
VoiceLeadingQuartet.hiddenFifthvoiceLeading.pyportedhidden_fifth
VoiceLeadingQuartet.hiddenOctavevoiceLeading.pyportedhidden_octave
VoiceLeadingQuartet.voiceOverlapvoiceLeading.pyportedvoice_overlap
VoiceLeadingQuartet.voiceCrossingvoiceLeading.pyportedvoice_crossing
VoiceLeadingQuartet.isProperResolutionvoiceLeading.pyportedis_proper_resolution
VoiceLeadingQuartet.leapNotSetWithStepvoiceLeading.pyportedleap_not_set_with_step
VoiceLeadingQuartet.modalOpeningvoiceLeading.pyportedmodal_opening
VoiceLeadingQuartet.opensIncorrectlyvoiceLeading.pyportedopens_incorrectly
VoiceLeadingQuartet.clausulaVeravoiceLeading.pyportedclausula_vera
VoiceLeadingQuartet.closesIncorrectlyvoiceLeading.pyportedcloses_incorrectly
GeneralNote.tienote.pyportedtie
GeneralNote.lyricnote.pyportedlyric
GeneralNote.addLyricnote.pyportedadd_lyric
GeneralNote.insertLyricnote.pyportedinsert_lyric
GeneralNote.fullNamenote.pyportedfull_name
GeneralNote.pitchesnote.pyportedpitches
GeneralNote.augmentOrDiminishnote.pyportedaugment_or_diminish
GeneralNote.getGracenote.pyportedgrace_note
NotRest.stemDirectionnote.pyportedstem_direction
NotRest.noteheadnote.pyportednotehead
NotRest.noteheadFillnote.pyportednotehead_fill
NotRest.noteheadParenthesisnote.pyportednotehead_parenthesis
NotRest.hasVolumeInformationnote.pyportedhas_volume_information
NotRest.volumenote.pyportedvolume
NotRest.storedInstrumentnote.pyportedstored_instrument
NotRest.getInstrumentnote.pyportedinstrument
Rest.fullNamenote.pyportedfull_name
ChordBase.addchord/__init__.pyportedadd
ChordBase.removechord/__init__.pyportedremove
ChordBase.noteschord/__init__.pyportednotes
ChordBase.tiechord/__init__.pyportedtie
ChordBase.volumechord/__init__.pyportedvolume
ChordBase.hasComponentVolumeschord/__init__.pyportedhas_component_volumes
ChordBase.setVolumeschord/__init__.pyportedset_volumes
Note.namenote.pyportedpitch_name
Note.nameWithOctavenote.pyportedpitch_name_with_octave
Note.stepnote.pyportedstep
Note.octavenote.pyportedoctave
Note.pitchesnote.pyportedpitches
Note.transposenote.pyportedtranspose
Note.fullNamenote.pyportedfull_name
Note.pitchChangednote.pymissingobserver callback; there is none
ChordSymbol.findFigureharmony.pyportedfind_figure
ChordSymbol.inversionIsValidharmony.pyportedinversion_is_valid
ChordSymbol.transposeharmony.pyportedtranspose
TsvHandler.tsvToChordsromanText/tsvConverter.pyportedtsv_to_chords
TsvHandler.toM21StreamromanText/tsvConverter.pyportedfrom_tsv
TsvHandler.prepStreamromanText/tsvConverter.pymissinga step inside the reader: from_tsv prepares the measures from the table's own numbers and meters itself and hands back the whole score
M21toTSV.m21ToTsvromanText/tsvConverter.pyportedto_tsv
M21toTSV.writeromanText/tsvConverter.pymissingwrites a file, which the library does not do: to_tsv hands back the text
addNewChordSymbolharmony.pymissingmutates 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
changeAbbreviationForharmony.pymissingmutates 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
removeChordSymbolsharmony.pymissingmutates 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
Dynamic.valuedynamics.pyportedvalue
Dynamic.volumeScalardynamics.pyportedvolume_scalar
Clef.octaveChangeclef.pyportedoctave_change
Clef.nameclef.pyportedname
Clef.getStemDirectionForPitchesclef.pyportedstem_direction_for_pitches
PitchClef.octaveChangeclef.pyportedoctave_change
Articulation.namearticulations.pyportedname
Articulation.volumeShiftarticulations.pyportedvolume_shift
Ornament.realizeexpressions.pyportedrealize
Ornament.fillListOfRealizedNotesexpressions.pymissinga helper realize fills its lists with; realize is ported
Ornament.resolveOrnamentalPitchesexpressions.pyportedornamental_pitches
Ornament.ornamentalPitchesexpressions.pyportedornamental_pitches
Ornament.updateAccidentalDisplayexpressions.pyportedupdate_accidental_display
GeneralMordent.nameexpressions.pyportedname
GeneralMordent.accidentalexpressions.pyportedaccidental
GeneralMordent.directionexpressions.pyporteddirection
GeneralMordent.getSizeexpressions.pyportedsize
GeneralMordent.resolveOrnamentalPitchesexpressions.pyportedornamental_pitches
GeneralMordent.ornamentalPitchexpressions.pyportedornamental_pitches
GeneralMordent.ornamentalPitchesexpressions.pyportedornamental_pitches
GeneralMordent.updateAccidentalDisplayexpressions.pyportedupdate_accidental_display
GeneralMordent.realizeexpressions.pyportedrealize
Trill.nameexpressions.pyportedname
Trill.directionexpressions.pyporteddirection
Trill.accidentalexpressions.pyportedaccidental
Trill.splitClientexpressions.pyportedsplit_client
Trill.getSizeexpressions.pyportedsize
Trill.resolveOrnamentalPitchesexpressions.pyportedornamental_pitches
Trill.ornamentalPitchexpressions.pyportedornamental_pitches
Trill.ornamentalPitchesexpressions.pyportedornamental_pitches
Trill.updateAccidentalDisplayexpressions.pyportedupdate_accidental_display
Trill.realizeexpressions.pyportedrealize
Turn.upperAccidentalexpressions.pyportedupper_accidental
Turn.lowerAccidentalexpressions.pyportedlower_accidental
Turn.delayexpressions.pyporteddelay
Turn.isDelayedexpressions.pyportedis_delayed
Turn.nameexpressions.pyportedname
Turn.getSizeexpressions.pyportedturn_size
Turn.resolveOrnamentalPitchesexpressions.pyportedornamental_pitches
Turn.upperOrnamentalPitchexpressions.pyportedornamental_pitches
Turn.lowerOrnamentalPitchexpressions.pyportedornamental_pitches
Turn.ornamentalPitchesexpressions.pyportedornamental_pitches
Turn.updateAccidentalDisplayexpressions.pyportedupdate_accidental_display
Turn.realizeexpressions.pyportedrealize
GeneralAppoggiatura.realizeexpressions.pyportedrealize
Tremolo.numberOfMarksexpressions.pyportednumber_of_marks
Tremolo.realizeexpressions.pyportedrealize
showResolutionsfiguredBass/resolution.pymissingputs 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
printRulesfiguredBass/segment.pymissingprints music21's rule tables, which hold its Python functions
KeyWeightKeyAnalysis.solutionLegendanalysis/discrete.pymissingthe colour legend of a keyscape graph; presentation
KeyWeightKeyAnalysis.solutionUnitStringanalysis/discrete.pymissingthe unit a graph's legend is labelled with; presentation
KeyWeightKeyAnalysis.solutionToColoranalysis/discrete.pymissingthe colour a key is drawn in; presentation
KeyWeightKeyAnalysis.processanalysis/discrete.pyportedestimate_key_from_distribution
Ambitus.solutionLegendanalysis/discrete.pymissingthe colour legend of a graph; presentation
Ambitus.solutionUnitStringanalysis/discrete.pymissingthe unit a graph's legend is labelled with; presentation
Ambitus.solutionToColoranalysis/discrete.pymissingthe colour a span is drawn in; presentation
Ambitus.processanalysis/discrete.pyportedpitch_span
moveNotesToVoicesstream/makeNotation.pymissingthe 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
makeAccidentalsInMeasureStreamstream/makeNotation.pyportedmake_accidentals
setStemDirectionOneGroupstream/makeNotation.pymissingone group of that walk
splitElementsToCompleteTupletsstream/makeNotation.pyportedsplit_elements_to_complete_tuplets
consolidateCompletedTupletsstream/makeNotation.pyportedconsolidate_completed_tuplets
saveAccidentalDisplayStatusstream/makeNotation.pymissinga 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
Barline.typebar.pyportedbar_type
Barline.musicXMLBarStylebar.pyportedmusicxml_bar_style
Repeat.directionbar.pyportedrepeat_direction
Repeat.timesbar.pyportedrepeat_times
Repeat.getTextExpressionbar.pyportedrepeat_text_expression
Stream.writestream/base.pymissingwriting a file, which the format modules do
Stream.showstream/base.pymissingrendering, which the crate leaves to its caller
Stream.iterstream/base.pyportediter
Stream.firststream/base.pyportedfirst
Stream.laststream/base.pyportedlast
Stream.elementsstream/base.pyportedevents
Stream.clefstream/base.pyportedclef
Stream.timeSignaturestream/base.pyportedtime_signature_at
Stream.keySignaturestream/base.pyportedkey_signature_at
Stream.staffLinesstream/base.pyportedstaff_lines
Stream.clearstream/base.pyportedclear
Stream.cloneEmptystream/base.pyportedclone_empty
Stream.mergeAttributesstream/base.pymissingwhat clone_empty carries over
Stream.hasElementOfClassstream/base.pyportedhas_element_of_class
Stream.mergeElementsstream/base.pyportedmerge_elements
Stream.indexstream/base.pymissingas elementOffset
Stream.removestream/base.pymissingtakes a named object out; retain_leaves and remove_event take out by place or by test
Stream.popstream/base.pyportedremove_event
Stream.removeByClassstream/base.pyportedremove_by_class
Stream.removeByNotOfClassstream/base.pyportedremove_by_not_of_class
Stream.setElementOffsetstream/base.pymissingmoves 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
Stream.elementOffsetstream/base.pymissingasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset
Stream.insertstream/base.pyportedinsert
Stream.insertIntoNoteOrChordstream/base.pyportedinsert_into_note_or_chord
Stream.appendstream/base.pyportedpush
Stream.storeAtEndstream/base.pymissingelements 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
Stream.isAtEndstream/base.pymissingasks 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
Stream.insertAndShiftstream/base.pyportedinsert_and_shift
Stream.setDerivationMethodstream/base.pymissingderivations, which a crate stream does not keep
Stream.replacestream/base.pymissingswaps one object for another; events_mut reaches each in place
Stream.splitAtDurationsstream/base.pyportedsplit_at_durations
Stream.splitAtQuarterLengthstream/base.pyportedsplit_at_quarter_length
Stream.recurseReprstream/base.pymissingmusic21's own text dump of a stream
Stream.plotstream/base.pymissingplotting, which the crate leaves to its caller
Stream.analyzestream/base.pyportedanalyze
Stream.addGroupForElementsstream/base.pymissingthe group names music21 picks elements out of a stream by; nothing a crate stream holds carries them
Stream.getElementsByClassstream/base.pyportedelements_of_class
Stream.getElementsNotOfClassstream/base.pyportedelements_not_of_class
Stream.getElementsByGroupstream/base.pymissingas addGroupForElements
Stream.getElementByIdstream/base.pyportedelement_by_id
Stream.getElementsByOffsetstream/base.pyportedelements_in_span
Stream.getElementAtOrBeforestream/base.pyportedelement_at_or_before
Stream.getElementBeforeOffsetstream/base.pyportedelement_before_offset
Stream.getElementAfterElementstream/base.pyportedelement_after
Stream.measuresstream/base.pyportedmeasures_between
Stream.measurestream/base.pyportedmeasure
Stream.templatestream/base.pyportedtemplate
Stream.measureOffsetMapstream/base.pyportedmeasure_offset_map
Stream.finalBarlinestream/base.pyportedfinal_barline
Stream.voicesstream/base.pyportedvoices
Stream.spannersstream/base.pyportedspanners
Stream.atSoundingPitchstream/base.pyportedat_sounding_pitch
Stream.toSoundingPitchstream/base.pyportedto_sounding_pitch
Stream.toWrittenPitchstream/base.pyportedto_written_pitch
Stream.getTimeSignaturesstream/base.pyportedtime_signatures
Stream.getInstrumentsstream/base.pyportedinstruments
Stream.getInstrumentstream/base.pyportedinstrument
Stream.invertDiatonicstream/base.pyportedinvert_diatonic
Stream.shiftElementsstream/base.pyportedshift_elements
Stream.transferOffsetToElementsstream/base.pymissingmoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep
Stream.repeatAppendstream/base.pyportedrepeat_append
Stream.repeatInsertstream/base.pyportedrepeat_insert
Stream.extractContextstream/base.pyportedextract_context
Stream.chordifystream/base.pyportedchordify
Stream.splitByClassstream/base.pyportedsplit_by
Stream.offsetMapstream/base.pyportedoffset_map
Stream.makeMeasuresstream/base.pyportedmake_measures
Stream.makeRestsstream/base.pyportedmake_rests
Stream.makeTiesstream/base.pyportedmake_ties
Stream.makeBeamsstream/base.pyportedmake_beams
Stream.makeAccidentalsstream/base.pyportedmake_accidentals
Stream.haveAccidentalsBeenMadestream/base.pyportedaccidentals_made
Stream.makeNotationstream/base.pyportedmake_notation
Stream.extendDurationstream/base.pyportedextend_duration
Stream.stripTiesstream/base.pyportedstrip_ties
Stream.extendTiesstream/base.pyportedextend_ties
Stream.sortstream/base.pymissinga 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
Stream.sortedstream/base.pymissingas sort
Stream.flattenstream/base.pyportedflatten
Stream.recursestream/base.pyportedrecurse
Stream.containerInHierarchystream/base.pymissingneeds the sites a crate stream does not keep
Stream.makeImmutablestream/base.pymissingmusic21's mutability machinery, which a value has no need of
Stream.makeMutablestream/base.pymissingas makeImmutable
Stream.highestOffsetstream/base.pyportedhighest_offset
Stream.highestTimestream/base.pyportedhighest_time
Stream.lowestOffsetstream/base.pyportedlowest_offset
Stream.durationstream/base.pyportedduration
Stream.secondsstream/base.pyportedseconds
Stream.metronomeMarkBoundariesstream/base.pyportedmetronome_mark_boundaries
Stream.metadatastream/base.pyportedmetadata
Stream.beatstream/base.pymissingwhere 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
Stream.beatStrstream/base.pymissingas beat
Stream.beatDurationstream/base.pyportedbeat_duration
Stream.beatStrengthstream/base.pymissingas beat
Stream.beatAndMeasureFromOffsetstream/base.pyportedbeat_and_measure_from_offset
Stream.transposestream/base.pyportedtranspose
Stream.scaleOffsetsstream/base.pyportedscale_offsets
Stream.scaleDurationsstream/base.pyportedscale_durations
Stream.augmentOrDiminishstream/base.pyportedaugment_or_diminish
Stream.quantizestream/base.pyportedquantize
Stream.expandRepeatsstream/base.pyportedexpand_repeats
Stream.sliceByQuarterLengthsstream/base.pyportedslice_by_quarter_lengths
Stream.sliceByGreatestDivisorstream/base.pyportedslice_by_greatest_divisor
Stream.sliceAtOffsetsstream/base.pyportedslice_at_offsets
Stream.sliceByBeatstream/base.pyportedslice_by_beat
Stream.hasMeasuresstream/base.pyportedhas_measures
Stream.hasVoicesstream/base.pyportedhas_voices
Stream.hasPartLikeStreamsstream/base.pyportedhas_part_like_streams
Stream.isTwelveTonestream/base.pyportedis_twelve_tone
Stream.isWellFormedNotationstream/base.pyportedis_well_formed_notation
Stream.notesAndRestsstream/base.pyportednotes_and_rests
Stream.notesstream/base.pyportednotes
Stream.pitchesstream/base.pyportedpitches
Stream.findConsecutiveNotesstream/base.pyportedfind_consecutive_notes
Stream.melodicIntervalsstream/base.pyportedmelodic_intervals
Stream.findGapsstream/base.pyportedfind_gaps
Stream.isGaplessstream/base.pyportedis_gapless
Stream.getOverlapsstream/base.pyportedget_overlaps
Stream.isSequencestream/base.pyportedis_sequence
Stream.simultaneousAttacksstream/base.pyportedsimultaneous_attacks
Stream.attachIntervalsBetweenStreamsstream/base.pyportedharmonic_intervals
Stream.attachMelodicIntervalsstream/base.pymissingattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line
Stream.playingWhenAttackedstream/base.pyportedplaying_when_attacked
Stream.allPlayingWhileSoundingstream/base.pyportedall_playing_while_sounding
Stream.makeVoicesstream/base.pyportedmake_voices
Stream.voicesToPartsstream/base.pyportedvoices_to_parts
Stream.explodestream/base.pyportedexplode
Stream.flattenUnnecessaryVoicesstream/base.pyportedflatten_unnecessary_voices
Stream.lyricsstream/base.pyportedlyrics
Stream.activateVariantsstream/base.pyportedactivate_variants
Stream.showVariantAsOssialikePartstream/base.pyportedshow_variant_as_ossialike_part
Measure.measureNumberWithSuffixstream/base.pyportednumber_with_suffix
Measure.mergeAttributesstream/base.pymissingwhat clone_empty carries over
Measure.makeNotationstream/base.pyportedmake_notation
Measure.barDurationProportionstream/base.pyportedbar_duration_proportion
Measure.padAsAnacrusisstream/base.pyportedpad_as_anacrusis
Measure.barDurationstream/base.pyportedbar_duration
Measure.bestTimeSignaturestream/base.pyportedbest_time_signature
Measure.leftBarlinestream/base.pyportedleft_barline
Measure.rightBarlinestream/base.pyportedright_barline
Part.partNamestream/base.pyportedname
Part.partAbbreviationstream/base.pyportedabbreviation
Part.makeAccidentalsstream/base.pyportedmake_accidentals
Part.mergeAttributesstream/base.pymissingwhat clone_empty carries over
Score.partsstream/base.pyportedparts
Score.measuresstream/base.pyportedmeasures_between
Score.measurestream/base.pymissinga score of each part's measure of one number; measures_between(n, Some(n)) answers it, measure reading only a stream's own measures
Score.expandRepeatsstream/base.pyportedexpand_repeats
Score.measureOffsetMapstream/base.pyportedmeasure_offset_map
Score.sliceByGreatestDivisorstream/base.pyportedslice_by_greatest_divisor
Score.partsToVoicesstream/base.pyportedparts_to_voices
Score.implodestream/base.pyportedimplode
Score.makeNotationstream/base.pyportedmake_notation
Opus.getNumbersstream/base.pyportedscore_numbers
Opus.getScoreByNumberstream/base.pyportedscore_by_number
Opus.getScoreByTitlestream/base.pyportedscore_by_title
Opus.scoresstream/base.pyportedscores
Opus.mergeScoresstream/base.pyportedmerge_scores
Opus.writestream/base.pymissingwriting a file, which the format modules do
Opus.showstream/base.pymissingrendering, which the crate leaves to its caller
PercussionChord.notespercussion.pyportedmembers
PercussionChord.pitchespercussion.pyportedpitches
ChordWithFretBoardtablature.pyportedChordWithFretBoard
ChordWithFretBoard.getFretNotesFromFiguretablature.pymissingmusic21'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
TextBox.contenttext.pyportedcontent
TextBox.pagetext.pyportedpage
Trigram.makeWordstext.pymissingno reason given
Trigram.likelytext.pymissingwhich language a trigram is nearest, which most_likely_language answers
StaffGrouplayout.pyportedStaffGroup
LayoutScorelayout.pymissinga 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
Pagelayout.pymissinga page of such a score
Stafflayout.pymissinga staff of such a score
divideByPageslayout.pymissingbuilds a LayoutScore, which the crate has none of
getPageRegionMeasureNumberslayout.pymissingthe measures on a page of a LayoutScore
getSystemRegionMeasureNumberslayout.pymissingthe measures in a system of a LayoutScore
getRegionMeasureNumberslayout.pymissingthe measures in a region of a LayoutScore
ScoreLayout.tenthsToMillimeterslayout.pyportedtenths_to_millimeters
StaffGroup.barTogetherlayout.pyportedbar_together
StaffGroup.symbollayout.pyportedsymbol
Enclosurestyle.pymissingthe 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
StyleMixinstyle.pymissingwhat music21 mixes into every class it draws; nothing here has a style of its own to mix in
TextStyle.alignVerticalstyle.pyportedalign_vertical
TextStyle.alignHorizontalstyle.pyportedalign_horizontal
TextStyle.justifystyle.pyportedjustify
TextStyle.fontStylestyle.pyportedfont_style
TextStyle.fontWeightstyle.pyportedfont_weight
TextStyle.fontSizestyle.pyportedfont_size
TextStyle.letterSpacingstyle.pymissingthe 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
TextStyle.fontFamilystyle.pyportedfont_family
PendingAssignmentRefspanner.pymissingmusic21's note to itself that a spanner is waiting for its first element, which the readers keep as a queue
SpannerAnchorspanner.pymissingan 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
RepeatBracketspanner.pyportedEnding
Spanner.purgeOrphansspanner.pymissingdrops the elements no stream holds any more, which only a spanner keeping objects can have
Spanner.purgeLocationsspanner.pymissingdrops the sites it remembers, and it remembers none
Spanner.getSpannedElementsspanner.pyportedspanned
Spanner.getSpannedElementsByClassspanner.pymissingthe elements of a class among them, which the stream holding them answers
Spanner.getSpannedElementIdsspanner.pymissingPython object ids
Spanner.addSpannedElementsspanner.pyportedadd_spanned_elements
Spanner.insertFirstSpannedElementspanner.pyportedinsert_first_spanned_element
Spanner.hasSpannedElementspanner.pyportedhas_spanned_element
Spanner.replaceSpannedElementspanner.pyportedreplace_spanned_element
Spanner.fillspanner.pymissingfills in every element between the first and the last, which asks the stream what stands between them
Spanner.isFirstspanner.pyportedis_first
Spanner.getFirstspanner.pymissingthe first element itself; spanned gives its position and the stream hands back what stands there
Spanner.isLastspanner.pyportedis_last
Spanner.getLastspanner.pymissingthe last element itself, likewise
Ottava.typespanner.pyportedname
Ottava.shiftMagnitudespanner.pyportedmagnitude
Ottava.shiftDirectionspanner.pyportedup
Ottava.intervalspanner.pyportedinterval
Ottava.performTranspositionspanner.pyportedto_sounding_pitch
Ottava.undoTranspositionspanner.pyportedto_written_pitch
Line.endTickspanner.pyportedend
Line.startTickspanner.pyportedstart
Line.tickspanner.pymissingsets both ends at once; LineEnds carries each
Line.lineTypespanner.pyportedline_type
Line.endHeightspanner.pyportedend_height
Line.startHeightspanner.pyportedstart_height
Glissando.lineTypespanner.pyportedline_type
Glissando.slideTypespanner.pyportedslide_type
MultiMeasureRest.numRestsspanner.pyportednum_rests
RepeatMarkrepeat.pymissingwhat music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back to
RepeatExpressionMarkerrepeat.pyportedis_marker
RepeatExpressionCommandrepeat.pymissingthe kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to
Expanderrepeat.pyportedexpand_repeats
RepeatFinderrepeat.pymissingfinds 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
insertRepeatEndingrepeat.pymissingwrites an ending bracket over some measures
insertRepeatrepeat.pymissingwrites repeat barlines round some measures
deleteMeasuresrepeat.pymissingtakes measures out and renumbers the rest
RepeatExpression.getTextrepeat.pyportedtext
RepeatExpression.setTextrepeat.pyportedset_text
RepeatExpression.applyTextFormattingrepeat.pymissingthe font and the justification a renderer draws the words with; justify says which way they are set
RepeatExpression.setTextExpressionrepeat.pymissingkeeps the words as a TextExpression object
RepeatExpression.getTextExpressionrepeat.pymissingthe words as a TextExpression for a renderer; text is what they say
RepeatExpression.isValidTextrepeat.pyportedis_valid_text
Expander.processrepeat.pyportedexpand_repeats
Expander.measureMaprepeat.pyportedmeasure_map
Expander.repeatBarsAreCoherentrepeat.pyportedrepeat_bars_are_coherent
Expander.findInnermostRepeatIndicesrepeat.pyportedfind_innermost_repeat_indices
Expander.processInnermostRepeatBarsrepeat.pyportedprocess_innermost_repeat_bars
Expander.getRepeatExpressionIndexrepeat.pyportedrepeat_expression_index
Expander.isExpandablerepeat.pyportedis_expandable
getMeasureHashesvariant.pyportedmeasure_hashes
makeVariantBlocksvariant.pyportedmake_variant_blocks
Variant.purgeOrphansvariant.pymissingdrops the elements no stream holds any more, which only a variant keeping objects can have
Variant.purgeLocationsvariant.pymissingdrops the sites it remembers, and it remembers none
Variant.getElementIdsvariant.pymissingPython object ids
Variant.replaceElementvariant.pymissingswaps one element for another by object
Variant.highestTimevariant.pyportedhighest_time
Variant.highestOffsetvariant.pymissingthe offset of the stream it holds, which Stream::highest_offset answers of its contents
Variant.showvariant.pymissingrendering, which the crate leaves to its caller
Variant.containedHighestTimevariant.pyportedcontained_highest_time
Variant.containedHighestOffsetvariant.pyportedcontained_highest_offset
Variant.containedSitevariant.pymissingthe stream it was read out of, which is a site
Variant.replacementQuarterLengthvariant.pyportedreplacement_quarter_length
Variant.replacementDurationvariant.pymissingthe Duration of what it replaces; replacement_quarter_length is how long that is
Variant.lengthTypevariant.pyportedlength_type
Variant.replacedElementsvariant.pyportedreplaced_elements
Variant.removeReplacedElementsFromStreamvariant.pyportedremove_replaced_elements_from_stream
Metadata.addmetadata/__init__.pyportedadd
Metadata.getCustommetadata/__init__.pyportedget
Metadata.addCustommetadata/__init__.pyportedadd
Metadata.setCustommetadata/__init__.pyportedset
Metadata.uniqueNameToNamespaceNamemetadata/__init__.pyportednamespace_name
Metadata.namespaceNameToUniqueNamemetadata/__init__.pyportedunique_name_of
Metadata.isContributorUniqueNamemetadata/__init__.pyportedis_contributor_unique_name
Metadata.isStandardNamemetadata/__init__.pyportedunique_name_of
Metadata.softwaremetadata/__init__.pyportedget
Metadata.contributorsmetadata/__init__.pyportedcontributors
Metadata.copyrightmetadata/__init__.pyportedstring_value
Metadata.allmetadata/__init__.pyportedall
Metadata.addContributormetadata/__init__.pyportedadd_contributor
Metadata.getContributorsByRolemetadata/__init__.pyportedcontributors_by_role
Metadata.searchmetadata/__init__.pyportedsearch
Metadata.alternativeTitlemetadata/__init__.pyportedstring_value
Metadata.composermetadata/__init__.pyportedstring_value
Metadata.composersmetadata/__init__.pyportedget
Metadata.dateCreatedmetadata/__init__.pyportedstring_value
Metadata.fileFormatmetadata/__init__.pyportedstring_value
Metadata.filePathmetadata/__init__.pyportedstring_value
Metadata.corpusFilePathmetadata/__init__.pyportedstring_value
Metadata.fileNumbermetadata/__init__.pyportedstring_value
Metadata.localeOfCompositionmetadata/__init__.pyportedstring_value
Metadata.librettistmetadata/__init__.pyportedstring_value
Metadata.librettistsmetadata/__init__.pyportedget
Metadata.lyricistmetadata/__init__.pyportedstring_value
Metadata.lyricistsmetadata/__init__.pyportedget
Metadata.movementNamemetadata/__init__.pyportedstring_value
Metadata.movementNumbermetadata/__init__.pyportedstring_value
Metadata.numbermetadata/__init__.pyportedstring_value
Metadata.opusNumbermetadata/__init__.pyportedstring_value
Metadata.titlemetadata/__init__.pyportedtitle
Metadata.bestTitlemetadata/__init__.pyportedbest_title
Metadata.convertValuemetadata/__init__.pymissingreads 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
RichMetadata.mergemetadata/__init__.pymissingtakes in another score's cached numbers
RichMetadata.getSourcePathmetadata/__init__.pymissingwhere the file sits, relative to the corpus
RichMetadata.updatemetadata/__init__.pymissingworks 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
RichMetadata.allmetadata/__init__.pymissingthe cached numbers beside the metadata
indexScoreFilePathssearch/segment.pymissingindexes the scores at a list of paths, which means reading files
indexOnePathsearch/segment.pymissingindexes the score at a path, likewise
saveScoreDictsearch/segment.pymissingwrites an index to a file
loadScoreDictsearch/segment.pymissingreads an index back
getDifflibOrPyLevsearch/segment.pymissingchooses between two Python libraries for the string comparison; search::difflib is the one difflib.SequenceMatcher ratio, ported
ReductiveNote.isParsedanalysis/reduction.pyportedis_parsed
ReductiveNote.getNoteAndTextExpressionanalysis/reduction.pyportednote_and_text_expression
PartReduction.processanalysis/reduction.pyportedweighted_spans
PartReduction.getGraphHorizontalBarWeightedDataanalysis/reduction.pymissingthe spans arranged for music21's bar graph; weighted_spans is what they say
ElementTimespan.newtree/spans.pymissinga copy with some of its values changed, which a value type here is made afresh
ElementTimespan.makeElementtree/spans.pymissingthe element itself, which an ElementTimespan holds a reference to
Timespan.newtree/spans.pymissinga copy with some of its values changed
Timespan.canMergetree/spans.pymissingwhether two timespans may be joined, which only the tree's own merging asks
Timespan.mergeWithtree/spans.pymissingjoins two timespans
Timespan.splitAttree/spans.pymissingcuts a timespan in two
TimespanTree.removeTimespanListtree/timespanTree.pyportedremove_timespan_list
TimespanTree.removeTimespantree/timespanTree.pyportedremove_timespan
TimespanTree.splitAttree/timespanTree.pyportedsplit_at
TimespanTree.toPartwiseTimespanTreestree/timespanTree.pyportedto_partwise_timespan_trees
Verticality.beatStrengthtree/verticality.pymissingthe 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
listOfTreesByClasstree/fromStream.pymissinga tree per part per class, which the caller builds of what as_timespans reads
asTreetree/fromStream.pyportedas_timespans
makeFastShallowTreeFromSortedStreamtree/fromStream.pymissinga tree of one stream's own elements with nothing nested, built without sorting; the crate sorts once and keeps a list
chordifiedtree/toStream.pyportedchordify
partwisetree/toStream.pymissingthe timespans written back out as a part each, which is the score they were read from
Feature.prepareVectorsfeatures/base.pymissingmakes room for the numbers before they are worked out, which building one does
Feature.normalizefeatures/base.pymissingdivides the numbers by their sum, which Extractor::extract does where the extractor asks for it
StreamForms.keysfeatures/base.pymissingthe names music21 looks a form up by
StreamForms.formPartitionByInstrumentfeatures/base.pyportedpartition_by_instrument
StreamForms.formSetClassHistogramfeatures/base.pymissinghow often each set class comes, which the extractors that read it work out where they read it
StreamForms.formPitchClassSetHistogramfeatures/base.pymissinghow often each pitch-class set comes, likewise
StreamForms.formTypesHistogramfeatures/base.pymissinghow often each written value comes, likewise
StreamForms.formGetElementsByClassMeasurefeatures/base.pymissingthe measures of the stream, which Stream::measures answers
StreamForms.formChordifyfeatures/base.pyportedchordified_chords
StreamForms.formQuarterLengthHistogramfeatures/base.pyportedquarter_length_histogram
StreamForms.formMidiPitchHistogramfeatures/base.pyportedmidi_pitch_histogram
StreamForms.formPitchClassHistogramfeatures/base.pyportedpitch_class_histogram
StreamForms.formMidiIntervalHistogramfeatures/base.pyportedmidi_interval_histogram
StreamForms.formContourListfeatures/base.pyportedcontour_list
StreamForms.formSecondsMapfeatures/base.pyportedseconds_map
StreamForms.formBeatHistogramfeatures/base.pymissinghow often each beat strength comes, which the extractor reading it works out
DataInstance.setupPostStreamParsefeatures/base.pymissingthe second half of reading the stream in, which building one does in one
DataInstance.setClassLabelfeatures/base.pymissingthe class a subject belongs to for the data set it is in; DataSet::add_data takes it beside the subject
DataInstance.getClassValuefeatures/base.pymissingthat class, likewise
DataInstance.getIdfeatures/base.pymissingthe name a subject goes by, which DataSet::add_data takes beside it
DataInstance.parseStreamfeatures/base.pyportednew
handlePitchWithAccidentalbraille/basic.pyportednote_to_braille
handleArticulationsbraille/basic.pyportednote_to_braille
handleExpressionsbraille/basic.pyportednote_to_braille
setGroupingGlobalsbraille/segment.pymissingmusic21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says instead
splitMeasurebraille/segment.pymissingcuts a measure in two so that the braille fits, which split_note_grouping does of the grouping
getNotesWithinDurationalpha/analysis/fixer.pyportednotes_within_duration
OrnamentFixer.findOrnamentalpha/analysis/fixer.pyportedfind_ornament
OrnamentFixer.addOrnamentalpha/analysis/fixer.pymissingwrites the ornament onto the read note, which fix does where it finds one
OrnamentFixer.fixalpha/analysis/fixer.pyportedfix
ScoreCorrector.runomr/correctors.pyportedrun
ScoreCorrector.runPriorModelomr/correctors.pymissingboth models run and the score corrected, which run does
ScoreCorrector.getAllHashesomr/correctors.pyportedall_hashes
ScoreCorrector.getSinglePartomr/correctors.pyportedsingle_part_mut
ScoreCorrector.runHorizontalCorrectionModelomr/correctors.pyportedrun_horizontal_correction_model
ScoreCorrector.getMeasureSliceomr/correctors.pyportedslice_hashes
ScoreCorrector.getAllIncorrectMeasuresomr/correctors.pyportedall_incorrect_measures
ScoreCorrector.verticalProbabilityDistomr/correctors.pyportedvertical_probability_dist
ScoreCorrector.getVerticalProbabilityDistributionSinglePartomr/correctors.pyportedvertical_probability_dist_of_part
ScoreCorrector.getVerticalProbabilityDistributionSinglePartSingleMeasureomr/correctors.pyportedvertical_probability_dist_of_measure
ScoreCorrector.runVerticalSearchomr/correctors.pyportedrun_vertical_search
ScoreCorrector.substituteOneMeasureContentsForAnotheromr/correctors.pyportedsubstitute_measure
ScoreCorrector.runVerticalCorrectionModelomr/correctors.pyportedrun_vertical_correction_model
ScoreCorrector.generateCorrectedScoreomr/correctors.pyportedgenerate_corrected_score
evaluateCorrectingModelomr/evaluators.pyportedevaluate_correcting_model
autoCorrelationBestMeasureomr/evaluators.pyportedauto_correlation_best_measure
OmrGroundTruthPair.debugomr/evaluators.pymissingmusic21's switch for printing what it is doing
OmrGroundTruthPair.parseAllomr/evaluators.pymissingreads both scores from their files
OmrGroundTruthPair.hashAllomr/evaluators.pymissinghashes both scores, which building the pair does
OmrGroundTruthPair.getOmrScoreomr/evaluators.pyportedomr
OmrGroundTruthPair.getGroundScoreomr/evaluators.pyportedground
OmrGroundTruthPair.substCostomr/evaluators.pymissingwhat a substitution costs, which the hashes' difference says
OmrGroundTruthPair.insertCostomr/evaluators.pymissingwhat an insertion costs, which is one everywhere
OmrGroundTruthPair.deleteCostomr/evaluators.pymissingwhat a deletion costs, likewise
OmrGroundTruthPair.minEditDistomr/evaluators.pyportedmin_edit_distance
OmrGroundTruthPair.getDifferencesomr/evaluators.pyporteddifferences
getFrequenciesFromMicrophoneaudioSearch/__init__.pymissinglistens to a microphone, which the library does not do
getFrequenciesFromAudioFileaudioSearch/__init__.pyportedfrequencies_from_wav
getFrequenciesFromPartialAudioFileaudioSearch/__init__.pymissingreads part of a file as it is being recorded
ContiguousSegmentOfNotes.startMeasureNumbersearch/serial.pyportedstart_measure
ContiguousSegmentOfNotes.startOffsetsearch/serial.pyportedstart_offset
ContiguousSegmentOfNotes.getActiveMatchedRowssearch/serial.pymissingtwo 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
ContiguousSegmentOfNotes.zeroCenteredTransformationsFromMatchedsearch/serial.pyportedzero_centered_transformations_from_matched
ContiguousSegmentOfNotes.originalCenteredTransformationsFromMatchedsearch/serial.pyportedoriginal_centered_transformations_from_matched
ContiguousSegmentOfNotes.readPitchClassesFromBottomsearch/serial.pyportedpitch_classes_from_bottom
ContiguousSegmentOfNotes.getDistinctPitchClassessearch/serial.pyporteddistinct_pitch_classes
ContiguousSegmentSearcher.getSearchBoundMethodsearch/serial.pymissingmusic21 chooses a method by name for each way of reading repetitions; the crate's one walk takes Repetitions as an argument
ContiguousSegmentSearcher.addActiveChordssearch/serial.pymissinga step inside that walk: the crate reads a chord's pitch classes where it meets one
ContiguousSegmentSearcher.searchIncludeAllExcludesearch/serial.pymissingone of the twelve methods that choice picks between, which the one walk answers for
ContiguousSegmentSearcher.searchIncludeAllIncludesearch/serial.pymissingas searchIncludeAllExclude
ContiguousSegmentSearcher.searchSkipConsecutiveExcludesearch/serial.pymissingas searchIncludeAllExclude
ContiguousSegmentSearcher.searchSkipConsecutiveIncludesearch/serial.pymissingas searchIncludeAllExclude
ContiguousSegmentSearcher.searchIgnoreAllExcludesearch/serial.pymissingas searchIncludeAllExclude
ContiguousSegmentSearcher.searchIgnoreAllIncludesearch/serial.pymissingas searchIncludeAllExclude
ContiguousSegmentSearcher.searchRowsOnlyExcludesearch/serial.pymissingas searchIncludeAllExclude
ContiguousSegmentSearcher.searchRowsOnlyIncludesearch/serial.pymissingas searchIncludeAllExclude
SegmentMatcher.getContiguousSegmentsByLengthsearch/serial.pymissingthe searcher's by_length, which find asks for itself
SegmentMatcher.findOneIgnoreAllsearch/serial.pymissingone of the two branches of music21's find, which it picks by how repetitions are read; the crate's find is the one walk
SegmentMatcher.findOneOtherRepssearch/serial.pymissingthe other branch of find
ChordReducer.measureSlicesanalysis/reduceChords.pyportedmeasure_slices
ChordReducer.sliceWeightsanalysis/reduceChords.pyportedslice_weights
ChordReducer.keepHeaviestSlicesanalysis/reduceChords.pyportedkeep_heaviest_slices
NoteGroupingTranscriber.translateNotebraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.translateRestbraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.translateChordbraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.translateDynamicbraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.translateTextExpressionbraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.translateBarlinebraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.translateClefbraille/noteGrouping.pymissinga branch of the walk
NoteGroupingTranscriber.optionallyAddDotToPreviousbraille/noteGrouping.pymissingpart of the walk, which writes the dot where the element before it needs one
resetSubConvertersconverter/__init__.pymissingthe subconverter machinery: the readers are the crate's own, chosen by format
registerSubConverterconverter/__init__.pymissingthe subconverter machinery, as resetSubConverters
unregisterSubConverterconverter/__init__.pymissingthe subconverter machinery, as resetSubConverters
freezeconverter/__init__.pymissingmusic21's pickle cache, which the wheel does not keep: every parse reads the file
freezeStrconverter/__init__.pymissingmusic21's pickle cache, as freeze
thawStrconverter/__init__.pymissingmusic21's pickle cache, as freeze
getLocalPathscorpus/__init__.pymissingthe local corpus, a setting of music21's environment
addPathcorpus/__init__.pymissingthe local corpus, as getLocalPaths
cacheMetadatacorpus/__init__.pymissingthe corpus's metadata bundles, which the wheel does not keep
getComposercorpus/__init__.pymissinga search of the metadata bundles, as cacheMetadata
noCorpuscorpus/__init__.pymissingmusic21's installation without its corpus, which the wheel answers by MUSIC21_RS_CORPUS

A member listed as ported is one the crate has a function for and the facade has not reached yet, which makes it the cheapest kind to close.

In the wheel only

137 members

music21 memberWhy the crate has no function for it
answered by the facade alone — 137
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 names
Pitch.informClientpitch.pyobserver callback for a containing note; there is none
Scalescale/__init__.pythe abstract base
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 them
ConcreteScalescale/__init__.pyrealized by Scale, StepScale and ScalaScale
DiatonicScalescale/__init__.pythe diatonic modes are ScaleType variants
Duration.informClientduration.pyobserver callback for a containing note; there is none
Duration.currentComponentsduration.pythe working-out is not deferred here, so there is no half-worked-out state to read
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 was
Sieve.setZsieve.pythe range is an argument of each question here, not state on the sieve
Sieve.setZRangesieve.pythe range is an argument of each question here, not state on the sieve
Sieve.setSegmentFormatsieve.pythe segment format is an argument of each question here, not state on the sieve
Sieve.representsieve.pythe sieve is written by Display, which is not a function the map can name
Volume.cachedRealizedvolume.pythe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does
Volume.cachedRealizedStrvolume.pythe crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does
CTSong.toScoreromanText/clercqTemperley.pymusic21's own deprecated name for toPart, which it will take out
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 back
CTRule.expandExpansionContentromanText/clercqTemperley.pya step inside the expansion, which the crate drives from the song rather than from the rule keeping the state
CTRule.expandSimpleContentromanText/clercqTemperley.pya step inside the expansion, as expandExpansionContent
CTRule.addOptionalTieAndLyricsromanText/clercqTemperley.pya step inside the expansion, which ties the chord before as it writes the one after
CTRule.insertKsTsromanText/clercqTemperley.pya step inside the expansion: the crate writes the key and the meter into a measure as it builds it
getPathsscale/scala/__init__.pywhere the archive's files sit on disk; the archive here is one bundled table and has no paths
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 it
MeterTerminal.modifymeter/core.pyno reason given
MeterNode.subdividemeter/core.pyno reason given
MeterSequence.modifymeter/core.pyno reason given
MeterSequence.loadmeter/core.pyraises in music21, since a sequence cannot change; a new one is built instead
MeterSequence.partitionedmeter/core.pyone method dispatching on the type of what it is handed; the three partitions it dispatches to are each ported
Segment.singlePossibilityRulesfiguredBass/segment.pymusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
Segment.consecutivePossibilityRulesfiguredBass/segment.pymusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
Segment.specialResolutionRulesfiguredBass/segment.pymusic21's table of its own Python functions for printing; the rules are Rules and the segment runs them
MelodicIntervalDiversity.solutionToColoranalysis/discrete.pythe colour a count is drawn in; presentation
EnharmonicSimplifier.getProductanalysis/enharmonics.pylists every combination of the spellings at once; best_choice walks them one at a time
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 here
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 key
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 carries
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 in
Trigram.measuretext.pythe step that counts the letter triples, which building one does
LayoutBaselayout.pythe class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds
Systemlayout.pya system of such a score
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 music21
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 music21
TextStylePlacementstyle.pya text style that also says which side of the staff it is on, which is display::Drawn here
BezierStylestyle.pythe curve of a slur
LineStylestyle.pythe dashes of a line
StreamStylestyle.pyhow a whole stream is drawn
BeamStylestyle.pyhow a beam is drawn
SpannerBundlespanner.pythe collection music21 keeps a stream's spanners in; a crate stream holds its own
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 take
Date.loadDatetimemetadata/primitives.pyreads a date out of one of Python's, which the crate has no type for: a caller hands the parts over
Date.datetimemetadata/primitives.pyanswers one of Python's datetimes, likewise
DatePrimitive.datetimemetadata/primitives.pyanswers one of Python's datetimes for the first date, which the crate has no type for
Contributor.agemetadata/primitives.pyhow long they lived, which is arithmetic over two dates a caller has
IndexedLyric.modifysearch/lyrics.pya named tuple's _replace, which is Python's own
TimespanTree.indextree/timespanTree.pywhere a timespan sits in the tree, which is its place in the list here
TimespanTree.elementtree/timespanTree.pythe element a timespan holds, which ElementTimespan::element answers
FeatureExtractor.setDatafeatures/base.pyhands the extractor the stream to read, which extract takes as an argument
FeatureExtractor.fillFeatureAttributesfeatures/base.pycopies the extractor's own id and name onto the feature it is filling in
FeatureExtractor.prepareFeaturefeatures/base.pymakes the blank feature and fills its attributes in, which blank answers
FeatureExtractor.processfeatures/base.pythe reading itself, which is the row's own function and runs in extract
DataSet.addMultipleDatafeatures/base.pyadds several subjects at once, which is add_data in a loop
DataSet.writefeatures/base.pywrites the table to a file, which the library does not do: to_text is the text to write
opusToBraillebraille/translate.pyevery score of an opus one after another, which is score_to_braille of each
makeBrailleDictionarybraille/lookup.pybuilds music21's dictionary of cells at import; the tables here are written out
setAffinityCodebraille/segment.pywhich kind of segment an element belongs in, which extract_braille_elements says as it reads
areGroupingsIdenticalbraille/segment.pywhether two groupings are the same, which the segment asks of its own
BrailleSegment.addDummyRestsbraille/segment.pya step of the transcription: the rests that stand before a measure number
BrailleSegment.extractMeasureNumberbraille/segment.pya step of the transcription
BrailleSegment.extractHeadingbraille/segment.pya step of the transcription: the key, the meter and the tempo over the first measure
BrailleSegment.extractInaccordGroupingbraille/segment.pya step of the transcription: the voices written one after another
BrailleSegment.extractLongExpressionGroupingbraille/segment.pya step of the transcription
BrailleSegment.showLeadingOctaveFromNoteGroupingbraille/segment.pya step of the transcription: whether the first note of a grouping shows its octave
BrailleSegment.needsSplitToFitbraille/segment.pya step of the transcription: whether a grouping must be split to fit the line
BrailleSegment.splitNoteGroupingAndTranscribebraille/segment.pya step of the transcription, which split_note_grouping does the splitting half of
BrailleSegment.extractNoteGroupingbraille/segment.pya step of the transcription
BrailleSegment.addRepeatSymbolsbraille/segment.pya step of the transcription: the sign for a measure repeated
BrailleSegment.extractSignatureGroupingbraille/segment.pya step of the transcription
BrailleSegment.extractTempoTextGroupingbraille/segment.pya step of the transcription
BrailleSegment.consolidatebraille/segment.pya step of the transcription: the groupings of one kind joined into one
BrailleGrandSegment.extractHeadingbraille/segment.pya step of the transcription
BrailleGrandSegment.extractNoteGroupingbraille/segment.pya step of the transcription
StreamAligner.showChangesalpha/analysis/aligner.pyprints the changes, and colours the notes of the score to show them
Hasher.setupValidTypesAndStateVarsalpha/analysis/hasher.pyreads the switches into the state music21 hashes by, which are the fields of a Hasher here
Hasher.hashMeasuresalpha/analysis/hasher.pythe measures hashed one at a time, which is hash_stream of each
Hasher.addHashToFinalHashalpha/analysis/hasher.pyappends one hash to the list being built
Hasher.addNoteHashWithReferenceToFinalHashalpha/analysis/hasher.pyappends a note's hash with the note it came from, likewise
Hasher.addNoteHashToFinalHashalpha/analysis/hasher.pyappends a note's hash, likewise
EnharmonicFixer.isEnharmonicalpha/analysis/fixer.pywhether two notes sound alike, which is Pitch::is_enharmonic
EnharmonicFixer.hasAccalpha/analysis/fixer.pywhether a note carries an accidental, which is Pitch::accidental_is_written
EnharmonicFixer.hasNatAccalpha/analysis/fixer.pywhether it carries a natural, likewise
EnharmonicFixer.hasSharpFlatAccalpha/analysis/fixer.pywhether it carries a sharp or a flat, likewise
EnharmonicFixer.stepEqalpha/analysis/fixer.pywhether two notes stand on the same step
EnharmonicFixer.stepNotEqalpha/analysis/fixer.pywhether they do not
SinglePart.getMeasuresomr/correctors.pythe measures of the part, which the Stream it was read from holds
MeasureHash.setSequenceMatcheromr/correctors.pykeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported
MeasureHash.getProbabilityOnEqualityomr/correctors.pythe odds of two measures reading alike, which is the PROBABILITY_ON_EQUALITY constant
MeasureHash.getProbabilityOnOmissionomr/correctors.pythe odds of a note left out, PROBABILITY_ON_OMISSION
MeasureHash.getProbabilityOnAdditionomr/correctors.pythe odds of a note put in, PROBABILITY_ON_ADDITION
TransposedSegmentMatchersearch/serial.pyone of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes
TransformedSegmentMatchersearch/serial.pyMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other
MultisetSegmentMatchersearch/serial.pyMatching::Multiset, which compares the pitch classes in any order
TransposedMultisetMatchersearch/serial.pyMatching::TransposedMultiset
TransposedInvertedMultisetMatchersearch/serial.pyMatching::TransposedInvertedMultiset
SegmentMatcher.checkSearchedAlreadysearch/serial.pywhether a segment the same as one already searched for is to be passed over, which find keeps as it goes
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 are
SegmentMatcher.equalSubsetsearch/serial.pythe comparison Matching decides, which the crate does inside find
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 walks
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 reason
ChordReducer.fillBassGapsanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespans
ChordReducer.fillMeasureGapsanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespans
ChordReducer.fuseTimespansByPartanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespans
ChordReducer.qlbsmpConsonanceanalysis/reduceChords.pyone of ChordWeight's four, which ChordWeight::of weighs a chord by: this is the one a reduction weighs by
ChordReducer.quarterLengthBeatStrengthanalysis/reduceChords.pyone of ChordWeight's four, likewise
ChordReducer.quarterLengthBeatStrengthMeasurePositionanalysis/reduceChords.pyone of ChordWeight's four, likewise
ChordReducer.quarterLengthOnlyanalysis/reduceChords.pyone of ChordWeight's four, likewise, and the one computeMeasureChordWeights weighs by when it is handed none
ChordReducer.removeNonChordTonesanalysis/reduceChords.pya step run never takes: it joins the two spans of a passing or neighbour tone, editing that tree likewise
ChordReducer.removeShortTimespansanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespans
ChordReducer.removeVerticalDissonancesanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespans
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 walks
ChordReducer.splitByBassanalysis/reduceChords.pya step inside the reduction, as removeZeroDurationTimespans
NoteGroupingTranscriber.resetbraille/noteGrouping.pystate between groupings, which a function that takes the grouping has none of
NoteGroupingTranscriber.showClefSignsbraille/noteGrouping.pyread off the grouping, as music21's transcriber reads it: BrailleElementGrouping::show_clef_signs
NoteGroupingTranscriber.upperFirstInFingeringbraille/noteGrouping.pyread off the grouping, as showClefSigns: upper_first_in_note_fingering
NoteGroupingTranscriber.transcribeGroupbraille/noteGrouping.pythe whole of transcribe_note_grouping
NoteGroupingTranscriber.transcribeOneElementbraille/noteGrouping.pyone turn of that walk
toNotelanguageExcerpts/naturalLanguageObjects.pya note built on what from_language_name read, which is Note::new(pitch) here and is music21's own one-liner
toChordlanguageExcerpts/naturalLanguageObjects.pya chord built on what it read, as toNote
parseFileconverter/__init__.pyno reason given
parseDataconverter/__init__.pyno reason given
parseURLconverter/__init__.pyno reason given
parseconverter/__init__.pyno reason given
toDataconverter/__init__.pyno reason given
thawconverter/__init__.pymusic21's pickle cache, as freeze
getCorePathscorpus/__init__.pyno reason given
getPathscorpus/__init__.pyno reason given
getWorkcorpus/__init__.pyno reason given
parsecorpus/__init__.pyno reason given

What these answer is Python's rather than music theory's: a cached value, a callback from the object that holds it, an instrument, or a walk through the stream a note sits in. They are why the crate is not a superset of the wheel.