music21-rs

Wheel report

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

music21 API in the wheel 59.5% 973 of 1635 members; 662 lacking, 46 the crate has no function for
Own tests 356 passing, across 3 suites Median speedup 32.5× over music21 through the same Python API, across 24 operations Cost of the binding 3.3 µs a call, median, over the same call in Rust A whole program 1.00× median over 3927 of music21's own tests, installed over it Install size 5.6 MB what pip installs; music21 is 88.3 MB, 16× that music21's examples 79.5% 9191 of 11558 examples, across 47 modules
music21's docstrings 86.9% 1032 of 1188 docstrings, across 47 modules
music21's unit tests 100.0% 666 of 666 tests, across 47 modules
music21's own suite 0 regressions 5155 passing; the 0 failing are music21's own or listed

The suites that test the wheel

5511 passing, all green

SuiteTestsResultPassedFailedCommand
Python parity and music21's doctests cratewheel passed 157 0 cargo test --manifest-path python-parity/Cargo.toml -- --test-threads=1
Python wheelmusic21_rs-0.10.0-cp313-cp313-manylinux_2_34_x86_64.whl wheel passed — — maturin build --release --manifest-path python/Cargo.toml
Python wheel tests wheel passed 199 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 5155 0 cargo run --release -p xtask --features python -- music21-suite

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

Speed and size against music21

wheel 32.5× median, across 24 cases

Casemusic21wheelwheel ×binding
construction
Pitch('C#4')1.5 µs2.0 µs0.8×+1.8 µs
Note('C#4')7.0 µs863 ns8.1×+729 ns
Interval('P5')15.0 µs462 ns32.5×+388 ns
Chord('C4 E4 G4')28.2 µs6.5 µs4.3×+5.9 µs
chord analysis
Chord.commonName5 chords893.1 µs12.5 µs71.2×+3.5 µs
Chord.root()5 chords194.8 µs15.9 µs12.2×—
Chord.inversion()5 chords291.0 µs7.8 µs37.4×+3.9 µs
Chord.forteClass5 chords418.7 µs9.8 µs42.7×+3.7 µs
Chord.primeForm5 chords421.3 µs10.5 µs40.2×+3.7 µs
Chord.intervalVector5 chords421.1 µs10.5 µs40.2×+3.2 µs
Chord.isDominantSeventh()5 chords412.9 µs7.6 µs54.0×+3.2 µs
Chord.orderedPitchClasses5 chords184.2 µs8.2 µs22.6×+3.3 µs
Chord: forteClass + primeForm + intervalVectorone chord, three questions93.7 µs3.8 µs24.6×+800 ns
pitch
Pitch.transpose('M3')41.9 µs2.6 µs15.9×+2.3 µs
Pitch.frequency1.4 µs2.2 µs0.7×+1.9 µs
Pitch.getEnharmonic()33.8 µs2.4 µs13.9×—
Interval(p1, p2)16.6 µs3.8 µs4.4×+3.5 µs
serial
pcToToneRow(...).matrix()4.2 ms5.9 µs711.1×+466 ns
ToneRow.zeroCenteredTransformation408.6 µs817 ns500.2×+321 ns
figured bass
Segment(G2, '7').allCorrectSinglePossibilities()4.4 ms83.9 µs52.1×+30.6 µs
Segment(G2, '7') to Segment(C3), a dominant seventh resolving17.2 ms340.6 µs50.5×+81.2 µs
Segment(C3) to Segment(D3, '4,3'), every pair of voicings6.2 ms154.8 µs39.8×+64.3 µs
warm object
Chord.commonName (cached)music21 memoizes120 ns78 ns1.5×—
Chord.forteClass (cached)music21 memoizes2.3 µs75 ns29.9×—

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

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

Testmusic21music21-rs-wheelmusic21-rs-wheel ×
furthest ahead
timeSignatureToMidiEvents (music21.midi.translate)404 ms3 ms137.09×
findTransformedHistorical (music21.serial.TwelveToneRow)92 ms1 ms78.64×
isTranspositionallySymmetrical (music21.chord.Chord)108 ms3 ms38.56×
testFigureFromChordAddOmit (music21.harmony.Test.testFigureFromChordAddOmit)100 ms3 ms32.67×
fromIntervalVector (music21.chord)59 ms2 ms27.04×
getZRelation (music21.chord.Chord)56 ms2 ms26.47×
findHistorical (music21.serial.TwelveToneRow)31 ms1 ms25.46×
testOctaveRepeatingScaleStepsReachingAnEnharmonicOctave (music21.scale.test_scale_main.Test.testOctaveRepeatingScaleStepsReachingAnEnharmonicOctave)68 ms3 ms24.50×
fromForteClass (music21.chord)39 ms2 ms21.79×
simplifyMultipleEnharmonics (music21.pitch)38 ms2 ms19.13×
testMelodicMinorB (music21.scale.test_scale_main.Test.testMelodicMinorB)40 ms2 ms18.68×
TranspositionChecker (music21.analysis.transposition)38 ms2 ms15.16×
furthest behind
testARFFNumericClassValues (music21.features.outputFormats.Test.testARFFNumericClassValues)17 ms2.00 s0.01×
testIncludeClassLabelAndId (music21.features.outputFormats.Test.testIncludeClassLabelAndId)30 ms1.98 s0.02×
testParallelRun (music21.features.base.Test.testParallelRun)334 ms2.31 s0.14×
testIncludeFlagsOff (music21.features.base.Test.testIncludeFlagsOff)445 ms2.40 s0.19×
test_makeBeams__paddingRight (music21.stream.tests.Test.test_makeBeams__paddingRight)2 ms10 ms0.23×
SaxophoneFractionFeature (music21.features.jSymbolic)4 ms13 ms0.33×
setMinorRootParse (music21.romanText.translate.PartTranslator)3 ms8 ms0.34×
populateFromSortedList (music21.tree.core.AVLTree)3 ms7 ms0.41×
testCoreUnit2 (music21.mei.test_base.Test.testCoreUnit2)5 ms12 ms0.43×
test_example04_4 (music21.braille.test.Test.test_example04_4)6 ms14 ms0.43×
quarterConversion (music21.duration)17 ms38 ms0.44×
testTextExpressionsD (music21.musicxml.test_xmlToM21.Test.testTextExpressionsD)12 ms24 ms0.49×

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

What each costs to install

music21
88.3 MBinstalled package, corpus and all
music21_rs wheel
5.6 MBwhat pip installs

Against music21's own tests

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

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

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

music21's API in the wheel

1635 members:973 in the wheel

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

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

music21WheelIn the crate
formatVectorStringin the wheelformat_vector_string
addin the wheeladd
annotateIntervalsin the wheelannotate_intervals
areZRelationsin the wheelare_z_relations
bassin the wheelbass
canBeDominantVin the wheelcan_be_dominant_v
canBeTonicin the wheelcan_be_tonic
closedPositionin the wheelclosed_position
containsSeventhin the wheelcontains_seventh
containsTriadin the wheelcontains_triad
geometricNormalFormin the wheelgeometric_normal_form
getChordStepin the wheelchord_step
getColorin the wheelcolor
getNoteheadin the wheelnotehead
getNoteheadFillin the wheelnotehead_fill
getStemDirectionin the wheelstem_direction
getTiein the wheeltie
getVolumein the wheelvolume
getZRelationin the wheelz_relation
hasAnyEnharmonicSpelledPitchesin the wheelhas_any_enharmonic_spelled_pitches
hasAnyRepeatedDiatonicNotein the wheelhas_any_repeated_diatonic_note
hasRepeatedChordStepin the wheelhas_repeated_chord_step
intervalFromChordStepin the wheelinterval_from_chord_step
inversionin the wheelinversion
setInversionin the wheelset_inversion
inversionNamein the wheelinversion_name
inversionTextin the wheelinversion_text
isAugmentedSixthin the wheelis_augmented_sixth
isAugmentedTriadin the wheelis_augmented_triad
isConsonantin the wheelis_consonant
isDiminishedSeventhin the wheelis_diminished_seventh
isSeventhOfTypein the wheelis_seventh_of_type
isDiminishedTriadin the wheelis_diminished_triad
isDominantSeventhin the wheelis_dominant_seventh
isFalseDiminishedSeventhin the wheelis_false_diminished_seventh
isFrenchAugmentedSixthin the wheelis_french_augmented_sixth
isGermanAugmentedSixthin the wheelis_german_augmented_sixth
isHalfDiminishedSeventhin the wheelis_half_diminished_seventh
isIncompleteMajorTriadin the wheelis_incomplete_major_triad
isIncompleteMinorTriadin the wheelis_incomplete_minor_triad
isItalianAugmentedSixthin the wheelis_italian_augmented_sixth
isMajorTriadin the wheelis_major_triad
isMinorTriadin the wheelis_minor_triad
isTranspositionallySymmetricalin the wheelis_transpositionally_symmetrical
isSeventhin the wheelis_seventh
isNinthin the wheelis_ninth
isSwissAugmentedSixthin the wheelis_swiss_augmented_sixth
isTriadin the wheelis_triad
removeRedundantPitchesin the wheelremove_redundant_pitches
removeRedundantPitchClassesin the wheelremove_redundant_pitch_classes
removeRedundantPitchNamesin the wheelremove_redundant_pitch_names
rootin the wheelroot
semiClosedPositionin the wheelsemi_closed_position
semitonesFromChordStepin the wheelsemitones_from_chord_step
setColorin the wheelset_color
setNoteheadin the wheelset_notehead
setNoteheadFillin the wheelset_notehead_fill
setStemDirectionin the wheelset_stem_direction
setTiein the wheelset_tie
setVolumein the wheelset_volume
simplifyEnharmonicsin the wheelsimplify_enharmonics
isSortedDiatonicAscendingin the wheelis_sorted_diatonic_ascending
sortAscendingin the wheelsort_ascending
sortChromaticAscendingin the wheelsort_chromatic_ascending
sortDiatonicAscendingin the wheelsort_diatonic_ascending
sortFrequencyAscendingin the wheelsort_frequency_ascending
transposein the wheeltranspose
chordTablesAddressin the wheelchord_tables_address_entry
commonNamein the wheelcommon_name
durationin the wheelduration
fifthin the wheelfifth
forteClassin the wheelforte_class
forteClassNumberin the wheelforte_class_number
forteClassTnin the wheelforte_class_tn
forteClassTnIin the wheelforte_class_tni
fullNamein the wheelfull_name
hasZRelationin the wheelhas_z_relation
intervalVectorin the wheelinterval_class_vector
intervalVectorStringin the wheelinterval_vector_string
isPrimeFormInversionin the wheelis_prime_form_inversion
multisetCardinalityin the wheelmultiset_cardinality
notesin the wheelnotes
normalOrderin the wheelnormal_order
normalOrderStringin the wheelnormal_order_string
orderedPitchClassesin the wheelpitch_classes
orderedPitchClassesStringin the wheelordered_pitch_classes_string
pitchClassCardinalityin the wheelpitch_class_cardinality
pitchClassesin the wheelnote_pitch_classes
pitchNamesin the wheelpitch_names
pitchedCommonNamein the wheelpitched_common_name
pitchesin the wheelpitches
primeFormin the wheelprime_form
primeFormStringin the wheelprime_form_string
qualityin the wheelquality
scaleDegreesin the wheelscale_degrees
seventhin the wheelseventh
thirdin 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 29 of 29
music21WheelIn the crate
genericin the wheelgeneric
namein the wheelshort_name
niceNamein the wheelname
simpleNamein the wheelsimple_name
simpleNiceNamein the wheelsimple_nice_name
semiSimpleNamein the wheelsemi_simple_name
semiSimpleNiceNamein the wheelsemi_simple_nice_name
directedNamein the wheeldirected_name
directedNiceNamein the wheeldirected_nice_name
directedSimpleNamein the wheeldirected_simple_name
directedSimpleNiceNamein the wheeldirected_simple_nice_name
semitonesin the wheelsemitones
directionin the wheeldirection
specifierin the wheelspecifier
specificNamein the wheelspecific_name
isDiatonicStepin the wheelis_diatonic_step
isChromaticStepin the wheelis_chromatic_step
isStepin the wheelis_step
isSkipin the wheelis_skip
isConsonantin the wheelis_consonant
complementin the wheelcomplement
intervalClassin the wheelinterval_class
centsin the wheelcents
transposePitchin the wheeltranspose_pitch
reversein the wheelreversed
pitchStartin the wheelpitch_start
pitchEndin the wheelpitch_end
noteStartin the wheelnote_start
noteEndin the wheelnote_end
▶GenericIntervalinterval.py wheel 26 of 26
music21WheelIn the crate
valuein the wheelvalue
directedin the wheeldirected
undirectedin the wheelundirected
directionin the wheeldirection
isSkipin the wheelis_skip
isDiatonicStepin the wheelis_diatonic_step
isStepin the wheelis_step
isUnisonin the wheelis_unison
simpleUndirectedin the wheelsimple_undirected
semiSimpleUndirectedin the wheelsemi_simple_undirected
undirectedOctavesin the wheelundirected_octaves
octavesin the wheeloctaves
simpleDirectedin the wheelsimple_directed
semiSimpleDirectedin the wheelsemi_simple_directed
perfectablein the wheelis_perfectable
niceNamein the wheelnice_name
simpleNiceNamein the wheelsimple_nice_name
semiSimpleNiceNamein the wheelsemi_simple_nice_name
staffDistancein the wheelstaff_distance
mod7inversionin the wheelmod7_inversion
mod7in the wheelmod7
complementin the wheelcomplement
reversein the wheelreverse
transposePitchin the wheeltranspose_pitch
transposePitchKeyAwarein the wheeltranspose_pitch_key_aware
getDiatonicin the wheelget_diatonic
▶DiatonicIntervalinterval.py wheel 25 of 25
music21WheelIn the crate
namein the wheelname
niceNamein the wheelnice_name
specificNamein the wheelspecific_name
simpleNamein the wheelsimple_name
simpleNiceNamein the wheelsimple_nice_name
semiSimpleNamein the wheelsemi_simple_name
semiSimpleNiceNamein the wheelsemi_simple_nice_name
directionin the wheeldirection
directedNamein the wheeldirected_name
directedNiceNamein the wheeldirected_nice_name
directedSimpleNamein the wheeldirected_simple_name
directedSimpleNiceNamein the wheeldirected_simple_nice_name
directedSemiSimpleNamein the wheeldirected_semi_simple_name
directedSemiSimpleNiceNamein the wheeldirected_semi_simple_nice_name
isStepin the wheelis_step
isDiatonicStepin the wheelis_diatonic_step
isSkipin the wheelis_skip
perfectablein the wheelis_perfectable
mod7inversionin the wheelmod7_inversion
mod7in the wheelmod7
reversein the wheelreverse
getChromaticin the wheelget_chromatic
transposePitchin the wheeltranspose_pitch
specifierAbbreviationin the wheelspecifier_abbreviation
centsin the wheelcents
▶ChromaticIntervalinterval.py wheel 13 of 13
music21WheelIn the crate
centsin the wheelcents
directedin the wheeldirected
undirectedin the wheelundirected
directionin the wheeldirection
mod12in the wheelmod12
simpleUndirectedin the wheelsimple_undirected
simpleDirectedin the wheelsimple_directed
intervalClassin the wheelinterval_class
isChromaticStepin the wheelis_chromatic_step
isStepin the wheelis_step
reversein the wheelreverse
getDiatonicin the wheelget_diatonic
transposePitchin 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 7 of 7
music21WheelIn the crate
asKeyin the wheelas_key
alteredPitchesin the wheelaltered_pitches
accidentalByStepin the wheelaccidental_by_step
transposein the wheeltranspose
transposePitchFromCin the wheeltranspose_pitch_from_c
getScalein the wheelscale
sharpsin the wheelsharps
▶Keykey.py wheel 6 of 6

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

music21WheelIn the crate
relativein the wheelrelative
parallelin the wheelparallel
tonicPitchNameWithCasein the wheeltonic_pitch_name_with_case
deriveByDegreein the wheelderive_by_degree
tonalCertaintyin the wheeltonal_certainty
transposein the wheeltranspose
▶ConcreteScalescale/__init__.py wheel 25 of 27
2 not in wheel
music21WheelIn the crate
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
isConcretein the wheelevery Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one
namein the wheelmusic21_name
getTonicin the wheeltonic
abstractin 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
getDegreeMaxUniquein the wheeldegree_count
transposein the wheeltranspose
tunein the wheeltune
romanNumeralin the wheelroman_numeral
getPitchesin the wheelpitches
getChordin the wheelchord
pitchFromDegreein the wheelpitch_at_degree
pitchesFromScaleDegreesin the wheelpitches_from_scale_degrees
intervalBetweenDegreesin the wheelinterval_between_degrees
getScaleDegreeFromPitchin the wheeldegree_of
getScaleDegreeAndAccidentalFromPitchin the wheeldegree_and_accidental_of
solfegin the wheelsolfeg
nextPitchin the wheelnext_pitch_above
isNextin the wheelis_next
matchin the wheelmatch_pitches
findMissingin the wheelfind_missing
deriveRankedin the wheelderive_ranked
derivein the wheelderive
deriveAllin the wheelderive_all
deriveByDegreein the wheelderive_by_degree
getScalaDatain the wheelscala_data
▶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 11 of 11
music21WheelIn the crate
adjustMinorVIandVIIByQualityin the wheeladjust_minor_vi_and_vii_by_quality
transposein the wheeltranspose
romanNumeralin the wheelroman_numeral
figurein the wheelfigure
figureAndKeyin the wheelfigure_and_key
keyin the wheelkey
scaleDegreeWithAlterationin the wheelscale_degree_with_alteration
bassScaleDegreeFromNotationin the wheelbass_scale_degree_from_notation
functionalityScorein the wheelfunctionality_score
isNeapolitanin the wheelis_neapolitan
isMixturein the wheelis_mixture
▶TimeSignaturemeter/base.py wheel 33 of 33

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
resetValuesin the wheelrebuilding a meter in place; a new one is built instead
loadin the wheelrebuilding a meter in place; a new one is built instead
ratioStringin the wheelratio_string
ratioEqualin the wheelratio_equal
numeratorin the wheelnumerator
denominatorin the wheeldenominator
barDurationin the wheelbar_duration
beatLengthToQuarterLengthRatioin the wheelbeat_length_to_quarter_length_ratio
quarterLengthToBeatLengthRatioin the wheelquarter_length_to_beat_length_ratio
beatCountin the wheelbeat_count
beatCountNamein the wheelbeat_count_name
beatDurationin the wheelbeat_duration
beatDivisionCountin the wheelbeat_division_count
beatDivisionCountNamein the wheelbeat_division_count_name
beatDivisionDurationsin the wheelbeat_division_durations
beatSubDivisionDurationsin the wheelbeat_sub_division_durations
classificationin the wheelclassification
summedNumeratorin the wheelsummed_numerator
getBeamsin the wheelbeams_for
setDisplayin the wheelset_display
getAccentin the wheelaccent
setAccentWeightin the wheelset_accent_weight
averageBeatStrengthin the wheelaverage_beat_strength
getMeasureOffsetOrMeterModulusOffsetin the wheeloffset_in_bar
getAccentWeightin the wheelaccent_weight
getBeatin the wheelbeat_at_offset
getBeatOffsetsin the wheelbeat_offsets
getBeatDurationin the wheelbeat_duration
getOffsetFromBeatin the wheeloffset_from_beat
getBeatProgressin the wheelbeat_progress
getBeatProportionin the wheelbeat_proportion
getBeatProportionStrin the wheelbeat_proportion_string
getBeatDepthin the wheelbeat_depth
▶MetronomeMarktempo.py wheel 10 of 10
music21WheelIn the crate
referentin the wheelreferent
numberSoundingin the wheelnumber_sounding
getQuarterBPMin the wheelquarter_bpm
setQuarterBPMin the wheelquarter_bpm
getTextExpressionin the wheeltext_expression
getEquivalentByReferentin the wheelequivalent_by_referent
getMaintainedNumberWithReferentin the wheelmaintained_number_with_referent
secondsPerQuarterin the wheelseconds_per_quarter
durationToSecondsin the wheelduration_to_seconds
secondsToDurationin the wheelseconds_to_duration
▶MetricModulationtempo.py wheel 8 of 8

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

music21WheelIn the crate
oldMetronomein the wheelold_metronome
oldReferentin the wheelold_referent
newMetronomein the wheelnew_metronome
newReferentin the wheelnew_referent
numberin the wheelnumber
updateByContextin the wheelupdate_from
setEqualityByReferentin the wheelset_equality_by_referent
setOtherByReferentin the wheelset_other_by_referent
▶Instrumentinstrument.py wheel 4 of 4

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

music21WheelIn the crate
bestNamein the wheelbest_name
partIdRandomizein 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
instrumentIdRandomizein 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
autoAssignMidiChannelin the wheelauto_assign_midi_channel
▶StringInstrumentinstrument.py wheel 1 of 1

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

music21WheelIn the crate
stringPitchesin the wheelstring_pitches
▶UnpitchedPercussioninstrument.py wheel 1 of 1

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

music21WheelIn the crate
modifierin 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 0 of 2
2 not in wheel

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
midiPitchToInstrumentnot in the wheelfor_percussion_key
midiInstrumentToPitchnot in 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 10 of 10
music21WheelIn the crate
pitchClassesin the wheelpitch_classes
noteNamesin the wheelnote_names
isTwelveToneRowin the wheelis_twelve_tone_row
makeTwelveToneRowin the wheelmake_twelve_tone_row
isSameRowin the wheelis_same_row
getIntervalsAsStringin the wheelintervals_as_string
zeroCenteredTransformationin the wheelzero_centered_transformation
originalCenteredTransformationin the wheeloriginal_centered_transformation
findZeroCenteredTransformationsin the wheelfind_zero_centered_transformations
findOriginalCenteredTransformationsin the wheelfind_original_centered_transformations
▶TwelveToneRowserial.py wheel 7 of 7
music21WheelIn the crate
matrixin the wheelmatrix
findHistoricalin the wheelfind_historical
findTransformedHistoricalin the wheelfind_transformed_historical
isAllIntervalin the wheelis_all_interval
getLinkClassificationin the wheellink_classification
isLinkChordin the wheelis_link_chord
areCombinatorialin 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 30 of 30
music21WheelIn the crate
keyin the wheelkey
v1n1in the wheelv1n1
v1n2in the wheelv1n2
v2n1in the wheelv2n1
v2n2in the wheelv2n2
motionTypein the wheelmotion_type
noMotionin the wheelno_motion
obliqueMotionin the wheeloblique_motion
similarMotionin the wheelsimilar_motion
parallelMotionin the wheelparallel_motion
contraryMotionin the wheelcontrary_motion
outwardContraryMotionin the wheeloutward_contrary_motion
inwardContraryMotionin the wheelinward_contrary_motion
antiParallelMotionin the wheelanti_parallel_motion
parallelIntervalin the wheelparallel_interval
parallelFifthin the wheelparallel_fifth
parallelOctavein the wheelparallel_octave
parallelUnisonin the wheelparallel_unison
parallelUnisonOrOctavein the wheelparallel_unison_or_octave
hiddenIntervalin the wheelhidden_interval
hiddenFifthin the wheelhidden_fifth
hiddenOctavein the wheelhidden_octave
voiceOverlapin the wheelvoice_overlap
voiceCrossingin the wheelvoice_crossing
isProperResolutionin the wheelis_proper_resolution
leapNotSetWithStepin the wheelleap_not_set_with_step
modalOpeningin the wheelmodal_opening
opensIncorrectlyin the wheelopens_incorrectly
clausulaVerain the wheelclausula_vera
closesIncorrectlyin 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 8 of 8

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

music21WheelIn the crate
tiein the wheeltie
lyricin the wheellyric
addLyricin the wheeladd_lyric
insertLyricin the wheelinsert_lyric
fullNamein the wheelfull_name
pitchesin the wheelpitches
augmentOrDiminishin the wheelaugment_or_diminish
getGracein the wheelgrace_note
▶NotRestnote.py wheel 8 of 8

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

music21WheelIn the crate
stemDirectionin the wheelstem_direction
noteheadin the wheelnotehead
noteheadFillin the wheelnotehead_fill
noteheadParenthesisin the wheelnotehead_parenthesis
hasVolumeInformationin the wheelhas_volume_information
volumein the wheelvolume
storedInstrumentin the wheelstored_instrument
getInstrumentin 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 1 of 1

A silence of a written length.

music21WheelIn the crate
fullNamein the wheelfull_name
▶ChordBasechord/__init__.py wheel 7 of 7

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

music21WheelIn the crate
addin the wheeladd
removein the wheelremove
notesin the wheelnotes
tiein the wheeltie
volumein the wheelvolume
hasComponentVolumesin the wheelhas_component_volumes
setVolumesin 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 8 of 8

A pitch and an optional duration.

music21WheelIn the crate
namein the wheelpitch_name
nameWithOctavein the wheelpitch_name_with_octave
stepin the wheelstep
octavein the wheeloctave
pitchesin the wheelpitches
transposein the wheeltranspose
fullNamein the wheelfull_name
pitchChangedin the wheelobserver callback; there is none
▶ChordSymbolharmony.py wheel 3 of 3
music21WheelIn the crate
findFigurein the wheelfind_figure
inversionIsValidin the wheelinversion_is_valid
transposein 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 0 of 3
3 not in wheel

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
combinedChordnot in the wheelchord
tabToM21not in the wheelelement
populateFromRownot in the wheelfrom_row
▶TabChordV2romanText/tsvConverter.py wheel 0 of 4
4 not in wheel

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
beatnot in the wheelbeat
measurenot in the wheelmeasure
local_keynot in the wheellocal_key
global_keynot in 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 0 of 7
7 not in wheel

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
getFormnot in the wheelform_of
handleAddedTonesnot in the wheelhandle_added_tones
localKeyAsRnnot in the wheellocal_key_as_roman
isMinornot in the wheelis_minor
characterSwapsnot in the wheelcharacter_swaps
getLocalKeynot in the wheellocal_key
getSecondaryKeynot in the wheelsecondary_key
▶CTSongromanText/clercqTemperley.py wheel 0 of 8
8 not in wheel

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
parsenot in the wheelparse
titlenot in the wheeltitle
commentsnot in the wheelcomments
rulesnot in the wheelrules
homeTimeSignot in the wheelhome_time_signature
homeKeynot in the wheelhome_key
toPartnot in the wheelto_part
toScorenot in the wheelmusic21's own deprecated name for toPart, which it will take out
▶CTRuleromanText/clercqTemperley.py wheel 0 of 12
12 not in wheel

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
parentnot in 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
expandnot in the wheelexpand
expandExpansionContentnot in the wheela step inside the expansion, which the crate drives from the song rather than from the rule keeping the state
expandSimpleContentnot in the wheela step inside the expansion, as expandExpansionContent
isSamenot in the wheelis_same
addOptionalTieAndLyricsnot in the wheela step inside the expansion, which ties the chord before as it writes the one after
insertKsTsnot in the wheela step inside the expansion: the crate writes the key and the meter into a measure as it builds it
fixupChordAtomnot in the wheelfixup_chord_atom
musicTextnot in the wheelmusic_text
commentnot in the wheelcomment
LHSnot in the wheelleft_hand_side
sectionNamenot in 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 2 of 3
1 not in wheel

Module-level helpers.

music21WheelIn the crate
getPathsnot in 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 10 of 10

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

music21WheelIn the crate
ratioEqualin the wheelratio_equal
subdivideByCountin the wheelsubdivide_by_count
subdivideByListin the wheelsubdivide_by_list
subdivideByOtherin the wheelsubdivide_by_other
subdividein the wheelsubdivide
weightin the wheelweight
numeratorin the wheelnumerator
denominatorin the wheeldenominator
durationin the wheelquarter_length
depthin the wheeldepth
▶MeterSequencemeter/core.py wheel 25 of 25

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
partitionDisplayin the wheelpartition_display
getPartitionOptionsin the wheelpartition_options
partitionByCountin the wheelpartition_by_count
partitionByListin the wheelpartition_by_list
partitionByOtherMeterSequencein the wheelpartition_by_other
partitionin the wheelone setter dispatching on the type of what it is handed; the three partitions it dispatches to are each ported
subdividePartitionsEqualin the wheelsubdivide_partitions_equal
subdivideNestedHierarchyin the wheelsubdivide_nested_hierarchy
partitionStrin the wheelpartition_string
loadin the wheelrebuilding a sequence in place; a new one is built instead
weightin the wheelweight
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
setLevelWeightin the wheelset_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 2 of 2

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

music21WheelIn the crate
valuein the wheelvalue
volumeScalarin 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 3 of 3

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

music21WheelIn the crate
octaveChangein the wheeloctave_change
namein the wheelname
getStemDirectionForPitchesin the wheelstem_direction_for_pitches
▶PitchClefclef.py wheel 1 of 1

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

music21WheelIn the crate
octaveChangein 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 2 of 2

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

music21WheelIn the crate
namein the wheelname
volumeShiftin the wheelvolume_shift
▶Ornamentexpressions.py wheel 5 of 5

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

music21WheelIn the crate
realizein the wheelrealize
fillListOfRealizedNotesin the wheela helper realize fills its lists with; realize is ported
resolveOrnamentalPitchesin the wheelornamental_pitches
ornamentalPitchesin the wheelornamental_pitches
updateAccidentalDisplayin the wheelupdate_accidental_display
▶GeneralMordentexpressions.py wheel 9 of 9
music21WheelIn the crate
namein the wheelname
accidentalin the wheelaccidental
directionin the wheeldirection
getSizein the wheelsize
resolveOrnamentalPitchesin the wheelornamental_pitches
ornamentalPitchin the wheelornamental_pitches
ornamentalPitchesin the wheelornamental_pitches
updateAccidentalDisplayin the wheelupdate_accidental_display
realizein the wheelrealize
▶Trillexpressions.py wheel 10 of 10
music21WheelIn the crate
namein the wheelname
directionin the wheeldirection
accidentalin the wheelaccidental
splitClientin the wheelsplit_client
getSizein the wheelsize
resolveOrnamentalPitchesin the wheelornamental_pitches
ornamentalPitchin the wheelornamental_pitches
ornamentalPitchesin the wheelornamental_pitches
updateAccidentalDisplayin the wheelupdate_accidental_display
realizein the wheelrealize
▶Turnexpressions.py wheel 12 of 12
music21WheelIn the crate
upperAccidentalin the wheelupper_accidental
lowerAccidentalin the wheellower_accidental
delayin the wheeldelay
isDelayedin the wheelis_delayed
namein the wheelname
getSizein the wheelturn_size
resolveOrnamentalPitchesin the wheelornamental_pitches
upperOrnamentalPitchin the wheelornamental_pitches
lowerOrnamentalPitchin the wheelornamental_pitches
ornamentalPitchesin the wheelornamental_pitches
updateAccidentalDisplayin the wheelupdate_accidental_display
realizein the wheelrealize
▶GeneralAppoggiaturaexpressions.py wheel 1 of 1
music21WheelIn the crate
realizein the wheelrealize
▶Tremoloexpressions.py wheel 2 of 2
music21WheelIn the crate
numberOfMarksin the wheelnumber_of_marks
realizein 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
▶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 0 of 1
1 not in wheel

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

music21WheelIn the crate
convertHarmToRomannot in the wheelconvert_harm_to_roman
▶HarmParserhumdrum/harmParser.py wheel 0 of 1
1 not in wheel

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
parsenot in the wheelparse
▶Barlinebar.py wheel 2 of 2

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

music21WheelIn the crate
typein the wheelbar_type
musicXMLBarStylein the wheelmusicxml_bar_style
▶Repeatbar.py wheel 3 of 3

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

music21WheelIn the crate
directionin the wheelrepeat_direction
timesin the wheelrepeat_times
getTextExpressionin the wheelrepeat_text_expression
▶Streamstream/base.py wheel 99 of 131
32 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 wheelas elementOffset: events answers in order
lastnot in the wheelas elementOffset: events answers in order
clearnot in the wheelempties a stream in place; clone_empty answers an empty one of the same kind
mergeAttributesnot in the wheelwhat clone_empty carries over
indexnot in the wheelas elementOffset
storeAtEndnot in the wheelelements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own here
isAtEndnot in the wheelneeds the sites a crate stream does not keep
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
recurseReprnot in the wheelmusic21's own text dump of a stream
plotnot in the wheelplotting, which the crate leaves to its caller
addGroupForElementsnot in the wheelthe group names music21 picks elements out of a stream by; nothing a crate stream holds carries them
getElementsByGroupnot in the wheelas addGroupForElements
getElementByIdnot in the wheelan id on every element, which only a stream and a note carry here
transferOffsetToElementsnot in the wheelmoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep
haveAccidentalsBeenMadenot in the wheela flag music21 keeps on the stream; nothing here remembers having been asked
sortnot in the wheela crate stream is in offset order as it is built
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
durationnot in the wheela crate stream has no Duration of its own; highest_time answers when the last thing in it ends
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
beatStrnot in the wheelas beat
beatDurationnot in the wheelbeat_duration
beatStrengthnot in the wheelas beat
attachMelodicIntervalsnot in the wheelattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line
activateVariantsnot in the wheelactivate_variants
showVariantAsOssialikePartnot in the wheelshow_variant_as_ossialike_part
elementsin the wheelevents
clefin the wheelthe clef a stream opens with; the clef in force is read by in_force_before, a crate stream keeping no clef of its own
timeSignaturein the wheeltime_signature_at
keySignaturein the wheelkey_signature_at
staffLinesin the wheelstaff_lines
cloneEmptyin the wheelclone_empty
hasElementOfClassin the wheelhas_element_of_class
mergeElementsin the wheelmerge_elements
removein the wheeltakes a named object out; retain_leaves and remove_event take out by place or by test
popin the wheelremove_event
removeByClassin the wheelremove_by_class
removeByNotOfClassin the wheelremove_by_not_of_class
setElementOffsetin the wheelas elementOffset: events_mut reaches each in place
elementOffsetin the wheelasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset
insertin the wheelinsert
insertIntoNoteOrChordin the wheelinsert_into_note_or_chord
appendin the wheelpush
insertAndShiftin the wheelinsert_and_shift
splitAtQuarterLengthin the wheelsplit_at_quarter_length
analyzein the wheelanalyze
getElementsByClassin the wheelelements_of_class
getElementsNotOfClassin the wheelelements_not_of_class
getElementsByOffsetin the wheelelements_in_span
getElementAtOrBeforein the wheelelement_at_or_before
getElementBeforeOffsetin the wheelelement_before_offset
getElementAfterElementin the wheelelement_after
measuresin the wheelmeasures
measurein the wheelone measure by its number; measures answers them all, each carrying its own number
templatein the wheeltemplate
measureOffsetMapin the wheelmeasure_offset_map
finalBarlinein the wheelfinal_barline
voicesin the wheelvoices
spannersin the wheelspanners
atSoundingPitchin the wheelat_sounding_pitch
toSoundingPitchin the wheelto_sounding_pitch
toWrittenPitchin the wheelto_written_pitch
getTimeSignaturesin the wheeltime_signatures
getInstrumentsin the wheelinstruments
getInstrumentin the wheelinstrument
invertDiatonicin the wheelinvert_diatonic
shiftElementsin the wheelshift_elements
repeatAppendin the wheelrepeat_append
repeatInsertin the wheelrepeat_insert
extractContextin the wheelextract_context
chordifyin the wheelchordify
splitByClassin the wheelsplit_by
offsetMapin the wheeloffset_map
makeMeasuresin the wheelmake_measures
makeRestsin the wheelmake_rests
makeTiesin the wheelmake_ties
makeBeamsin the wheelmake_beams
makeAccidentalsin the wheelmake_accidentals
makeNotationin the wheelmake_notation
extendDurationin the wheelextend_duration
stripTiesin the wheelstrip_ties
extendTiesin the wheelextend_ties
sortedin the wheelas sort
flattenin the wheelflatten
recursein the wheelrecurse
highestOffsetin the wheelhighest_offset
highestTimein the wheelhighest_time
lowestOffsetin the wheellowest_offset
secondsin the wheelseconds
metronomeMarkBoundariesin the wheelmetronome_mark_boundaries
metadatain the wheelmetadata
beatAndMeasureFromOffsetin the wheelbeat_and_measure_from_offset
transposein the wheeltranspose
scaleOffsetsin the wheelscale_offsets
scaleDurationsin the wheelscale_durations
augmentOrDiminishin the wheelaugment_or_diminish
quantizein the wheelquantize
expandRepeatsin the wheelexpand_repeats
sliceByQuarterLengthsin the wheelslice_by_quarter_lengths
sliceByGreatestDivisorin the wheelslice_by_greatest_divisor
sliceAtOffsetsin the wheelslice_at_offsets
sliceByBeatin the wheelslice_by_beat
hasMeasuresin the wheelhas_measures
hasVoicesin the wheelhas_voices
hasPartLikeStreamsin the wheelhas_part_like_streams
isTwelveTonein the wheelis_twelve_tone
isWellFormedNotationin the wheelis_well_formed_notation
notesAndRestsin the wheelnotes_and_rests
notesin the wheelnotes
pitchesin the wheelpitches
findConsecutiveNotesin the wheelfind_consecutive_notes
melodicIntervalsin the wheelmelodic_intervals
findGapsin the wheelfind_gaps
isGaplessin the wheelis_gapless
getOverlapsin the wheelget_overlaps
isSequencein the wheelis_sequence
simultaneousAttacksin the wheelsimultaneous_attacks
attachIntervalsBetweenStreamsin the wheelharmonic_intervals
playingWhenAttackedin the wheelplaying_when_attacked
allPlayingWhileSoundingin the wheelall_playing_while_sounding
makeVoicesin the wheelmake_voices
voicesToPartsin the wheelvoices_to_parts
explodein the wheelexplode
flattenUnnecessaryVoicesin the wheelflatten_unnecessary_voices
lyricsin the wheellyrics
▶Measurestream/base.py wheel 8 of 9
1 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
mergeAttributesnot in the wheelwhat clone_empty carries over
measureNumberWithSuffixin the wheelnumber_with_suffix
makeNotationin the wheelmake_notation
barDurationProportionin the wheelbar_duration_proportion
padAsAnacrusisin the wheelpad_as_anacrusis
barDurationin the wheelbar_duration
bestTimeSignaturein the wheelbest_time_signature
leftBarlinein the wheelleft_barline
rightBarlinein the wheelright_barline
▶Partstream/base.py wheel 3 of 4
1 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
mergeAttributesnot in the wheelwhat clone_empty carries over
partNamein the wheelname
partAbbreviationin the wheelabbreviation
makeAccidentalsin the wheelmake_accidentals
▶Scorestream/base.py wheel 9 of 9

Every part of a piece together.

music21WheelIn the crate
partsin the wheelparts
measuresin the wheelmeasures
measurein the wheelone measure by its number; measures answers them all, each carrying its own number
expandRepeatsin the wheelexpand_repeats
measureOffsetMapin the wheelmeasure_offset_map
sliceByGreatestDivisorin the wheelslice_by_greatest_divisor
partsToVoicesin the wheelparts_to_voices
implodein the wheelimplode
makeNotationin the wheelmake_notation
▶Opusstream/base.py wheel 5 of 7
2 not in wheel

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

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
getNumbersin the wheelscore_numbers
getScoreByNumberin the wheelscore_by_number
getScoreByTitlein the wheelscore_by_title
scoresin the wheelscores
mergeScoresin the wheelmerge_scores
▶percussion.py classespercussion.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
PercussionChordnot in 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 0 of 8
8 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
FretNotenot in the wheelFretNote
FretBoardnot in the wheelFretBoard
FirstFretnot in the wheelFirstFret
ChordWithFretBoardnot in the wheelChordWithFretBoard
GuitarFretBoardnot in the wheelguitar
UkeleleFretBoardnot in the wheelukulele
BassGuitarFretBoardnot in the wheelbass_guitar
MandolinFretBoardnot in the wheelmandolin
▶FretBoardtablature.py wheel 0 of 3
3 not in wheel
music21WheelIn the crate
fretNotesLowestFirstnot in the wheelfret_notes_lowest_first
getFretNoteByStringnot in the wheelfret_note_by_string
getPitchesnot in 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 0 of 4
4 not in wheel

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
assembleLyricsnot in the wheelassemble_lyrics
assembleAllLyricsnot in the wheelassemble_all_lyrics
prependArticlenot in the wheelprepend_article
postpendArticlenot in 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 0 of 3
3 not in wheel

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

music21WheelIn the crate
readExcerptsnot in the wheelreads the excerpt files off the disk; the crate's excerpts are built in and the library does no file IO
mostLikelyLanguagenot in the wheelmost_likely_language
mostLikelyLanguageNumericnot in the wheelmost_likely_language_numeric
▶Trigramtext.py wheel 0 of 6
6 not in wheel
music21WheelIn the crate
lengthnot in the wheellength
parseExcerptnot in the wheelfrom_text
measurenot in the wheelthe step that counts the letter triples, which building one does
similaritynot in the wheelsimilarity
makeWordsnot in the wheelfrom_words
likelynot in the wheelwhich language a trigram is nearest, which most_likely_language answers
▶layout.py classeslayout.py wheel 0 of 10
10 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
LayoutBasenot in the wheelthe class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds
ScoreLayoutnot in the wheelScoreLayout
PageLayoutnot in the wheelPageLayout
SystemLayoutnot in the wheelSystemLayout
StaffLayoutnot in the wheelStaffLayout
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
Systemnot in the wheela system of such a score
Staffnot in the wheela staff 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 2 of 10
8 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.

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
TextStylenot in the wheelTextStyle
TextStylePlacementnot in the wheela text style that also says which side of the staff it is on, which is display::Drawn here
BezierStylenot in the wheelthe curve of a slur
LineStylenot in the wheelthe dashes of a line
StreamStylenot in the wheelhow a whole stream is drawn
BeamStylenot in the wheelhow a beam is drawn
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
NoteStylein the wheelhow a note is drawn beyond its colour and its size
▶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 2 of 10
8 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
Slurnot in the wheelSlur
MultiMeasureRestnot in the wheelseveral measures of rest drawn as one, which is a notation this crate does not write
RepeatBracketnot in the wheelEnding
Ottavanot in the wheelOttava
Linenot in the wheelLine
Glissandonot in the wheelGlissando
Spannerin the wheelSpanner
SpannerBundlein the wheelthe collection music21 keeps a stream's spanners in; a crate stream holds its own
▶Spannerspanner.py wheel 6 of 14
8 not in wheel

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

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
getSpannedElementsByClassnot in the wheelthe elements of a class among them, which the stream holding them answers
getSpannedElementIdsnot in the wheelPython object ids
insertFirstSpannedElementnot in the wheelputs an element first by object
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
isLastnot in the wheelis_last
getSpannedElementsin the wheelspanned
addSpannedElementsin the wheeladds elements by object; Spanner::new takes the positions it joins
hasSpannedElementin the wheelwhether an element is among them, which is spanned().contains
replaceSpannedElementin the wheelswaps one element for another by object
getFirstin the wheelthe first element itself; spanned gives its position and the stream hands back what stands there
getLastin 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
▶repeat.py classesrepeat.py wheel 0 of 16
16 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
RepeatExpressionnot in the wheelRepeatExpression
RepeatExpressionMarkernot in the wheelis_marker
Codanot in the wheelCoda
Segnonot in the wheelSegno
Finenot in the wheelFine
RepeatExpressionCommandnot in the wheelthe kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to
DaCaponot in the wheelDaCapo
DaCapoAlFinenot in the wheelDaCapoAlFine
DaCapoAlCodanot in the wheelDaCapoAlCoda
AlSegnonot in the wheelAlSegno
DalSegnonot in the wheelDalSegno
DalSegnoAlFinenot in the wheelDalSegnoAlFine
DalSegnoAlCodanot in the wheelDalSegnoAlCoda
Expandernot in the wheelexpand_repeats
RepeatFindernot in the wheelfinds the repeated passages of a score so as to write it with repeat signs, which nothing here writes
▶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.

music21WheelIn the crate
processnot in the wheelexpand_repeats
measureMapnot in the wheelthe measures of the expansion listed for a caller to read
repeatBarsAreCoherentnot in the wheela step of the expansion, which answers an error where the repeats make no sense
findInnermostRepeatIndicesnot in the wheela step of the expansion
processInnermostRepeatBarsnot in the wheela step of the expansion
getRepeatExpressionIndexnot in the wheela step of the expansion
isExpandablenot in the wheelwhether there is anything to play out, which expanding answers
▶variant.py functionsvariant.py wheel 0 of 10
10 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
mergeVariantsnot in the wheelmerge_variants
mergeVariantScoresnot in the wheelmerge_variant_scores
mergeVariantMeasureStreamsnot in the wheelmerge_variant_measure_streams
mergeVariantsEqualDurationnot in the wheelmerge_variants_equal_duration
mergePartAsOssianot in the wheelmerge_part_as_ossia
addVariantnot in the wheeladd_variant
refineVariantnot in the wheelrefine_variant
getMeasureHashesnot in the wheelmeasure_hashes
makeAllVariantsReplacementsnot in the wheelmake_all_variants_replacements
makeVariantBlocksnot in the wheelmake_variant_blocks
▶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
▶Metadatametadata/__init__.py wheel 3 of 35
32 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
getContributorsByRolenot in the wheelcontributors_by_role
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
allin the wheelall
addContributorin the wheeladd_contributor
searchin the wheelsearch
▶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 0 of 18
18 not in wheel

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
streamSearchBasenot in the wheelrun_over
rhythmicSearchnot in the wheelrhythmic_search
noteNameSearchnot in the wheelnote_name_search
noteNameRhythmicSearchnot in the wheelnote_name_rhythmic_search
approximateNoteSearchnot in the wheelapproximate_note_search
approximateNoteSearchNoRhythmnot in the wheelapproximate_note_search_no_rhythm
approximateNoteSearchOnlyRhythmnot in the wheelapproximate_note_search_only_rhythm
approximateNoteSearchWeightednot in the wheelapproximate_note_search_weighted
translateStreamToStringnot in the wheeltranslate_stream_to_string
translateDiatonicStreamToStringnot in the wheeltranslate_diatonic_stream_to_string
translateIntervalsAndSpeednot in the wheeltranslate_intervals_and_speed
translateStreamToStringNoRhythmnot in the wheeltranslate_stream_to_string_no_rhythm
translateStreamToStringOnlyRhythmnot in the wheeltranslate_stream_to_string_only_rhythm
translateNoteToBytenot in the wheeltranslate_note_to_byte
translateNoteWithDurationToBytesnot in the wheeltranslate_note_with_duration_to_bytes
translateNoteTieToBytenot in the wheeltranslate_note_tie_to_byte
translateDurationToBytesnot in the wheeltranslate_duration_to_bytes
mostCommonMeasureRhythmsnot in the wheelmost_common_measure_rhythms
▶StreamSearchersearch/base.py wheel 0 of 4
4 not in wheel

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

music21WheelIn the crate
runnot in the wheelrun
wildcardAlgorithmnot in the wheelrun_over
rhythmAlgorithmnot in the wheelrhythmic_search
noteNameAlgorithmnot in the wheelnote_name_search
▶LyricSearchersearch/lyrics.py wheel 0 of 4
4 not in wheel

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

music21WheelIn the crate
indexTextnot in the wheelindex_text
indexTuplesnot in the wheelindexed
indexnot in the wheelindexed
searchnot in the wheelsearch
▶IndexedLyricsearch/lyrics.py wheel 0 of 1
1 not in wheel
music21WheelIn the crate
modifynot in the wheela named tuple's _replace, which is Python's own
▶search/segment.py functionssearch/segment.py wheel 0 of 8
8 not in wheel

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

music21WheelIn the crate
translateMonophonicPartToSegmentsnot in the wheeltranslate_monophonic_part_to_segments
indexScorePartsnot in the wheelindex_score_parts
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
scoreSimilaritynot in 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 0 of 3
3 not in wheel
music21WheelIn the crate
scorenot in the wheelscore
chordReductionnot in the wheelchord_reduction
reducenot in 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 0 of 1
1 not in wheel

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

music21WheelIn the crate
pitchToDynamicnot in the wheelpitch_to_dynamic
▶ElementTimespantree/spans.py wheel 0 of 6
6 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
quarterLengthnot in the wheelquarter_length
newnot in the wheela copy with some of its values changed, which a value type here is made afresh
measureNumbernot in the wheelmeasure_number
getParentageByClassnot in the wheelparentage
partnot in the wheelpart
makeElementnot in the wheelthe element itself, which an ElementTimespan holds a reference to
▶Timespantree/spans.py wheel 0 of 6
6 not in wheel
music21WheelIn the crate
offsetnot in the wheeloffset
endTimenot in the wheelend_time
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
▶TimespanTreetree/timespanTree.py wheel 0 of 17
17 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
elementEndTimenot in the wheelend_time
indexnot in the wheelwhere a timespan sits in the tree, which is its place in the list here
offsetnot in the wheellowest_position
removeTimespanListnot in the wheeltakes several out, likewise
removeTimespannot in the wheeltakes a timespan out of the tree; the crate reads a stream into timespans and does not edit them
findNextPitchedTimespanInSameStreamByClassnot in the wheelnext_in_same_part
findPreviousPitchedTimespanInSameStreamByClassnot in the wheelprevious_in_same_part
getVerticalityAtOrBeforenot in the wheelverticality_at_or_before
iterateConsonanceBoundedVerticalitiesnot in the wheelconsonance_bounded_verticalities
iterateVerticalitiesnot in the wheelverticalities
iterateVerticalitiesNwisenot in the wheelverticalities_nwise
splitAtnot in the wheelsplit_at
toPartwiseTimespanTreesnot in the wheela tree for each part of the score; as_timespans reads whichever stream it is given, a part included
unwrapVerticalitiesnot in the wheelunwrap
allPartsnot in the wheelevery part the timespans came from, which the caller has in the score it read
maximumOverlapnot in the wheelmaximum_overlap
elementnot in the wheelthe element a timespan holds, which ElementTimespan::element answers
▶Verticalitytree/verticality.py wheel 0 of 14
14 not in wheel

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

music21WheelIn the crate
bassTimespannot in the wheelbass_timespan
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
toChordnot in the wheelto_chord
measureNumbernot in the wheelmeasure_number
nextStartOffsetnot in the wheelnext_start_offset
nextVerticalitynot in the wheelnext
pitchSetnot in the wheelpitch_set
pitchClassSetnot in the wheelpitch_class_set
previousVerticalitynot in the wheelprevious
startAndOverlapTimespansnot in the wheelstart_and_overlap_timespans
timeToNextEventnot in the wheeltime_to_next_event
makeElementnot in the wheelmake_element
getAllVoiceLeadingQuartetsnot in the wheelvoice_leading_quartets
getPairedMotionnot in the wheelpaired_motion
▶Horizontalitytree/analysis.py wheel 0 of 3
3 not in wheel

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
hasPassingTonenot in the wheelhas_passing_tone
hasNeighborTonenot in the wheelhas_neighbor_tone
hasNoMotionnot in the wheelhas_no_motion
▶tree/fromStream.py functionstree/fromStream.py wheel 0 of 4
4 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
asTimespansnot in 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 0 of 5
5 not in wheel

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
allFeaturesAsListnot in the wheelall_features_as_list
extractorsByIdnot in the wheelextractors_by_id
extractorByIdnot in the wheelextractor_by_id
vectorByIdnot in the wheelvector_by_id
getIndexnot in 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 0 of 7
7 not in wheel

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
setDatanot in the wheelhands the extractor the stream to read, which extract takes as an argument
getAttributeLabelsnot in the wheelattribute_labels
fillFeatureAttributesnot in the wheelcopies the extractor's own id and name onto the feature it is filling in
prepareFeaturenot in the wheelmakes the blank feature and fills its attributes in, which blank answers
processnot in the wheelthe reading itself, which is the row's own function and runs in extract
extractnot in the wheelextract
getBlankFeaturenot in 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 0 of 12
12 not in wheel

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

music21WheelIn the crate
getClassLabelnot in the wheelclass_label
addFeatureExtractorsnot in the wheeladd_extractors
getAttributeLabelsnot in the wheelattribute_labels
getDiscreteLabelsnot in the wheeldiscrete_labels
getClassPositionLabelsnot in the wheelwhere the class column sits, which the caller knows of the labels it asked for
addMultipleDatanot in the wheeladds several subjects at once, which is add_data in a loop
addDatanot in the wheeladd_data
processnot in the wheelprocess
getFeaturesAsListnot in the wheelfeatures_as_list
getUniqueClassValuesnot in the wheelunique_class_values
getStringnot in the wheelto_text
writenot in 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 0 of 27
27 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
barlineToBraillenot in the wheelbarline_to_braille
chordToBraillenot in the wheelchord_to_braille
pitchToOctavenot in the wheelpitch_to_octave
clefToBraillenot in the wheelclef_to_braille
dynamicToBraillenot in the wheeldynamic_to_braille
instrumentToBraillenot in the wheelinstrument_to_braille
keySigToBraillenot in the wheelkey_sig_to_braille
metronomeMarkToBraillenot in the wheelmetronome_mark_to_braille
yieldBrailleArticulationsnot in the wheelnote_to_braille
noteToBraillenot in the wheelnote_to_braille
handlePitchWithAccidentalnot in the wheelnote_to_braille
handleArticulationsnot in the wheelnote_to_braille
handleExpressionsnot in the wheelnote_to_braille
restToBraillenot in the wheelrest_to_braille
tempoTextToBraillenot in the wheeltempo_text_to_braille
textExpressionToBraillenot in the wheeltext_expression_to_braille
timeSigToBraillenot in the wheeltime_sig_to_braille
showOctaveWithNotenot in the wheelshow_octave_with_note
transcribeHeadingnot in the wheeltranscribe_heading
transcribeNoteFingeringnot in the wheeltranscribe_note_fingering
transcribeSignaturesnot in the wheeltranscribe_signatures
brailleUnicodeToBrailleAsciinot in the wheelbraille_unicode_to_braille_ascii
brailleAsciiToBrailleUnicodenot in the wheelbraille_ascii_to_braille_unicode
brailleUnicodeToSymbolsnot in the wheelbraille_unicode_to_symbols
yieldDotsnot in the wheelyield_dots
wordToBraillenot in the wheelword_to_braille
numberToBraillenot in the wheelnumber_to_braille
▶braille/translate.py functionsbraille/translate.py wheel 0 of 8
8 not in wheel

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

music21WheelIn the crate
objectToBraillenot in the wheelelement_to_braille
streamToBraillenot in the wheelstream_to_braille
scoreToBraillenot in the wheelscore_to_braille
metadataToStringnot in the wheelmetadata_to_string
opusToBraillenot in the wheelevery score of an opus one after another, which is score_to_braille of each
measureToBraillenot in the wheelmeasure_to_braille
partToBraillenot in the wheelpart_to_braille
keyboardPartsToBraillenot in the wheelkeyboard_parts_to_braille
▶BrailleTextbraille/text.py wheel 0 of 11
11 not in wheel

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

music21WheelIn the crate
showHandnot in the wheelset_show_hand
addHeadingnot in the wheeladd_heading
addLongExpressionnot in the wheeladd_long_expression
addToNewLinenot in the wheeladd_to_new_line
appendOrInsertCurrentnot in the wheelappend_or_insert_current
addInaccordnot in the wheeladd_inaccord
addMeasureNumbernot in the wheeladd_measure_number
optionalAddKeyboardSymbolsAndDotsnot in the wheeloptional_add_keyboard_symbols_and_dots
addSignaturesnot in the wheeladd_signatures
makeNewLinenot in the wheelmake_new_line
recenterHeadingsnot in the wheelrecenter_headings
▶BrailleTextLinebraille/text.py wheel 0 of 5
5 not in wheel
music21WheelIn the crate
appendnot in the wheelappend
insertnot in the wheelinsert
canAppendnot in the wheelcan_append
canInsertnot in the wheelcan_insert
lastHyphenToSpacenot in the wheellast_hyphen_to_space
▶BrailleKeyboardbraille/text.py wheel 0 of 2
2 not in wheel
music21WheelIn the crate
makeNewLinesnot in the wheelmake_new_lines
addNoteGroupingsnot in the wheeladd_note_groupings
▶braille/lookup.py functionsbraille/lookup.py wheel 0 of 3
3 not in wheel

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

music21WheelIn the crate
makeBrailleDictionarynot in the wheelbuilds music21's dictionary of cells at import; the tables here are written out
dotsAddnot in the wheeldots_add
makePitchNameToNotesnot in the wheelpitch_name_to_note
▶braille/segment.py functionsbraille/segment.py wheel 0 of 10
10 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
findSegmentsnot in the wheelfind_segments
prepareSlurredNotesnot in the wheelprepare_slurred_notes
getRawSegmentsnot in the wheelget_raw_segments
extractBrailleElementsnot in the wheelextract_braille_elements
prepareBeamedNotesnot in the wheelprepare_beamed_notes
setAffinityCodenot in the wheelwhich kind of segment an element belongs in, which extract_braille_elements says as it reads
areGroupingsIdenticalnot in the wheelwhether two groupings are the same, which the segment asks of its own
splitNoteGroupingnot in the wheelsplit_note_grouping
splitMeasurenot in the wheelcuts a measure in two so that the braille fits, which split_note_grouping does of the grouping
▶BrailleSegmentbraille/segment.py wheel 0 of 17
17 not in wheel

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
brailleTextnot in the wheeltranscribe
transcribenot in the wheeltranscribe
addDummyRestsnot in the wheela step of the transcription: the rests that stand before a measure number
extractMeasureNumbernot in the wheela step of the transcription
extractHeadingnot in the wheela step of the transcription: the key, the meter and the tempo over the first measure
extractInaccordGroupingnot in the wheela step of the transcription: the voices written one after another
extractLongExpressionGroupingnot in the wheela step of the transcription
showLeadingOctaveFromNoteGroupingnot in the wheela step of the transcription: whether the first note of a grouping shows its octave
needsSplitToFitnot in the wheela step of the transcription: whether a grouping must be split to fit the line
splitNoteGroupingAndTranscribenot in the wheela step of the transcription, which split_note_grouping does the splitting half of
extractNoteGroupingnot in the wheela step of the transcription
addRepeatSymbolsnot in the wheela step of the transcription: the sign for a measure repeated
extractSignatureGroupingnot in the wheela step of the transcription
extractTempoTextGroupingnot in the wheela step of the transcription
consolidatenot in the wheela step of the transcription: the groupings of one kind joined into one
addGroupingAttributesnot in the wheeladd_grouping_attributes
fixArticulationsnot in the wheelfix_articulations
▶BrailleGrandSegmentbraille/segment.py wheel 0 of 5
5 not in wheel

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

music21WheelIn the crate
brailleTextnot in the wheeltranscribe
yieldCombinedGroupingKeysnot in the wheelcombined_keys
transcribenot in the wheeltranscribe
extractHeadingnot in the wheela step of the transcription
extractNoteGroupingnot in the wheela step of the transcription
▶StreamAligneralpha/analysis/aligner.py wheel 0 of 14
14 not in wheel

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
getDefaultHashernot in the wheelnew
alignnot in the wheelalign
makeHashedStreamsnot in the wheelalign
setupDistanceMatrixnot in the wheelalign_hashed
populateDistanceMatrixnot in the wheelalign_hashed
getPossibleMovesFromLocationnot in the wheelalign_hashed
getOpFromLocationnot in the wheelalign_hashed
insertCostnot in the wheelwhat an insertion costs, which is one everywhere
deleteCostnot in the wheelwhat a deletion costs, likewise
substitutionCostnot in the wheelwhat a substitution costs, which the hashes' difference says
calculateNumSimilaritiesnot in the wheelchanges_count
tupleEqualityWithoutReferencenot in the wheelwhether two hashes are equal but for which note they came from, which comparing them answers
calculateChangesListnot in the wheelalign_hashed
showChangesnot in the wheelprints the changes, and colours the notes of the score to show them
▶Hasheralpha/analysis/hasher.py wheel 0 of 7
7 not in wheel

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

music21WheelIn the crate
setupValidTypesAndStateVarsnot in the wheelreads the switches into the state music21 hashes by, which are the fields of a Hasher here
setupTupleListnot in the wheeltuple_list
hashMeasuresnot in the wheelthe measures hashed one at a time, which is hash_stream of each
hashStreamnot in the wheelhash_stream
addHashToFinalHashnot in the wheelappends one hash to the list being built
addNoteHashWithReferenceToFinalHashnot in the wheelappends a note's hash with the note it came from, likewise
addNoteHashToFinalHashnot in 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 0 of 8
8 not in wheel

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

music21WheelIn the crate
fixnot in the wheelfix_enharmonics
isEnharmonicnot in the wheelwhether two notes sound alike, which is Pitch::is_enharmonic
hasAccnot in the wheelwhether a note carries an accidental, which is Pitch::accidental_is_written
hasNatAccnot in the wheelwhether it carries a natural, likewise
hasSharpFlatAccnot in the wheelwhether it carries a sharp or a flat, likewise
stepEqnot in the wheelwhether two notes stand on the same step
stepNotEqnot in the wheelwhether they do not
intervalTooBignot in the wheelwhether the two are too far apart to be a misspelling, which the fix asks as it goes
▶alpha/analysis/ornamentRecognizer.py functionsalpha/analysis/ornamentRecognizer.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
calculateTrillNoteDurationnot in the wheelornament_note_quarter_length
▶TrillRecognizeralpha/analysis/ornamentRecognizer.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
recognizenot in the wheelrecognize
▶TurnRecognizeralpha/analysis/ornamentRecognizer.py wheel 0 of 2
2 not in wheel
music21WheelIn the crate
isAcceptableIntervalnot in the wheelis_acceptable_interval
recognizenot in the wheelrecognize
▶OrnamentRecognizeralpha/analysis/ornamentRecognizer.py wheel 0 of 2
2 not in wheel
music21WheelIn the crate
calculateOrnamentNoteQlnot in the wheelornament_note_quarter_length
calculateOrnamentTotalQlnot in the wheelornament_total_quarter_length
▶alpha/analysis/search.py functionsalpha/analysis/search.py wheel 0 of 1
1 not in wheel

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

music21WheelIn the crate
findConsecutiveScalenot in 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 wheelmusic21's measure of how much the correction helped, which PriorsIntegrationScore carries
getAllHashesnot in the wheelall_hashes
getSinglePartnot in the wheelsingle_part_mut
runHorizontalCorrectionModelnot in the wheelrun_horizontal_correction_model
getMeasureSlicenot in the wheelthe same measure across every part, which vertical_probability_dist reads as it goes
getAllIncorrectMeasuresnot in the wheelall_incorrect_measures
verticalProbabilityDistnot in the wheelvertical_probability_dist
getVerticalProbabilityDistributionSinglePartnot in the wheela step of the vertical correction, which vertical_probability_dist does for every part at once
getVerticalProbabilityDistributionSinglePartSingleMeasurenot in the wheela step of the same
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 0 of 7
7 not in wheel
music21WheelIn the crate
getMeasuresnot in the wheelthe measures of the part, which the Stream it was read from holds
getIncorrectMeasureIndicesnot in the wheelfind_incorrect_measures
getSequenceHashesFromMeasureStreamnot in the wheelhashed_notes
horizontalProbabilityDistnot in the wheelhorizontal_probability_dist
runHorizontalSearchnot in the wheelrun_horizontal_search
runHorizontalCorrectionModelnot in the wheelrun_horizontal_correction_model
getProbabilityDistributionnot in the wheelprobability_distribution
▶MeasureHashomr/correctors.py wheel 0 of 15
15 not in wheel

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

music21WheelIn the crate
getHashStringnot in the wheelmeasure_hash
hashNotenot in the wheelmeasure_hash
hashGracenot in the wheelmeasure_hash
hashRestnot in the wheelmeasure_hash
hashQuarterLengthnot in the wheelmeasure_hash
setSequenceMatchernot in the wheelkeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported
getMeasureDifferencenot in the wheelmeasure_difference
getOpCodesnot in the wheelopcodes
getProbabilityBasedOnChangesnot in the wheelprobability_based_on_changes
differenceProbabilityForOneOpCodenot in the wheelthe odds of one edit, which probability_based_on_changes sums
getProbabilityOnEqualitynot in the wheelthe odds of two measures reading alike, likewise
getProbabilityOnOmissionnot in the wheelthe odds of a note left out, likewise
getProbabilityOnAdditionnot in the wheelthe odds of a note put in, likewise
getProbabilityOnSubstitutenot in the wheelprobability_on_substitute
getProbabilityFromOneCharSubnot in the wheelprobability_from_one_char_sub
▶MeasureSliceomr/correctors.py wheel 0 of 2
2 not in wheel

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

music21WheelIn the crate
getSliceHashesnot in the wheelthe hashes of the measure across every part, which ScoreCorrector::vertical_probability_dist reads as it goes
runSliceSearchnot in the wheelthe search across the parts, which run_vertical_search does
▶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 0 of 16
16 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
histogramnot in the wheelhistogram
autocorrelationFunctionnot in the wheelautocorrelation_frequency
prepareThresholdsnot in the wheelprepare_thresholds
interpolationnot in the wheelinterpolation
normalizeInputFrequencynot in the wheelnormalize_input_frequency
pitchFrequenciesToObjectsnot in the wheelpitch_frequencies_to_objects
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
detectPitchFrequenciesnot in the wheeldetect_pitch_frequencies
smoothFrequenciesnot in the wheelsmooth_frequencies
joinConsecutiveIdenticalPitchesnot in the wheeljoin_consecutive_identical_pitches
quantizeDurationnot in the wheelquantize_duration
quarterLengthEstimationnot in the wheelquarter_length_estimation
notesAndDurationsToStreamnot in the wheelnotes_and_durations_to_stream
decisionProcessnot in the wheeldecision_process
▶search/serial.py classessearch/serial.py wheel 0 of 8
8 not in wheel

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
ContiguousSegmentOfNotesnot in the wheelContiguousSegment
ContiguousSegmentSearchernot in the wheelContiguousSegmentSearcher
SegmentMatchernot in the wheelSegmentMatcher
TransposedSegmentMatchernot in the wheelone of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes
TransformedSegmentMatchernot in the wheelMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other
MultisetSegmentMatchernot in the wheelMatching::Multiset, which compares the pitch classes in any order
TransposedMultisetMatchernot in the wheelMatching::TransposedMultiset
TransposedInvertedMultisetMatchernot in 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 0 of 11
11 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
byLengthnot in the wheelby_length
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
▶SegmentMatchersearch/serial.py wheel 0 of 9
9 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
repsnot in the wheelrepetitions
includeChordsnot in the wheelinclude_chords
getContiguousSegmentsByLengthnot in the wheelthe searcher's by_length, which find asks for itself
findnot in the wheelfind
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
checkSearchedAlreadynot in the wheelwhether a segment the same as one already searched for is to be passed over, which find keeps as it goes
normalizenot in 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
equalSubsetnot in the wheelthe comparison Matching decides, which the crate does inside find
▶search/serial.py functionssearch/serial.py wheel 0 of 6
6 not in wheel

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
labelSegmentsnot in the wheellabel
labelTransposedSegmentsnot in the wheellabel
labelTransformedSegmentsnot in the wheellabel
labelMultisetsnot in the wheellabel
labelTransposedMultisetsnot in the wheellabel
labelTransposedAndInvertedMultisetsnot in the wheellabel

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

662 members

music21 memberCratemusic21-rs
raises under install_into_music21() — 662
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
PercussionMapper.midiPitchToInstrumentmidi/percussion.pyportedfor_percussion_key
PercussionMapper.midiInstrumentToPitchmidi/percussion.pyportedpercussion_pitch
TabChordBase.combinedChordromanText/tsvConverter.pyportedchord
TabChordBase.tabToM21romanText/tsvConverter.pyportedelement
TabChordBase.populateFromRowromanText/tsvConverter.pyportedfrom_row
TabChordV2.beatromanText/tsvConverter.pyportedbeat
TabChordV2.measureromanText/tsvConverter.pyportedmeasure
TabChordV2.local_keyromanText/tsvConverter.pyportedlocal_key
TabChordV2.global_keyromanText/tsvConverter.pyportedglobal_key
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
getFormromanText/tsvConverter.pyportedform_of
handleAddedTonesromanText/tsvConverter.pyportedhandle_added_tones
localKeyAsRnromanText/tsvConverter.pyportedlocal_key_as_roman
isMinorromanText/tsvConverter.pyportedis_minor
characterSwapsromanText/tsvConverter.pyportedcharacter_swaps
getLocalKeyromanText/tsvConverter.pyportedlocal_key
getSecondaryKeyromanText/tsvConverter.pyportedsecondary_key
CTSong.parseromanText/clercqTemperley.pyportedparse
CTSong.titleromanText/clercqTemperley.pyportedtitle
CTSong.commentsromanText/clercqTemperley.pyportedcomments
CTSong.rulesromanText/clercqTemperley.pyportedrules
CTSong.homeTimeSigromanText/clercqTemperley.pyportedhome_time_signature
CTSong.homeKeyromanText/clercqTemperley.pyportedhome_key
CTSong.toPartromanText/clercqTemperley.pyportedto_part
CTSong.toScoreromanText/clercqTemperley.pymissingmusic21's own deprecated name for toPart, which it will take out
CTRule.parentromanText/clercqTemperley.pymissingmusic21 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.expandromanText/clercqTemperley.pyportedexpand
CTRule.expandExpansionContentromanText/clercqTemperley.pymissinga step inside the expansion, which the crate drives from the song rather than from the rule keeping the state
CTRule.expandSimpleContentromanText/clercqTemperley.pymissinga step inside the expansion, as expandExpansionContent
CTRule.isSameromanText/clercqTemperley.pyportedis_same
CTRule.addOptionalTieAndLyricsromanText/clercqTemperley.pymissinga step inside the expansion, which ties the chord before as it writes the one after
CTRule.insertKsTsromanText/clercqTemperley.pymissinga step inside the expansion: the crate writes the key and the meter into a measure as it builds it
CTRule.fixupChordAtomromanText/clercqTemperley.pyportedfixup_chord_atom
CTRule.musicTextromanText/clercqTemperley.pyportedmusic_text
CTRule.commentromanText/clercqTemperley.pyportedcomment
CTRule.LHSromanText/clercqTemperley.pyportedleft_hand_side
CTRule.sectionNameromanText/clercqTemperley.pyportedsection_name
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
getPathsscale/scala/__init__.pymissingwhere the archive's files sit on disk; the archive here is one bundled table and has no paths
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
convertHarmToRomanhumdrum/harmParser.pyportedconvert_harm_to_roman
HarmParser.parsehumdrum/harmParser.pyportedparse
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.pymissingas elementOffset: events answers in order
Stream.laststream/base.pymissingas elementOffset: events answers in order
Stream.clearstream/base.pymissingempties a stream in place; clone_empty answers an empty one of the same kind
Stream.mergeAttributesstream/base.pymissingwhat clone_empty carries over
Stream.indexstream/base.pymissingas elementOffset
Stream.storeAtEndstream/base.pymissingelements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own here
Stream.isAtEndstream/base.pymissingneeds the sites a crate stream does not keep
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.recurseReprstream/base.pymissingmusic21's own text dump of a stream
Stream.plotstream/base.pymissingplotting, which the crate leaves to its caller
Stream.addGroupForElementsstream/base.pymissingthe group names music21 picks elements out of a stream by; nothing a crate stream holds carries them
Stream.getElementsByGroupstream/base.pymissingas addGroupForElements
Stream.getElementByIdstream/base.pymissingan id on every element, which only a stream and a note carry here
Stream.transferOffsetToElementsstream/base.pymissingmoves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep
Stream.haveAccidentalsBeenMadestream/base.pymissinga flag music21 keeps on the stream; nothing here remembers having been asked
Stream.sortstream/base.pymissinga crate stream is in offset order as it is built
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.durationstream/base.pymissinga crate stream has no Duration of its own; highest_time answers when the last thing in it ends
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
Stream.beatStrstream/base.pymissingas beat
Stream.beatDurationstream/base.pyportedbeat_duration
Stream.beatStrengthstream/base.pymissingas beat
Stream.attachMelodicIntervalsstream/base.pymissingattaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line
Stream.activateVariantsstream/base.pyportedactivate_variants
Stream.showVariantAsOssialikePartstream/base.pyportedshow_variant_as_ossialike_part
Measure.mergeAttributesstream/base.pymissingwhat clone_empty carries over
Part.mergeAttributesstream/base.pymissingwhat clone_empty carries over
Opus.writestream/base.pymissingwriting a file, which the format modules do
Opus.showstream/base.pymissingrendering, which the crate leaves to its caller
PercussionChordpercussion.pyportedPercussionChord
PercussionChord.notespercussion.pyportedmembers
PercussionChord.pitchespercussion.pyportedpitches
FretNotetablature.pyportedFretNote
FretBoardtablature.pyportedFretBoard
FirstFrettablature.pyportedFirstFret
ChordWithFretBoardtablature.pyportedChordWithFretBoard
GuitarFretBoardtablature.pyportedguitar
UkeleleFretBoardtablature.pyportedukulele
BassGuitarFretBoardtablature.pyportedbass_guitar
MandolinFretBoardtablature.pyportedmandolin
FretBoard.fretNotesLowestFirsttablature.pyportedfret_notes_lowest_first
FretBoard.getFretNoteByStringtablature.pyportedfret_note_by_string
FretBoard.getPitchestablature.pyportedpitches
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
assembleLyricstext.pyportedassemble_lyrics
assembleAllLyricstext.pyportedassemble_all_lyrics
prependArticletext.pyportedprepend_article
postpendArticletext.pyportedpostpend_article
TextBox.contenttext.pyportedcontent
TextBox.pagetext.pyportedpage
LanguageDetector.readExcerptstext.pymissingreads the excerpt files off the disk; the crate's excerpts are built in and the library does no file IO
LanguageDetector.mostLikelyLanguagetext.pyportedmost_likely_language
LanguageDetector.mostLikelyLanguageNumerictext.pyportedmost_likely_language_numeric
Trigram.lengthtext.pyportedlength
Trigram.parseExcerpttext.pyportedfrom_text
Trigram.measuretext.pymissingthe step that counts the letter triples, which building one does
Trigram.similaritytext.pyportedsimilarity
Trigram.makeWordstext.pyportedfrom_words
Trigram.likelytext.pymissingwhich language a trigram is nearest, which most_likely_language answers
LayoutBaselayout.pymissingthe class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds
ScoreLayoutlayout.pyportedScoreLayout
PageLayoutlayout.pyportedPageLayout
SystemLayoutlayout.pyportedSystemLayout
StaffLayoutlayout.pyportedStaffLayout
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
Systemlayout.pymissinga system 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
TextStylestyle.pyportedTextStyle
TextStylePlacementstyle.pymissinga text style that also says which side of the staff it is on, which is display::Drawn here
BezierStylestyle.pymissingthe curve of a slur
LineStylestyle.pymissingthe dashes of a line
StreamStylestyle.pymissinghow a whole stream is drawn
BeamStylestyle.pymissinghow a beam is drawn
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
Slurspanner.pyportedSlur
MultiMeasureRestspanner.pymissingseveral measures of rest drawn as one, which is a notation this crate does not write
RepeatBracketspanner.pyportedEnding
Ottavaspanner.pyportedOttava
Linespanner.pyportedLine
Glissandospanner.pyportedGlissando
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.getSpannedElementsByClassspanner.pymissingthe elements of a class among them, which the stream holding them answers
Spanner.getSpannedElementIdsspanner.pymissingPython object ids
Spanner.insertFirstSpannedElementspanner.pymissingputs an element first by object
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.isLastspanner.pyportedis_last
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
RepeatMarkrepeat.pymissingwhat music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back to
RepeatExpressionrepeat.pyportedRepeatExpression
RepeatExpressionMarkerrepeat.pyportedis_marker
Codarepeat.pyportedCoda
Segnorepeat.pyportedSegno
Finerepeat.pyportedFine
RepeatExpressionCommandrepeat.pymissingthe kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to
DaCaporepeat.pyportedDaCapo
DaCapoAlFinerepeat.pyportedDaCapoAlFine
DaCapoAlCodarepeat.pyportedDaCapoAlCoda
AlSegnorepeat.pyportedAlSegno
DalSegnorepeat.pyportedDalSegno
DalSegnoAlFinerepeat.pyportedDalSegnoAlFine
DalSegnoAlCodarepeat.pyportedDalSegnoAlCoda
Expanderrepeat.pyportedexpand_repeats
RepeatFinderrepeat.pymissingfinds the repeated passages of a score so as to write it with repeat signs, which nothing here writes
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.pymissingthe measures of the expansion listed for a caller to read
Expander.repeatBarsAreCoherentrepeat.pymissinga step of the expansion, which answers an error where the repeats make no sense
Expander.findInnermostRepeatIndicesrepeat.pymissinga step of the expansion
Expander.processInnermostRepeatBarsrepeat.pymissinga step of the expansion
Expander.getRepeatExpressionIndexrepeat.pymissinga step of the expansion
Expander.isExpandablerepeat.pymissingwhether there is anything to play out, which expanding answers
mergeVariantsvariant.pyportedmerge_variants
mergeVariantScoresvariant.pyportedmerge_variant_scores
mergeVariantMeasureStreamsvariant.pyportedmerge_variant_measure_streams
mergeVariantsEqualDurationvariant.pyportedmerge_variants_equal_duration
mergePartAsOssiavariant.pyportedmerge_part_as_ossia
addVariantvariant.pyportedadd_variant
refineVariantvariant.pyportedrefine_variant
getMeasureHashesvariant.pyportedmeasure_hashes
makeAllVariantsReplacementsvariant.pyportedmake_all_variants_replacements
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.getContributorsByRolemetadata/__init__.pyportedcontributors_by_role
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
streamSearchBasesearch/base.pyportedrun_over
rhythmicSearchsearch/base.pyportedrhythmic_search
noteNameSearchsearch/base.pyportednote_name_search
noteNameRhythmicSearchsearch/base.pyportednote_name_rhythmic_search
approximateNoteSearchsearch/base.pyportedapproximate_note_search
approximateNoteSearchNoRhythmsearch/base.pyportedapproximate_note_search_no_rhythm
approximateNoteSearchOnlyRhythmsearch/base.pyportedapproximate_note_search_only_rhythm
approximateNoteSearchWeightedsearch/base.pyportedapproximate_note_search_weighted
translateStreamToStringsearch/base.pyportedtranslate_stream_to_string
translateDiatonicStreamToStringsearch/base.pyportedtranslate_diatonic_stream_to_string
translateIntervalsAndSpeedsearch/base.pyportedtranslate_intervals_and_speed
translateStreamToStringNoRhythmsearch/base.pyportedtranslate_stream_to_string_no_rhythm
translateStreamToStringOnlyRhythmsearch/base.pyportedtranslate_stream_to_string_only_rhythm
translateNoteToBytesearch/base.pyportedtranslate_note_to_byte
translateNoteWithDurationToBytessearch/base.pyportedtranslate_note_with_duration_to_bytes
translateNoteTieToBytesearch/base.pyportedtranslate_note_tie_to_byte
translateDurationToBytessearch/base.pyportedtranslate_duration_to_bytes
mostCommonMeasureRhythmssearch/base.pyportedmost_common_measure_rhythms
StreamSearcher.runsearch/base.pyportedrun
StreamSearcher.wildcardAlgorithmsearch/base.pyportedrun_over
StreamSearcher.rhythmAlgorithmsearch/base.pyportedrhythmic_search
StreamSearcher.noteNameAlgorithmsearch/base.pyportednote_name_search
LyricSearcher.indexTextsearch/lyrics.pyportedindex_text
LyricSearcher.indexTuplessearch/lyrics.pyportedindexed
LyricSearcher.indexsearch/lyrics.pyportedindexed
LyricSearcher.searchsearch/lyrics.pyportedsearch
IndexedLyric.modifysearch/lyrics.pymissinga named tuple's _replace, which is Python's own
translateMonophonicPartToSegmentssearch/segment.pyportedtranslate_monophonic_part_to_segments
indexScorePartssearch/segment.pyportedindex_score_parts
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
scoreSimilaritysearch/segment.pyportedscore_similarity
ReductiveNote.isParsedanalysis/reduction.pyportedis_parsed
ReductiveNote.getNoteAndTextExpressionanalysis/reduction.pyportednote_and_text_expression
ScoreReduction.scoreanalysis/reduction.pyportedscore
ScoreReduction.chordReductionanalysis/reduction.pyportedchord_reduction
ScoreReduction.reduceanalysis/reduction.pyportedreduce
PartReduction.processanalysis/reduction.pyportedweighted_spans
PartReduction.getGraphHorizontalBarWeightedDataanalysis/reduction.pymissingthe spans arranged for music21's bar graph; weighted_spans is what they say
ActivityMatch.pitchToDynamicanalysis/correlate.pyportedpitch_to_dynamic
ElementTimespan.quarterLengthtree/spans.pyportedquarter_length
ElementTimespan.newtree/spans.pymissinga copy with some of its values changed, which a value type here is made afresh
ElementTimespan.measureNumbertree/spans.pyportedmeasure_number
ElementTimespan.getParentageByClasstree/spans.pyportedparentage
ElementTimespan.parttree/spans.pyportedpart
ElementTimespan.makeElementtree/spans.pymissingthe element itself, which an ElementTimespan holds a reference to
Timespan.offsettree/spans.pyportedoffset
Timespan.endTimetree/spans.pyportedend_time
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.elementEndTimetree/timespanTree.pyportedend_time
TimespanTree.indextree/timespanTree.pymissingwhere a timespan sits in the tree, which is its place in the list here
TimespanTree.offsettree/timespanTree.pyportedlowest_position
TimespanTree.removeTimespanListtree/timespanTree.pymissingtakes several out, likewise
TimespanTree.removeTimespantree/timespanTree.pymissingtakes a timespan out of the tree; the crate reads a stream into timespans and does not edit them
TimespanTree.findNextPitchedTimespanInSameStreamByClasstree/timespanTree.pyportednext_in_same_part
TimespanTree.findPreviousPitchedTimespanInSameStreamByClasstree/timespanTree.pyportedprevious_in_same_part
TimespanTree.getVerticalityAtOrBeforetree/timespanTree.pyportedverticality_at_or_before
TimespanTree.iterateConsonanceBoundedVerticalitiestree/timespanTree.pyportedconsonance_bounded_verticalities
TimespanTree.iterateVerticalitiestree/timespanTree.pyportedverticalities
TimespanTree.iterateVerticalitiesNwisetree/timespanTree.pyportedverticalities_nwise
TimespanTree.splitAttree/timespanTree.pyportedsplit_at
TimespanTree.toPartwiseTimespanTreestree/timespanTree.pymissinga tree for each part of the score; as_timespans reads whichever stream it is given, a part included
TimespanTree.unwrapVerticalitiestree/timespanTree.pyportedunwrap
TimespanTree.allPartstree/timespanTree.pymissingevery part the timespans came from, which the caller has in the score it read
TimespanTree.maximumOverlaptree/timespanTree.pyportedmaximum_overlap
TimespanTree.elementtree/timespanTree.pymissingthe element a timespan holds, which ElementTimespan::element answers
Verticality.bassTimespantree/verticality.pyportedbass_timespan
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
Verticality.toChordtree/verticality.pyportedto_chord
Verticality.measureNumbertree/verticality.pyportedmeasure_number
Verticality.nextStartOffsettree/verticality.pyportednext_start_offset
Verticality.nextVerticalitytree/verticality.pyportednext
Verticality.pitchSettree/verticality.pyportedpitch_set
Verticality.pitchClassSettree/verticality.pyportedpitch_class_set
Verticality.previousVerticalitytree/verticality.pyportedprevious
Verticality.startAndOverlapTimespanstree/verticality.pyportedstart_and_overlap_timespans
Verticality.timeToNextEventtree/verticality.pyportedtime_to_next_event
Verticality.makeElementtree/verticality.pyportedmake_element
Verticality.getAllVoiceLeadingQuartetstree/verticality.pyportedvoice_leading_quartets
Verticality.getPairedMotiontree/verticality.pyportedpaired_motion
Horizontality.hasPassingTonetree/analysis.pyportedhas_passing_tone
Horizontality.hasNeighborTonetree/analysis.pyportedhas_neighbor_tone
Horizontality.hasNoMotiontree/analysis.pyportedhas_no_motion
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
asTimespanstree/fromStream.pyportedas_timespans
chordifiedtree/toStream.pyportedchordify
partwisetree/toStream.pymissingthe timespans written back out as a part each, which is the score they were read from
allFeaturesAsListfeatures/base.pyportedall_features_as_list
extractorsByIdfeatures/base.pyportedextractors_by_id
extractorByIdfeatures/base.pyportedextractor_by_id
vectorByIdfeatures/base.pyportedvector_by_id
getIndexfeatures/base.pyportedindex_of
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
FeatureExtractor.setDatafeatures/base.pymissinghands the extractor the stream to read, which extract takes as an argument
FeatureExtractor.getAttributeLabelsfeatures/base.pyportedattribute_labels
FeatureExtractor.fillFeatureAttributesfeatures/base.pymissingcopies the extractor's own id and name onto the feature it is filling in
FeatureExtractor.prepareFeaturefeatures/base.pymissingmakes the blank feature and fills its attributes in, which blank answers
FeatureExtractor.processfeatures/base.pymissingthe reading itself, which is the row's own function and runs in extract
FeatureExtractor.extractfeatures/base.pyportedextract
FeatureExtractor.getBlankFeaturefeatures/base.pyportedblank
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
DataSet.getClassLabelfeatures/base.pyportedclass_label
DataSet.addFeatureExtractorsfeatures/base.pyportedadd_extractors
DataSet.getAttributeLabelsfeatures/base.pyportedattribute_labels
DataSet.getDiscreteLabelsfeatures/base.pyporteddiscrete_labels
DataSet.getClassPositionLabelsfeatures/base.pymissingwhere the class column sits, which the caller knows of the labels it asked for
DataSet.addMultipleDatafeatures/base.pymissingadds several subjects at once, which is add_data in a loop
DataSet.addDatafeatures/base.pyportedadd_data
DataSet.processfeatures/base.pyportedprocess
DataSet.getFeaturesAsListfeatures/base.pyportedfeatures_as_list
DataSet.getUniqueClassValuesfeatures/base.pyportedunique_class_values
DataSet.getStringfeatures/base.pyportedto_text
DataSet.writefeatures/base.pymissingwrites the table to a file, which the library does not do: to_text is the text to write
barlineToBraillebraille/basic.pyportedbarline_to_braille
chordToBraillebraille/basic.pyportedchord_to_braille
pitchToOctavebraille/basic.pyportedpitch_to_octave
clefToBraillebraille/basic.pyportedclef_to_braille
dynamicToBraillebraille/basic.pyporteddynamic_to_braille
instrumentToBraillebraille/basic.pyportedinstrument_to_braille
keySigToBraillebraille/basic.pyportedkey_sig_to_braille
metronomeMarkToBraillebraille/basic.pyportedmetronome_mark_to_braille
yieldBrailleArticulationsbraille/basic.pyportednote_to_braille
noteToBraillebraille/basic.pyportednote_to_braille
handlePitchWithAccidentalbraille/basic.pyportednote_to_braille
handleArticulationsbraille/basic.pyportednote_to_braille
handleExpressionsbraille/basic.pyportednote_to_braille
restToBraillebraille/basic.pyportedrest_to_braille
tempoTextToBraillebraille/basic.pyportedtempo_text_to_braille
textExpressionToBraillebraille/basic.pyportedtext_expression_to_braille
timeSigToBraillebraille/basic.pyportedtime_sig_to_braille
showOctaveWithNotebraille/basic.pyportedshow_octave_with_note
transcribeHeadingbraille/basic.pyportedtranscribe_heading
transcribeNoteFingeringbraille/basic.pyportedtranscribe_note_fingering
transcribeSignaturesbraille/basic.pyportedtranscribe_signatures
brailleUnicodeToBrailleAsciibraille/basic.pyportedbraille_unicode_to_braille_ascii
brailleAsciiToBrailleUnicodebraille/basic.pyportedbraille_ascii_to_braille_unicode
brailleUnicodeToSymbolsbraille/basic.pyportedbraille_unicode_to_symbols
yieldDotsbraille/basic.pyportedyield_dots
wordToBraillebraille/basic.pyportedword_to_braille
numberToBraillebraille/basic.pyportednumber_to_braille
objectToBraillebraille/translate.pyportedelement_to_braille
streamToBraillebraille/translate.pyportedstream_to_braille
scoreToBraillebraille/translate.pyportedscore_to_braille
metadataToStringbraille/translate.pyportedmetadata_to_string
opusToBraillebraille/translate.pymissingevery score of an opus one after another, which is score_to_braille of each
measureToBraillebraille/translate.pyportedmeasure_to_braille
partToBraillebraille/translate.pyportedpart_to_braille
keyboardPartsToBraillebraille/translate.pyportedkeyboard_parts_to_braille
BrailleText.showHandbraille/text.pyportedset_show_hand
BrailleText.addHeadingbraille/text.pyportedadd_heading
BrailleText.addLongExpressionbraille/text.pyportedadd_long_expression
BrailleText.addToNewLinebraille/text.pyportedadd_to_new_line
BrailleText.appendOrInsertCurrentbraille/text.pyportedappend_or_insert_current
BrailleText.addInaccordbraille/text.pyportedadd_inaccord
BrailleText.addMeasureNumberbraille/text.pyportedadd_measure_number
BrailleText.optionalAddKeyboardSymbolsAndDotsbraille/text.pyportedoptional_add_keyboard_symbols_and_dots
BrailleText.addSignaturesbraille/text.pyportedadd_signatures
BrailleText.makeNewLinebraille/text.pyportedmake_new_line
BrailleText.recenterHeadingsbraille/text.pyportedrecenter_headings
BrailleTextLine.appendbraille/text.pyportedappend
BrailleTextLine.insertbraille/text.pyportedinsert
BrailleTextLine.canAppendbraille/text.pyportedcan_append
BrailleTextLine.canInsertbraille/text.pyportedcan_insert
BrailleTextLine.lastHyphenToSpacebraille/text.pyportedlast_hyphen_to_space
BrailleKeyboard.makeNewLinesbraille/text.pyportedmake_new_lines
BrailleKeyboard.addNoteGroupingsbraille/text.pyportedadd_note_groupings
makeBrailleDictionarybraille/lookup.pymissingbuilds music21's dictionary of cells at import; the tables here are written out
dotsAddbraille/lookup.pyporteddots_add
makePitchNameToNotesbraille/lookup.pyportedpitch_name_to_note
setGroupingGlobalsbraille/segment.pymissingmusic21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says instead
findSegmentsbraille/segment.pyportedfind_segments
prepareSlurredNotesbraille/segment.pyportedprepare_slurred_notes
getRawSegmentsbraille/segment.pyportedget_raw_segments
extractBrailleElementsbraille/segment.pyportedextract_braille_elements
prepareBeamedNotesbraille/segment.pyportedprepare_beamed_notes
setAffinityCodebraille/segment.pymissingwhich kind of segment an element belongs in, which extract_braille_elements says as it reads
areGroupingsIdenticalbraille/segment.pymissingwhether two groupings are the same, which the segment asks of its own
splitNoteGroupingbraille/segment.pyportedsplit_note_grouping
splitMeasurebraille/segment.pymissingcuts a measure in two so that the braille fits, which split_note_grouping does of the grouping
BrailleSegment.brailleTextbraille/segment.pyportedtranscribe
BrailleSegment.transcribebraille/segment.pyportedtranscribe
BrailleSegment.addDummyRestsbraille/segment.pymissinga step of the transcription: the rests that stand before a measure number
BrailleSegment.extractMeasureNumberbraille/segment.pymissinga step of the transcription
BrailleSegment.extractHeadingbraille/segment.pymissinga step of the transcription: the key, the meter and the tempo over the first measure
BrailleSegment.extractInaccordGroupingbraille/segment.pymissinga step of the transcription: the voices written one after another
BrailleSegment.extractLongExpressionGroupingbraille/segment.pymissinga step of the transcription
BrailleSegment.showLeadingOctaveFromNoteGroupingbraille/segment.pymissinga step of the transcription: whether the first note of a grouping shows its octave
BrailleSegment.needsSplitToFitbraille/segment.pymissinga step of the transcription: whether a grouping must be split to fit the line
BrailleSegment.splitNoteGroupingAndTranscribebraille/segment.pymissinga step of the transcription, which split_note_grouping does the splitting half of
BrailleSegment.extractNoteGroupingbraille/segment.pymissinga step of the transcription
BrailleSegment.addRepeatSymbolsbraille/segment.pymissinga step of the transcription: the sign for a measure repeated
BrailleSegment.extractSignatureGroupingbraille/segment.pymissinga step of the transcription
BrailleSegment.extractTempoTextGroupingbraille/segment.pymissinga step of the transcription
BrailleSegment.consolidatebraille/segment.pymissinga step of the transcription: the groupings of one kind joined into one
BrailleSegment.addGroupingAttributesbraille/segment.pyportedadd_grouping_attributes
BrailleSegment.fixArticulationsbraille/segment.pyportedfix_articulations
BrailleGrandSegment.brailleTextbraille/segment.pyportedtranscribe
BrailleGrandSegment.yieldCombinedGroupingKeysbraille/segment.pyportedcombined_keys
BrailleGrandSegment.transcribebraille/segment.pyportedtranscribe
BrailleGrandSegment.extractHeadingbraille/segment.pymissinga step of the transcription
BrailleGrandSegment.extractNoteGroupingbraille/segment.pymissinga step of the transcription
StreamAligner.getDefaultHasheralpha/analysis/aligner.pyportednew
StreamAligner.alignalpha/analysis/aligner.pyportedalign
StreamAligner.makeHashedStreamsalpha/analysis/aligner.pyportedalign
StreamAligner.setupDistanceMatrixalpha/analysis/aligner.pyportedalign_hashed
StreamAligner.populateDistanceMatrixalpha/analysis/aligner.pyportedalign_hashed
StreamAligner.getPossibleMovesFromLocationalpha/analysis/aligner.pyportedalign_hashed
StreamAligner.getOpFromLocationalpha/analysis/aligner.pyportedalign_hashed
StreamAligner.insertCostalpha/analysis/aligner.pymissingwhat an insertion costs, which is one everywhere
StreamAligner.deleteCostalpha/analysis/aligner.pymissingwhat a deletion costs, likewise
StreamAligner.substitutionCostalpha/analysis/aligner.pymissingwhat a substitution costs, which the hashes' difference says
StreamAligner.calculateNumSimilaritiesalpha/analysis/aligner.pyportedchanges_count
StreamAligner.tupleEqualityWithoutReferencealpha/analysis/aligner.pymissingwhether two hashes are equal but for which note they came from, which comparing them answers
StreamAligner.calculateChangesListalpha/analysis/aligner.pyportedalign_hashed
StreamAligner.showChangesalpha/analysis/aligner.pymissingprints the changes, and colours the notes of the score to show them
Hasher.setupValidTypesAndStateVarsalpha/analysis/hasher.pymissingreads the switches into the state music21 hashes by, which are the fields of a Hasher here
Hasher.setupTupleListalpha/analysis/hasher.pyportedtuple_list
Hasher.hashMeasuresalpha/analysis/hasher.pymissingthe measures hashed one at a time, which is hash_stream of each
Hasher.hashStreamalpha/analysis/hasher.pyportedhash_stream
Hasher.addHashToFinalHashalpha/analysis/hasher.pymissingappends one hash to the list being built
Hasher.addNoteHashWithReferenceToFinalHashalpha/analysis/hasher.pymissingappends a note's hash with the note it came from, likewise
Hasher.addNoteHashToFinalHashalpha/analysis/hasher.pymissingappends a note's hash, likewise
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
EnharmonicFixer.fixalpha/analysis/fixer.pyportedfix_enharmonics
EnharmonicFixer.isEnharmonicalpha/analysis/fixer.pymissingwhether two notes sound alike, which is Pitch::is_enharmonic
EnharmonicFixer.hasAccalpha/analysis/fixer.pymissingwhether a note carries an accidental, which is Pitch::accidental_is_written
EnharmonicFixer.hasNatAccalpha/analysis/fixer.pymissingwhether it carries a natural, likewise
EnharmonicFixer.hasSharpFlatAccalpha/analysis/fixer.pymissingwhether it carries a sharp or a flat, likewise
EnharmonicFixer.stepEqalpha/analysis/fixer.pymissingwhether two notes stand on the same step
EnharmonicFixer.stepNotEqalpha/analysis/fixer.pymissingwhether they do not
EnharmonicFixer.intervalTooBigalpha/analysis/fixer.pymissingwhether the two are too far apart to be a misspelling, which the fix asks as it goes
calculateTrillNoteDurationalpha/analysis/ornamentRecognizer.pyportedornament_note_quarter_length
TrillRecognizer.recognizealpha/analysis/ornamentRecognizer.pyportedrecognize
TurnRecognizer.isAcceptableIntervalalpha/analysis/ornamentRecognizer.pyportedis_acceptable_interval
TurnRecognizer.recognizealpha/analysis/ornamentRecognizer.pyportedrecognize
OrnamentRecognizer.calculateOrnamentNoteQlalpha/analysis/ornamentRecognizer.pyportedornament_note_quarter_length
OrnamentRecognizer.calculateOrnamentTotalQlalpha/analysis/ornamentRecognizer.pyportedornament_total_quarter_length
findConsecutiveScalealpha/analysis/search.pyportedfind_consecutive_scale
ScoreCorrector.runomr/correctors.pyportedrun
ScoreCorrector.runPriorModelomr/correctors.pymissingmusic21's measure of how much the correction helped, which PriorsIntegrationScore carries
ScoreCorrector.getAllHashesomr/correctors.pyportedall_hashes
ScoreCorrector.getSinglePartomr/correctors.pyportedsingle_part_mut
ScoreCorrector.runHorizontalCorrectionModelomr/correctors.pyportedrun_horizontal_correction_model
ScoreCorrector.getMeasureSliceomr/correctors.pymissingthe same measure across every part, which vertical_probability_dist reads as it goes
ScoreCorrector.getAllIncorrectMeasuresomr/correctors.pyportedall_incorrect_measures
ScoreCorrector.verticalProbabilityDistomr/correctors.pyportedvertical_probability_dist
ScoreCorrector.getVerticalProbabilityDistributionSinglePartomr/correctors.pymissinga step of the vertical correction, which vertical_probability_dist does for every part at once
ScoreCorrector.getVerticalProbabilityDistributionSinglePartSingleMeasureomr/correctors.pymissinga step of the same
ScoreCorrector.runVerticalSearchomr/correctors.pyportedrun_vertical_search
ScoreCorrector.substituteOneMeasureContentsForAnotheromr/correctors.pyportedsubstitute_measure
ScoreCorrector.runVerticalCorrectionModelomr/correctors.pyportedrun_vertical_correction_model
ScoreCorrector.generateCorrectedScoreomr/correctors.pyportedgenerate_corrected_score
SinglePart.getMeasuresomr/correctors.pymissingthe measures of the part, which the Stream it was read from holds
SinglePart.getIncorrectMeasureIndicesomr/correctors.pyportedfind_incorrect_measures
SinglePart.getSequenceHashesFromMeasureStreamomr/correctors.pyportedhashed_notes
SinglePart.horizontalProbabilityDistomr/correctors.pyportedhorizontal_probability_dist
SinglePart.runHorizontalSearchomr/correctors.pyportedrun_horizontal_search
SinglePart.runHorizontalCorrectionModelomr/correctors.pyportedrun_horizontal_correction_model
SinglePart.getProbabilityDistributionomr/correctors.pyportedprobability_distribution
MeasureHash.getHashStringomr/correctors.pyportedmeasure_hash
MeasureHash.hashNoteomr/correctors.pyportedmeasure_hash
MeasureHash.hashGraceomr/correctors.pyportedmeasure_hash
MeasureHash.hashRestomr/correctors.pyportedmeasure_hash
MeasureHash.hashQuarterLengthomr/correctors.pyportedmeasure_hash
MeasureHash.setSequenceMatcheromr/correctors.pymissingkeeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported
MeasureHash.getMeasureDifferenceomr/correctors.pyportedmeasure_difference
MeasureHash.getOpCodesomr/correctors.pyportedopcodes
MeasureHash.getProbabilityBasedOnChangesomr/correctors.pyportedprobability_based_on_changes
MeasureHash.differenceProbabilityForOneOpCodeomr/correctors.pymissingthe odds of one edit, which probability_based_on_changes sums
MeasureHash.getProbabilityOnEqualityomr/correctors.pymissingthe odds of two measures reading alike, likewise
MeasureHash.getProbabilityOnOmissionomr/correctors.pymissingthe odds of a note left out, likewise
MeasureHash.getProbabilityOnAdditionomr/correctors.pymissingthe odds of a note put in, likewise
MeasureHash.getProbabilityOnSubstituteomr/correctors.pyportedprobability_on_substitute
MeasureHash.getProbabilityFromOneCharSubomr/correctors.pyportedprobability_from_one_char_sub
MeasureSlice.getSliceHashesomr/correctors.pymissingthe hashes of the measure across every part, which ScoreCorrector::vertical_probability_dist reads as it goes
MeasureSlice.runSliceSearchomr/correctors.pymissingthe search across the parts, which run_vertical_search does
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
histogramaudioSearch/__init__.pyportedhistogram
autocorrelationFunctionaudioSearch/__init__.pyportedautocorrelation_frequency
prepareThresholdsaudioSearch/__init__.pyportedprepare_thresholds
interpolationaudioSearch/__init__.pyportedinterpolation
normalizeInputFrequencyaudioSearch/__init__.pyportednormalize_input_frequency
pitchFrequenciesToObjectsaudioSearch/__init__.pyportedpitch_frequencies_to_objects
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
detectPitchFrequenciesaudioSearch/__init__.pyporteddetect_pitch_frequencies
smoothFrequenciesaudioSearch/__init__.pyportedsmooth_frequencies
joinConsecutiveIdenticalPitchesaudioSearch/__init__.pyportedjoin_consecutive_identical_pitches
quantizeDurationaudioSearch/__init__.pyportedquantize_duration
quarterLengthEstimationaudioSearch/__init__.pyportedquarter_length_estimation
notesAndDurationsToStreamaudioSearch/__init__.pyportednotes_and_durations_to_stream
decisionProcessaudioSearch/__init__.pyporteddecision_process
ContiguousSegmentOfNotessearch/serial.pyportedContiguousSegment
ContiguousSegmentSearchersearch/serial.pyportedContiguousSegmentSearcher
SegmentMatchersearch/serial.pyportedSegmentMatcher
TransposedSegmentMatchersearch/serial.pymissingone of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes
TransformedSegmentMatchersearch/serial.pymissingMatching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other
MultisetSegmentMatchersearch/serial.pymissingMatching::Multiset, which compares the pitch classes in any order
TransposedMultisetMatchersearch/serial.pymissingMatching::TransposedMultiset
TransposedInvertedMultisetMatchersearch/serial.pymissingMatching::TransposedInvertedMultiset
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.byLengthsearch/serial.pyportedby_length
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.repssearch/serial.pyportedrepetitions
SegmentMatcher.includeChordssearch/serial.pyportedinclude_chords
SegmentMatcher.getContiguousSegmentsByLengthsearch/serial.pymissingthe searcher's by_length, which find asks for itself
SegmentMatcher.findsearch/serial.pyportedfind
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
SegmentMatcher.checkSearchedAlreadysearch/serial.pymissingwhether a segment the same as one already searched for is to be passed over, which find keeps as it goes
SegmentMatcher.normalizesearch/serial.pymissinghow 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.pymissingthe comparison Matching decides, which the crate does inside find
labelSegmentssearch/serial.pyportedlabel
labelTransposedSegmentssearch/serial.pyportedlabel
labelTransformedSegmentssearch/serial.pyportedlabel
labelMultisetssearch/serial.pyportedlabel
labelTransposedMultisetssearch/serial.pyportedlabel
labelTransposedAndInvertedMultisetssearch/serial.pyportedlabel

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

46 members

music21 memberWhy the crate has no function for it
answered by the facade alone — 46
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
ConcreteScale.isConcretescale/__init__.pyevery Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one
ConcreteScale.abstractscale/__init__.pya scale's pattern is its ScaleType or the steps it was given, read with scale_type and custom_steps; there is no abstract scale object beside it, and the wheel hands music21 one built from those
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
TimeSignature.resetValuesmeter/base.pyrebuilding a meter in place; a new one is built instead
TimeSignature.loadmeter/base.pyrebuilding a meter in place; a new one is built instead
Instrument.partIdRandomizeinstrument.pymakes an id up out of the clock and a random number; the crate keeps the id a score gives (part_id) and makes none up, reading no clock -- the wheel gives a random one as music21 does
Instrument.instrumentIdRandomizeinstrument.pymakes an id up out of the clock and a random number; the crate keeps the id a score gives (instrument_id) and makes none up, reading no clock -- the wheel gives a random one as music21 does
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
Note.pitchChangednote.pyobserver callback; there is none
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
MeterSequence.partitionmeter/core.pyone setter dispatching on the type of what it is handed; the three partitions it dispatches to are each ported
MeterSequence.loadmeter/core.pyrebuilding a sequence in place; a new one is built instead
Ornament.fillListOfRealizedNotesexpressions.pya helper realize fills its lists with; realize is 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
Stream.clefstream/base.pythe clef a stream opens with; the clef in force is read by in_force_before, a crate stream keeping no clef of its own
Stream.removestream/base.pytakes a named object out; retain_leaves and remove_event take out by place or by test
Stream.setElementOffsetstream/base.pyas elementOffset: events_mut reaches each in place
Stream.elementOffsetstream/base.pyasks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset
Stream.measurestream/base.pyone measure by its number; measures answers them all, each carrying its own number
Stream.sortedstream/base.pyas sort
Score.measurestream/base.pyone measure by its number; measures answers them all, each carrying its own number
Stylestyle.pythe base class every style hangs off; the crate keeps the few drawing values it reads and writes beside the thing drawn
NoteStylestyle.pyhow a note is drawn beyond its colour and its size
SpannerBundlespanner.pythe collection music21 keeps a stream's spanners in; a crate stream holds its own
Spanner.addSpannedElementsspanner.pyadds elements by object; Spanner::new takes the positions it joins
Spanner.hasSpannedElementspanner.pywhether an element is among them, which is spanned().contains
Spanner.replaceSpannedElementspanner.pyswaps one element for another by object
Spanner.getFirstspanner.pythe first element itself; spanned gives its position and the stream hands back what stands there
Spanner.getLastspanner.pythe last element itself, likewise

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.