Crate report
The suites that test the crate
6674 passing, all green
| Suite | Tests | Result | Passed | Failed | Command |
|---|---|---|---|---|---|
| Workspace | passed | 1185 | 0 | cargo test --workspace --all-targets |
|
| Workspace doctests | passed | 177 | 0 | cargo test --workspace --doc |
|
| Python parity and music21's doctests | passed | 157 | 0 | cargo test --manifest-path python-parity/Cargo.toml -- --test-threads=1 |
|
music21's own test suiteRun twice, once on music21 and once on the crate, and diffed: music21's own suite fails a number of its own tests in any environment, so what counts is that the two sets match.0 of these fail on music21 itself; 0 fail only under music21_rs |
passed | 5155 | 0 | cargo run --release -p xtask --features python -- music21-suite |
A suite whose tooling is not installed is skipped, with the reason, rather than failed. One marked for both runs music21's code over the wheel's classes, which answer out of the crate, so a failure there may be either's.
Test coverage
of music21-rs, across every instrumented suite
Coverage is not a run of its own: the suites are run instrumented and the profiles merged. The workspace tests, their rustdoc examples and the parity suite reach it, music21's own suite among them, run against the crate linked into the parity suite; whatever goes through the installed wheel does not. Generated tables and the tooling crates are excluded. Read it file by file →
Speed and size against music21
crate 68.0× median, across 24 cases
| Case | music21 | crate | crate × |
|---|---|---|---|
| construction | |||
Pitch('C#4') | 1.5 µs | 123 ns | 12.3× |
Note('C#4') | 7.0 µs | 134 ns | 52.2× |
Interval('P5') | 15.0 µs | 74 ns | 202.7× |
Chord('C4 E4 G4') | 28.2 µs | 666 ns | 42.4× |
| chord analysis | |||
Chord.commonName5 chords | 893.1 µs | 9.0 µs | 99.1× |
Chord.root()5 chords | 194.8 µs | — | — |
Chord.inversion()5 chords | 291.0 µs | 3.9 µs | 74.1× |
Chord.forteClass5 chords | 418.7 µs | 6.1 µs | 68.4× |
Chord.primeForm5 chords | 421.3 µs | 6.8 µs | 61.8× |
Chord.intervalVector5 chords | 421.1 µs | 7.2 µs | 58.2× |
Chord.isDominantSeventh()5 chords | 412.9 µs | 4.4 µs | 93.7× |
Chord.orderedPitchClasses5 chords | 184.2 µs | 4.9 µs | 37.7× |
Chord: forteClass + primeForm + intervalVectorone chord, three questions | 93.7 µs | 3.0 µs | 31.2× |
| pitch | |||
Pitch.transpose('M3') | 41.9 µs | 378 ns | 110.9× |
Pitch.frequency | 1.4 µs | 305 ns | 4.7× |
Pitch.getEnharmonic() | 33.8 µs | — | — |
Interval(p1, p2) | 16.6 µs | 295 ns | 56.2× |
| serial | |||
pcToToneRow(...).matrix() | 4.2 ms | 5.4 µs | 772.5× |
ToneRow.zeroCenteredTransformation | 408.6 µs | 496 ns | 824.3× |
| figured bass | |||
Segment(G2, '7').allCorrectSinglePossibilities() | 4.4 ms | 53.3 µs | 82.1× |
Segment(G2, '7') to Segment(C3), a dominant seventh resolving | 17.2 ms | 259.4 µs | 66.3× |
Segment(C3) to Segment(D3, '4,3'), every pair of voicings | 6.2 ms | 90.5 µs | 68.0× |
| warm object | |||
Chord.commonName (cached)music21 memoizes | 120 ns | — | — |
Chord.forteClass (cached)music21 memoizes | 2.3 µs | — | — |
music21 11.0.0b12, Python 3.13.16 (Linux-6.17.0-1022-azure-x86_64-with-glibc2.39). Every side must agree on the answer before any of them is timed. wheel is what a caller installs, asked through the same Python API as music21; crate is the same operation in Rust with no Python in the way, and binding is what lies between the two. Each case builds a fresh object, except those marked cached.
3927 of music21's own tests, timed on every side102s on music21, 97s on music21-rs, 98s on music21-rs-wheel; music21-rs median 1.00×
| Test | music21 | music21-rs | music21-rs × |
|---|---|---|---|
| furthest ahead | |||
timeSignatureToMidiEvents (music21.midi.translate) | 404 ms | 3 ms | 135.44× |
findTransformedHistorical (music21.serial.TwelveToneRow) | 92 ms | 1 ms | 77.87× |
isTranspositionallySymmetrical (music21.chord.Chord) | 108 ms | 3 ms | 38.44× |
testFigureFromChordAddOmit (music21.harmony.Test.testFigureFromChordAddOmit) | 100 ms | 3 ms | 33.97× |
fromIntervalVector (music21.chord) | 59 ms | 2 ms | 26.96× |
getZRelation (music21.chord.Chord) | 56 ms | 2 ms | 25.76× |
findHistorical (music21.serial.TwelveToneRow) | 31 ms | 1 ms | 25.25× |
testOctaveRepeatingScaleStepsReachingAnEnharmonicOctave (music21.scale.test_scale_main.Test.testOctaveRepeatingScaleStepsReachingAnEnharmonicOctave) | 68 ms | 3 ms | 24.18× |
fromForteClass (music21.chord) | 39 ms | 2 ms | 21.54× |
simplifyMultipleEnharmonics (music21.pitch) | 38 ms | 2 ms | 18.73× |
testMelodicMinorB (music21.scale.test_scale_main.Test.testMelodicMinorB) | 40 ms | 2 ms | 18.59× |
TranspositionChecker (music21.analysis.transposition) | 38 ms | 2 ms | 15.47× |
| furthest behind | |||
testARFFNumericClassValues (music21.features.outputFormats.Test.testARFFNumericClassValues) | 17 ms | 1.99 s | 0.01× |
testIncludeClassLabelAndId (music21.features.outputFormats.Test.testIncludeClassLabelAndId) | 30 ms | 2.00 s | 0.01× |
testParallelRun (music21.features.base.Test.testParallelRun) | 334 ms | 2.31 s | 0.14× |
testIncludeFlagsOff (music21.features.base.Test.testIncludeFlagsOff) | 445 ms | 2.39 s | 0.19× |
test_makeBeams__paddingRight (music21.stream.tests.Test.test_makeBeams__paddingRight) | 2 ms | 10 ms | 0.23× |
SaxophoneFractionFeature (music21.features.jSymbolic) | 4 ms | 13 ms | 0.32× |
setMinorRootParse (music21.romanText.translate.PartTranslator) | 3 ms | 8 ms | 0.34× |
populateFromSortedList (music21.tree.core.AVLTree) | 3 ms | 7 ms | 0.42× |
test_example04_4 (music21.braille.test.Test.test_example04_4) | 6 ms | 14 ms | 0.44× |
testCoreUnit2 (music21.mei.test_base.Test.testCoreUnit2) | 5 ms | 12 ms | 0.44× |
quarterConversion (music21.duration) | 17 ms | 36 ms | 0.47× |
testTextExpressionsD (music21.musicxml.test_xmlToM21.Test.testTextExpressionsD) | 12 ms | 23 ms | 0.51× |
A test counts only where every side ran it, passed it, and took longer than a millisecond, and what the garbage collector took inside a test is taken off before the sides are compared — a full collection lands on whichever test is running, and each test is timed once. music21-rs is the crate linked into the binary that ran the suite — the working tree — and music21-rs-wheel is the wheel a caller installs, so what lies between those two is the packaging rather than the code. All 3927 tests, side by side →
What each costs to install
Against music21's own tests
9191 of 11558 examples and 666 of 666 unit tests, across 47 modules, 7 with no harness yet
| Module | Docstrings | Examples | Unit tests |
|---|---|---|---|
music21.stream.baseno harness yet |
0 of 144 |
0 of 2278 |
271 of 271 |
music21.chord |
108 of 108 |
981 of 981 |
31 of 31 |
music21.pitch |
84 of 84 |
934 of 934 |
38 of 38 |
music21.interval |
107 of 107 |
771 of 771 |
14 of 14 |
music21.duration |
53 of 53 |
588 of 588 |
16 of 16 |
music21.roman |
34 of 34 |
560 of 560 |
34 of 34 |
music21.voiceLeading |
61 of 61 |
515 of 515 |
2 of 2 |
music21.meter.base |
34 of 34 |
387 of 387 |
22 of 22 |
music21.meter.core |
39 of 39 |
386 of 386 |
none |
music21.harmony |
26 of 26 |
364 of 364 |
28 of 28 |
music21.expressions |
40 of 40 |
350 of 350 |
12 of 12 |
music21.scale |
62 of 62 |
344 of 344 |
58 of 58 |
music21.note |
33 of 33 |
341 of 341 |
13 of 13 |
music21.key |
18 of 18 |
245 of 245 |
7 of 7 |
music21.figuredBass.possibility |
16 of 16 |
211 of 211 |
none |
music21.tempo |
27 of 27 |
196 of 196 |
17 of 17 |
music21.figuredBass.resolution |
13 of 13 |
172 of 172 |
none |
music21.clef |
29 of 29 |
151 of 151 |
4 of 4 |
music21.instrument |
15 of 15 |
150 of 150 |
12 of 12 |
music21.serial |
22 of 22 |
149 of 149 |
6 of 6 |
music21.figuredBass.notation |
12 of 12 |
129 of 129 |
3 of 3 |
music21.analysis.discrete |
25 of 25 |
122 of 122 |
7 of 7 |
music21.figuredBass.segment |
12 of 12 |
122 of 122 |
none |
music21.beam |
13 of 13 |
112 of 112 |
2 of 2 |
music21.analysis.neoRiemannian |
13 of 13 |
107 of 107 |
6 of 6 |
music21.sieve |
25 of 25 |
107 of 107 |
9 of 9 |
music21.articulations |
27 of 27 |
105 of 105 |
2 of 2 |
music21.figuredBass.checker |
12 of 12 |
102 of 102 |
none |
music21.figuredBass.realizer |
8 of 8 |
80 of 80 |
3 of 3 |
music21.figuredBass.examples |
11 of 11 |
71 of 71 |
none |
music21.chord.tables |
10 of 10 |
65 of 65 |
5 of 5 |
music21.scale.scala |
7 of 7 |
55 of 55 |
5 of 5 |
music21.dynamics |
6 of 6 |
49 of 49 |
6 of 6 |
music21.volume |
9 of 9 |
46 of 46 |
9 of 9 |
music21.analysis.windowedno harness yet |
0 of 3 |
0 of 35 |
5 of 5 |
music21.analysis.transposition |
7 of 7 |
28 of 28 |
7 of 7 |
music21.figuredBass.realizerScale |
4 of 4 |
26 of 26 |
none |
music21.figuredBass.harmony |
4 of 4 |
24 of 24 |
none |
music21.analysis.harmonicFunction |
2 of 2 |
22 of 22 |
4 of 4 |
music21.analysis.floatingKeyno harness yet |
0 of 2 |
0 of 14 |
1 of 1 |
music21.analysis.patelno harness yet |
0 of 2 |
0 of 14 |
none |
music21.analysis.metricalno harness yet |
0 of 2 |
0 of 13 |
none |
music21.tie |
2 of 2 |
13 of 13 |
1 of 1 |
music21.analysis.pitchAnalysisno harness yet |
0 of 1 |
0 of 7 |
none |
music21.analysis.enharmonics |
1 of 1 |
6 of 6 |
4 of 4 |
music21.analysis.segmentByRestsno harness yet |
0 of 2 |
0 of 6 |
2 of 2 |
music21.figuredBass.rules |
1 of 1 |
5 of 5 |
none |
| every module | 1032 of 1188 |
9191 of 11558 |
666 of 666 |
music21's own docstrings and unit tests, run over the wheel's classes answering out of the crate, so a row here is a row for both. A docstring passes only when every one of its examples does. Every docstring is read as music21's own runner reads it, which rewrites an object's address to 0x... before comparing; the unit-test column is music21's own test suite, attributed per module, where a test music21 itself fails counts as not passing.
Ported from music21
1635 members:1348 in the crate
▶Chordchord/__init__.py
crate 97 of 97
Chord analysis and the notation its notes carry. The per-note getters and setters music21 deprecated in v11 are the note's own methods here, reached through notes_mut.
| music21 | Crate | music21-rs |
|---|---|---|
formatVectorString | ported | format_vector_string |
add | ported | add |
annotateIntervals | ported | annotate_intervals |
areZRelations | ported | are_z_relations |
bass | ported | bass |
canBeDominantV | ported | can_be_dominant_v |
canBeTonic | ported | can_be_tonic |
closedPosition | ported | closed_position |
containsSeventh | ported | contains_seventh |
containsTriad | ported | contains_triad |
geometricNormalForm | ported | geometric_normal_form |
getChordStep | ported | chord_step |
getColor | ported | color |
getNotehead | ported | notehead |
getNoteheadFill | ported | notehead_fill |
getStemDirection | ported | stem_direction |
getTie | ported | tie |
getVolume | ported | volume |
getZRelation | ported | z_relation |
hasAnyEnharmonicSpelledPitches | ported | has_any_enharmonic_spelled_pitches |
hasAnyRepeatedDiatonicNote | ported | has_any_repeated_diatonic_note |
hasRepeatedChordStep | ported | has_repeated_chord_step |
intervalFromChordStep | ported | interval_from_chord_step |
inversion | ported | inversion |
setInversion | ported | set_inversion |
inversionName | ported | inversion_name |
inversionText | ported | inversion_text |
isAugmentedSixth | ported | is_augmented_sixth |
isAugmentedTriad | ported | is_augmented_triad |
isConsonant | ported | is_consonant |
isDiminishedSeventh | ported | is_diminished_seventh |
isSeventhOfType | ported | is_seventh_of_type |
isDiminishedTriad | ported | is_diminished_triad |
isDominantSeventh | ported | is_dominant_seventh |
isFalseDiminishedSeventh | ported | is_false_diminished_seventh |
isFrenchAugmentedSixth | ported | is_french_augmented_sixth |
isGermanAugmentedSixth | ported | is_german_augmented_sixth |
isHalfDiminishedSeventh | ported | is_half_diminished_seventh |
isIncompleteMajorTriad | ported | is_incomplete_major_triad |
isIncompleteMinorTriad | ported | is_incomplete_minor_triad |
isItalianAugmentedSixth | ported | is_italian_augmented_sixth |
isMajorTriad | ported | is_major_triad |
isMinorTriad | ported | is_minor_triad |
isTranspositionallySymmetrical | ported | is_transpositionally_symmetrical |
isSeventh | ported | is_seventh |
isNinth | ported | is_ninth |
isSwissAugmentedSixth | ported | is_swiss_augmented_sixth |
isTriad | ported | is_triad |
removeRedundantPitches | ported | remove_redundant_pitches |
removeRedundantPitchClasses | ported | remove_redundant_pitch_classes |
removeRedundantPitchNames | ported | remove_redundant_pitch_names |
root | ported | root |
semiClosedPosition | ported | semi_closed_position |
semitonesFromChordStep | ported | semitones_from_chord_step |
setColor | ported | set_color |
setNotehead | ported | set_notehead |
setNoteheadFill | ported | set_notehead_fill |
setStemDirection | ported | set_stem_direction |
setTie | ported | set_tie |
setVolume | ported | set_volume |
simplifyEnharmonics | ported | simplify_enharmonics |
isSortedDiatonicAscending | ported | is_sorted_diatonic_ascending |
sortAscending | ported | sort_ascending |
sortChromaticAscending | ported | sort_chromatic_ascending |
sortDiatonicAscending | ported | sort_diatonic_ascending |
sortFrequencyAscending | ported | sort_frequency_ascending |
transpose | ported | transpose |
chordTablesAddress | ported | chord_tables_address_entry |
commonName | ported | common_name |
duration | ported | duration |
fifth | ported | fifth |
forteClass | ported | forte_class |
forteClassNumber | ported | forte_class_number |
forteClassTn | ported | forte_class_tn |
forteClassTnI | ported | forte_class_tni |
fullName | ported | full_name |
hasZRelation | ported | has_z_relation |
intervalVector | ported | interval_class_vector |
intervalVectorString | ported | interval_vector_string |
isPrimeFormInversion | ported | is_prime_form_inversion |
multisetCardinality | ported | multiset_cardinality |
notes | ported | notes |
normalOrder | ported | normal_order |
normalOrderString | ported | normal_order_string |
orderedPitchClasses | ported | pitch_classes |
orderedPitchClassesString | ported | ordered_pitch_classes_string |
pitchClassCardinality | ported | pitch_class_cardinality |
pitchClasses | ported | note_pitch_classes |
pitchNames | ported | pitch_names |
pitchedCommonName | ported | pitched_common_name |
pitches | ported | pitches |
primeForm | ported | prime_form |
primeFormString | ported | prime_form_string |
quality | ported | quality |
scaleDegrees | ported | scale_degrees |
seventh | ported | seventh |
third | ported | third |
▶Pitchpitch.py
crate 43 of 45
2 to port
| music21 | Crate | music21-rs |
|---|---|---|
groups | missing | the 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 |
informClient | missing | observer callback for a containing note; there is none |
accidental | ported | accidental |
microtone | ported | microtone |
isTwelveTone | ported | is_twelve_tone |
getCentShiftFromMidi | ported | cent_shift_from_midi |
alter | ported | alter |
convertQuarterTonesToMicrotones | ported | convert_quarter_tones_to_microtones |
convertMicrotonesToQuarterTones | ported | convert_microtones_to_quarter_tones |
ps | ported | ps |
midi | ported | midi |
name | ported | name |
unicodeName | ported | unicode_name |
nameWithOctave | ported | name_with_octave |
unicodeNameWithOctave | ported | unicode_name_with_octave |
fullName | ported | full_name |
step | ported | step |
pitchClass | ported | pitch_class |
pitchClassString | ported | pitch_class_string |
octave | ported | octave |
octaveIsImplicit | ported | octave_is_implicit |
implicitOctave | ported | implicit_octave |
german | ported | german |
italian | ported | italian |
spanish | ported | spanish |
french | ported | french |
frequency | ported | frequency_hz |
freq440 | ported | frequency_hz |
getHarmonic | ported | harmonic |
harmonicFromFundamental | ported | harmonic_from_fundamental |
harmonicString | ported | harmonic_string |
harmonicAndFundamentalFromPitch | ported | harmonic_and_fundamental_from_pitch |
harmonicAndFundamentalStringFromPitch | ported | harmonic_and_fundamental_string_from_pitch |
isEnharmonic | ported | is_enharmonic |
getHigherEnharmonic | ported | get_higher_enharmonic |
getLowerEnharmonic | ported | get_lower_enharmonic |
simplifyEnharmonic | ported | simplify_enharmonic |
getEnharmonic | ported | get_enharmonic |
getAllCommonEnharmonics | ported | all_common_enharmonics |
diatonicNoteNum | ported | diatonic_note_number |
transpose | ported | transpose |
transposeBelowTarget | ported | transpose_below_target |
transposeAboveTarget | ported | transpose_above_target |
updateAccidentalDisplay | ported | update_accidental_display |
getStringHarmonic | ported | string_harmonic |
▶Accidentalpitch.py
crate 12 of 12
| music21 | Crate | music21-rs |
|---|---|---|
listNames | ported | list_names |
set | ported | set |
isTwelveTone | ported | is_twelve_tone |
setAttributeIndependently | ported | set_attribute_independently |
inheritDisplay | ported | inherit_display |
name | ported | name |
alter | ported | alter |
modifier | ported | modifier |
displayType | ported | display_type |
displayStatus | ported | display_status |
unicode | ported | unicode |
fullName | ported | full_name |
▶Microtonepitch.py
crate 3 of 3
| music21 | Crate | music21-rs |
|---|---|---|
alter | ported | alter |
cents | ported | cents |
harmonicShift | ported | harmonic_shift |
▶Intervalinterval.py
crate 29 of 29
| music21 | Crate | music21-rs |
|---|---|---|
generic | ported | generic |
name | ported | short_name |
niceName | ported | name |
simpleName | ported | simple_name |
simpleNiceName | ported | simple_nice_name |
semiSimpleName | ported | semi_simple_name |
semiSimpleNiceName | ported | semi_simple_nice_name |
directedName | ported | directed_name |
directedNiceName | ported | directed_nice_name |
directedSimpleName | ported | directed_simple_name |
directedSimpleNiceName | ported | directed_simple_nice_name |
semitones | ported | semitones |
direction | ported | direction |
specifier | ported | specifier |
specificName | ported | specific_name |
isDiatonicStep | ported | is_diatonic_step |
isChromaticStep | ported | is_chromatic_step |
isStep | ported | is_step |
isSkip | ported | is_skip |
isConsonant | ported | is_consonant |
complement | ported | complement |
intervalClass | ported | interval_class |
cents | ported | cents |
transposePitch | ported | transpose_pitch |
reverse | ported | reversed |
pitchStart | ported | pitch_start |
pitchEnd | ported | pitch_end |
noteStart | ported | note_start |
noteEnd | ported | note_end |
▶GenericIntervalinterval.py
crate 26 of 26
| music21 | Crate | music21-rs |
|---|---|---|
value | ported | value |
directed | ported | directed |
undirected | ported | undirected |
direction | ported | direction |
isSkip | ported | is_skip |
isDiatonicStep | ported | is_diatonic_step |
isStep | ported | is_step |
isUnison | ported | is_unison |
simpleUndirected | ported | simple_undirected |
semiSimpleUndirected | ported | semi_simple_undirected |
undirectedOctaves | ported | undirected_octaves |
octaves | ported | octaves |
simpleDirected | ported | simple_directed |
semiSimpleDirected | ported | semi_simple_directed |
perfectable | ported | is_perfectable |
niceName | ported | nice_name |
simpleNiceName | ported | simple_nice_name |
semiSimpleNiceName | ported | semi_simple_nice_name |
staffDistance | ported | staff_distance |
mod7inversion | ported | mod7_inversion |
mod7 | ported | mod7 |
complement | ported | complement |
reverse | ported | reverse |
transposePitch | ported | transpose_pitch |
transposePitchKeyAware | ported | transpose_pitch_key_aware |
getDiatonic | ported | get_diatonic |
▶DiatonicIntervalinterval.py
crate 25 of 25
| music21 | Crate | music21-rs |
|---|---|---|
name | ported | name |
niceName | ported | nice_name |
specificName | ported | specific_name |
simpleName | ported | simple_name |
simpleNiceName | ported | simple_nice_name |
semiSimpleName | ported | semi_simple_name |
semiSimpleNiceName | ported | semi_simple_nice_name |
direction | ported | direction |
directedName | ported | directed_name |
directedNiceName | ported | directed_nice_name |
directedSimpleName | ported | directed_simple_name |
directedSimpleNiceName | ported | directed_simple_nice_name |
directedSemiSimpleName | ported | directed_semi_simple_name |
directedSemiSimpleNiceName | ported | directed_semi_simple_nice_name |
isStep | ported | is_step |
isDiatonicStep | ported | is_diatonic_step |
isSkip | ported | is_skip |
perfectable | ported | is_perfectable |
mod7inversion | ported | mod7_inversion |
mod7 | ported | mod7 |
reverse | ported | reverse |
getChromatic | ported | get_chromatic |
transposePitch | ported | transpose_pitch |
specifierAbbreviation | ported | specifier_abbreviation |
cents | ported | cents |
▶ChromaticIntervalinterval.py
crate 13 of 13
| music21 | Crate | music21-rs |
|---|---|---|
cents | ported | cents |
directed | ported | directed |
undirected | ported | undirected |
direction | ported | direction |
mod12 | ported | mod12 |
simpleUndirected | ported | simple_undirected |
simpleDirected | ported | simple_directed |
intervalClass | ported | interval_class |
isChromaticStep | ported | is_chromatic_step |
isStep | ported | is_step |
reverse | ported | reverse |
getDiatonic | ported | get_diatonic |
transposePitch | ported | transpose_pitch |
▶Specifierinterval.py
crate 4 of 4
| music21 | Crate | music21-rs |
|---|---|---|
niceName | ported | nice_name |
inversion | ported | inversion |
semitonesAbovePerfect | ported | semitones_above_perfect |
semitonesAboveMajor | ported | semitones_above_major |
▶interval.py functionsinterval.py
crate 20 of 20
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
convertStaffDistanceToInterval | ported | staff_distance_to_generic_number |
convertDiatonicNumberToStep | ported | convert_diatonic_number_to_step |
parseSpecifier | ported | parse_specifier |
convertGeneric | ported | convert_generic |
convertSemitoneToSpecifierGenericMicrotone | ported | convert_semitone_to_specifier_generic_microtone |
convertSemitoneToSpecifierGeneric | ported | convert_semitone_to_specifier_generic |
intervalToPythagoreanRatio | ported | pythagorean_ratio |
notesToGeneric | ported | notes_to_generic |
notesToChromatic | ported | notes_to_chromatic |
intervalsToDiatonic | ported | intervals_to_diatonic |
intervalFromGenericAndChromatic | ported | from_generic_and_chromatic |
getWrittenHigherNote | ported | written_higher_pitch |
getAbsoluteHigherNote | ported | absolute_higher_pitch |
getWrittenLowerNote | ported | written_lower_pitch |
getAbsoluteLowerNote | ported | absolute_lower_pitch |
transposePitch | ported | transpose_pitch |
transposeNote | ported | transpose_note |
notesToInterval | ported | between_pitches |
add | ported | sum |
subtract | ported | difference |
▶KeySignaturekey.py
crate 7 of 7
| music21 | Crate | music21-rs |
|---|---|---|
asKey | ported | as_key |
alteredPitches | ported | altered_pitches |
accidentalByStep | ported | accidental_by_step |
transpose | ported | transpose |
transposePitchFromC | ported | transpose_pitch_from_c |
getScale | ported | scale |
sharps | ported | sharps |
▶Keykey.py
crate 6 of 6
tonalCertainty belongs to a key that came out of analysis, so it lives on the ranked estimates in analysis.
| music21 | Crate | music21-rs |
|---|---|---|
relative | ported | relative |
parallel | ported | parallel |
tonicPitchNameWithCase | ported | tonic_pitch_name_with_case |
deriveByDegree | ported | derive_by_degree |
tonalCertainty | ported | tonal_certainty |
transpose | ported | transpose |
▶ConcreteScalescale/__init__.py
crate 23 of 27
4 to port
| music21 | Crate | music21-rs |
|---|---|---|
isConcrete | missing | every Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one |
abstract | missing | a 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 |
write | missing | writes 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 |
show | missing | opens the scale in another program, which is the caller's to do |
name | ported | music21_name |
getTonic | ported | tonic |
getDegreeMaxUnique | ported | degree_count |
transpose | ported | transpose |
tune | ported | tune |
romanNumeral | ported | roman_numeral |
getPitches | ported | pitches |
getChord | ported | chord |
pitchFromDegree | ported | pitch_at_degree |
pitchesFromScaleDegrees | ported | pitches_from_scale_degrees |
intervalBetweenDegrees | ported | interval_between_degrees |
getScaleDegreeFromPitch | ported | degree_of |
getScaleDegreeAndAccidentalFromPitch | ported | degree_and_accidental_of |
solfeg | ported | solfeg |
nextPitch | ported | next_pitch_above |
isNext | ported | is_next |
match | ported | match_pitches |
findMissing | ported | find_missing |
deriveRanked | ported | derive_ranked |
derive | ported | derive |
deriveAll | ported | derive_all |
deriveByDegree | ported | derive_by_degree |
getScalaData | ported | scala_data |
▶scale/__init__.py classesscale/__init__.py
crate 22 of 32
10 to port
The ConcreteScale subclasses, as ScaleType variants or runtime constructors.
| music21 | Crate | music21-rs |
|---|---|---|
Scale | missing | the abstract base |
AbstractScale | missing | a 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 |
AbstractDiatonicScale | missing | the IntervalNetwork layer |
AbstractOctatonicScale | missing | the IntervalNetwork layer |
AbstractHarmonicMinorScale | missing | the IntervalNetwork layer |
AbstractMelodicMinorScale | missing | the IntervalNetwork layer |
AbstractCyclicalScale | missing | the IntervalNetwork layer |
AbstractOctaveRepeatingScale | missing | the IntervalNetwork layer |
ConcreteScale | missing | realized by Scale, StepScale and ScalaScale |
DiatonicScale | missing | the diatonic modes are ScaleType variants |
MajorScale | ported | MajorScale |
MinorScale | ported | MinorScale |
DorianScale | ported | DorianScale |
PhrygianScale | ported | PhrygianScale |
LydianScale | ported | LydianScale |
MixolydianScale | ported | MixolydianScale |
HypodorianScale | ported | HypodorianScale |
HypophrygianScale | ported | HypophrygianScale |
HypolydianScale | ported | HypolydianScale |
HypomixolydianScale | ported | HypomixolydianScale |
LocrianScale | ported | LocrianScale |
HypolocrianScale | ported | HypolocrianScale |
HypoaeolianScale | ported | HypoaeolianScale |
HarmonicMinorScale | ported | HarmonicMinorScale |
MelodicMinorScale | ported | MelodicMinorScale |
OctatonicScale | ported | OctatonicScale |
OctaveRepeatingScale | ported | octave_repeating |
CyclicalScale | ported | cyclical |
ChromaticScale | ported | ChromaticScale |
WholeToneScale | ported | WholeToneScale |
SieveScale | ported | sieve |
ScalaScale | ported | ScalaScale |
▶RomanNumeralroman.py
crate 11 of 11
| music21 | Crate | music21-rs |
|---|---|---|
adjustMinorVIandVIIByQuality | ported | adjust_minor_vi_and_vii_by_quality |
transpose | ported | transpose |
romanNumeral | ported | roman_numeral |
figure | ported | figure |
figureAndKey | ported | figure_and_key |
key | ported | key |
scaleDegreeWithAlteration | ported | scale_degree_with_alteration |
bassScaleDegreeFromNotation | ported | bass_scale_degree_from_notation |
functionalityScore | ported | functionality_score |
isNeapolitan | ported | is_neapolitan |
isMixture | ported | is_mixture |
▶TimeSignaturemeter/base.py
crate 31 of 33
2 to port
The bar, the beats, the beams and the accent partitions, as the four MeterSequences music21 hangs off a meter; the tree is modelled here rather than the numbers being derived from the ratio alone.
| music21 | Crate | music21-rs |
|---|---|---|
resetValues | missing | rebuilding a meter in place; a new one is built instead |
load | missing | rebuilding a meter in place; a new one is built instead |
ratioString | ported | ratio_string |
ratioEqual | ported | ratio_equal |
numerator | ported | numerator |
denominator | ported | denominator |
barDuration | ported | bar_duration |
beatLengthToQuarterLengthRatio | ported | beat_length_to_quarter_length_ratio |
quarterLengthToBeatLengthRatio | ported | quarter_length_to_beat_length_ratio |
beatCount | ported | beat_count |
beatCountName | ported | beat_count_name |
beatDuration | ported | beat_duration |
beatDivisionCount | ported | beat_division_count |
beatDivisionCountName | ported | beat_division_count_name |
beatDivisionDurations | ported | beat_division_durations |
beatSubDivisionDurations | ported | beat_sub_division_durations |
classification | ported | classification |
summedNumerator | ported | summed_numerator |
getBeams | ported | beams_for |
setDisplay | ported | set_display |
getAccent | ported | accent |
setAccentWeight | ported | set_accent_weight |
averageBeatStrength | ported | average_beat_strength |
getMeasureOffsetOrMeterModulusOffset | ported | offset_in_bar |
getAccentWeight | ported | accent_weight |
getBeat | ported | beat_at_offset |
getBeatOffsets | ported | beat_offsets |
getBeatDuration | ported | beat_duration |
getOffsetFromBeat | ported | offset_from_beat |
getBeatProgress | ported | beat_progress |
getBeatProportion | ported | beat_proportion |
getBeatProportionStr | ported | beat_proportion_string |
getBeatDepth | ported | beat_depth |
▶MetronomeMarktempo.py
crate 10 of 10
| music21 | Crate | music21-rs |
|---|---|---|
referent | ported | referent |
numberSounding | ported | number_sounding |
getQuarterBPM | ported | quarter_bpm |
setQuarterBPM | ported | quarter_bpm |
getTextExpression | ported | text_expression |
getEquivalentByReferent | ported | equivalent_by_referent |
getMaintainedNumberWithReferent | ported | maintained_number_with_referent |
secondsPerQuarter | ported | seconds_per_quarter |
durationToSeconds | ported | duration_to_seconds |
secondsToDuration | ported | seconds_to_duration |
▶MetricModulationtempo.py
crate 8 of 8
A change of tempo written as an equation between two metronome marks.
| music21 | Crate | music21-rs |
|---|---|---|
oldMetronome | ported | old_metronome |
oldReferent | ported | old_referent |
newMetronome | ported | new_metronome |
newReferent | ported | new_referent |
number | ported | number |
updateByContext | ported | update_from |
setEqualityByReferent | ported | set_equality_by_referent |
setOtherByReferent | ported | set_other_by_referent |
▶Instrumentinstrument.py
crate 2 of 4
2 to port
One of music21's instrument classes, with what an instrument of it starts out as.
| music21 | Crate | music21-rs |
|---|---|---|
partIdRandomize | missing | makes 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 |
instrumentIdRandomize | missing | makes 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 |
bestName | ported | best_name |
autoAssignMidiChannel | ported | auto_assign_midi_channel |
▶StringInstrumentinstrument.py
crate 1 of 1
A string instrument's open strings, the only member music21 gives its string family.
| music21 | Crate | music21-rs |
|---|---|---|
stringPitches | ported | string_pitches |
▶UnpitchedPercussioninstrument.py
crate 1 of 1
How an unpitched percussion instrument is played, and the drum that plays.
| music21 | Crate | music21-rs |
|---|---|---|
modifier | ported | modifier |
▶instrument.py functionsinstrument.py
crate 8 of 8
Module-level helpers: finding an instrument by name or program, and what instruments do to a stream they stand in.
| music21 | Crate | music21-rs |
|---|---|---|
unbundleInstruments | ported | unbundle_instruments |
bundleInstruments | ported | bundle_instruments |
ensembleNameBySize | ported | ensemble_name_by_size |
deduplicate | ported | deduplicate |
instrumentFromMidiProgram | ported | from_midi_program |
partitionByInstrument | ported | partition_by_instrument |
fromString | ported | from_name |
getAllNamesForInstrument | ported | all_names |
▶PercussionMappermidi/percussion.py
crate 2 of 2
The General MIDI percussion map, both ways: the instrument a key plays, played the way that key says, and the key an instrument is played by. music21's reverseInstrumentMapping is tables::PERCUSSION_KEYS.
| music21 | Crate | music21-rs |
|---|---|---|
midiPitchToInstrument | ported | for_percussion_key |
midiInstrumentToPitch | ported | percussion_pitch |
▶Durationduration.py
crate 22 of 24
2 to port
A quarter length, the note values it is written as, and the tuplets it is written inside.
| music21 | Crate | music21-rs |
|---|---|---|
informClient | missing | observer callback for a containing note; there is none |
currentComponents | missing | the working-out is not deferred here, so there is no half-worked-out state to read |
linked | ported | linked |
addDurationTuple | ported | add_duration_tuple |
appendTuplet | ported | append_tuplet |
augmentOrDiminish | ported | augment_or_diminish |
clear | ported | clear |
componentIndexAtQtrPosition | ported | component_index_at_qtr_position |
componentStartTime | ported | component_start_time |
consolidate | ported | consolidate |
getGraceDuration | ported | grace_duration |
sliceComponentAtPosition | ported | slice_component_at_position |
splitDotGroups | ported | split_dot_groups |
components | ported | components |
dotGroups | ported | dot_groups |
dots | ported | dots |
fullName | ported | full_name |
isComplex | ported | is_complex |
ordinal | ported | ordinal |
quarterLengthNoTuplets | ported | quarter_length_no_tuplets |
quarterLength | ported | quarter_length |
tuplets | ported | tuplets |
aggregateTupletMultiplier | ported | aggregate_tuplet_multiplier |
type | ported | duration_type |
▶ToneRowserial.py
crate 10 of 10
| music21 | Crate | music21-rs |
|---|---|---|
pitchClasses | ported | pitch_classes |
noteNames | ported | note_names |
isTwelveToneRow | ported | is_twelve_tone_row |
makeTwelveToneRow | ported | make_twelve_tone_row |
isSameRow | ported | is_same_row |
getIntervalsAsString | ported | intervals_as_string |
zeroCenteredTransformation | ported | zero_centered_transformation |
originalCenteredTransformation | ported | original_centered_transformation |
findZeroCenteredTransformations | ported | find_zero_centered_transformations |
findOriginalCenteredTransformations | ported | find_original_centered_transformations |
▶TwelveToneRowserial.py
crate 7 of 7
| music21 | Crate | music21-rs |
|---|---|---|
matrix | ported | matrix |
findHistorical | ported | find_historical |
findTransformedHistorical | ported | find_transformed_historical |
isAllInterval | ported | is_all_interval |
getLinkClassification | ported | link_classification |
isLinkChord | ported | is_link_chord |
areCombinatorial | ported | are_combinatorial |
▶serial.py functionsserial.py
crate 3 of 3
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
getHistoricalRowByName | ported | historical_row_by_name |
pcToToneRow | ported | new |
rowToMatrix | ported | row_to_matrix |
▶VoiceLeadingQuartetvoiceLeading.py
crate 30 of 30
| music21 | Crate | music21-rs |
|---|---|---|
key | ported | key |
v1n1 | ported | v1n1 |
v1n2 | ported | v1n2 |
v2n1 | ported | v2n1 |
v2n2 | ported | v2n2 |
motionType | ported | motion_type |
noMotion | ported | no_motion |
obliqueMotion | ported | oblique_motion |
similarMotion | ported | similar_motion |
parallelMotion | ported | parallel_motion |
contraryMotion | ported | contrary_motion |
outwardContraryMotion | ported | outward_contrary_motion |
inwardContraryMotion | ported | inward_contrary_motion |
antiParallelMotion | ported | anti_parallel_motion |
parallelInterval | ported | parallel_interval |
parallelFifth | ported | parallel_fifth |
parallelOctave | ported | parallel_octave |
parallelUnison | ported | parallel_unison |
parallelUnisonOrOctave | ported | parallel_unison_or_octave |
hiddenInterval | ported | hidden_interval |
hiddenFifth | ported | hidden_fifth |
hiddenOctave | ported | hidden_octave |
voiceOverlap | ported | voice_overlap |
voiceCrossing | ported | voice_crossing |
isProperResolution | ported | is_proper_resolution |
leapNotSetWithStep | ported | leap_not_set_with_step |
modalOpening | ported | modal_opening |
opensIncorrectly | ported | opens_incorrectly |
clausulaVera | ported | clausula_vera |
closesIncorrectly | ported | closes_incorrectly |
▶Sievesieve.py
crate 4 of 9
5 to port
The sieve as written and its compressed reading: parse, membership, the segment formats and the interval widths of one period.
| music21 | Crate | music21-rs |
|---|---|---|
expand | missing | which reading answers is not state on the sieve here; compressed hands back the other one and the sieve as written stays as it was |
setZ | missing | the range is an argument of each question here, not state on the sieve |
setZRange | missing | the range is an argument of each question here, not state on the sieve |
setSegmentFormat | missing | the segment format is an argument of each question here, not state on the sieve |
represent | missing | the sieve is written by Display, which is not a function the map can name |
compress | ported | compressed |
segment | ported | segment |
period | ported | period |
collect | ported | collect |
▶Beamsbeam.py
crate 12 of 12
All the beams over one note, and the rules for a run of them.
| music21 | Crate | music21-rs |
|---|---|---|
naiveBeams | ported | naive_beams |
removeSandwichedUnbeamables | ported | remove_sandwiched_unbeamables |
mergeConnectingPartialBeams | ported | merge_connecting_partial_beams |
sanitizePartialBeams | ported | sanitize_partial_beams |
append | ported | append |
fill | ported | fill |
getByNumber | ported | by_number |
getNumbers | ported | numbers |
getTypeByNumber | ported | by_number |
getTypes | ported | types |
setAll | ported | set_all |
setByNumber | ported | set_by_number |
▶Volumevolume.py
crate 7 of 9
2 to port
How loud a note sounds, as a velocity and as a scalar.
| music21 | Crate | music21-rs |
|---|---|---|
cachedRealized | missing | the crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does |
cachedRealizedStr | missing | the crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does |
getDynamicContext | ported | dynamic_context |
mergeAttributes | ported | merge_attributes |
getRealizedStr | ported | realized_str |
getRealized | ported | realized |
realized | ported | realized |
velocity | ported | velocity |
velocityScalar | ported | velocity_scalar |
▶volume.py functionsvolume.py
crate 1 of 1
| music21 | Crate | music21-rs |
|---|---|---|
realizeVolume | ported | realize_volume |
▶FigurefiguredBass/notation.py
crate 1 of 1
One number of that column, with the accidental written against it.
| music21 | Crate | music21-rs |
|---|---|---|
isPureExtender | ported | is_pure_extender |
▶ModifierfiguredBass/notation.py
crate 2 of 2
The mark as written beside the accidental it means: figured bass has marks no accidental name covers, a + that raises and a / that lowers.
| music21 | Crate | music21-rs |
|---|---|---|
modifyPitchName | ported | modify_pitch_name |
modifyPitch | ported | modify |
▶figuredBass/notation.py functionsfiguredBass/notation.py
crate 1 of 1
| music21 | Crate | music21-rs |
|---|---|---|
convertToPitch | ported | convert_to_pitch |
▶sieve.py functionssieve.py
crate 6 of 6
The number helpers music21 keeps beside the sieve: primes, and spacings across the unit interval.
| music21 | Crate | music21-rs |
|---|---|---|
eratosthenes | ported | eratosthenes |
rabinMiller | ported | rabin_miller |
discreteBinaryPad | ported | discrete_binary_pad |
unitNormRange | ported | unit_norm_range |
unitNormEqual | ported | unit_norm_equal |
unitNormStep | ported | unit_norm_step |
▶GeneralNotenote.py
crate 8 of 8
What every written note and chord has: a length, what is sung to it, and the marks over it. The crate has no type of its own for it -- the GeneralNote to NotRest to Note chain was mirrored here once as wrapper structs and taken out again -- so its members are matched against the types that carry them.
| music21 | Crate | music21-rs |
|---|---|---|
tie | ported | tie |
lyric | ported | lyric |
addLyric | ported | add_lyric |
insertLyric | ported | insert_lyric |
fullName | ported | full_name |
pitches | ported | pitches |
augmentOrDiminish | ported | augment_or_diminish |
getGrace | ported | grace_note |
▶NotRestnote.py
crate 8 of 8
A note or chord as distinct from a rest: what it is written as, which way its stem goes, and how loud it sounds.
| music21 | Crate | music21-rs |
|---|---|---|
stemDirection | ported | stem_direction |
notehead | ported | notehead |
noteheadFill | ported | notehead_fill |
noteheadParenthesis | ported | notehead_parenthesis |
hasVolumeInformation | ported | has_volume_information |
volume | ported | volume |
storedInstrument | ported | stored_instrument |
getInstrument | ported | instrument |
▶Lyricnote.py
crate 7 of 7
A syllable sung to a note.
| music21 | Crate | music21-rs |
|---|---|---|
isComposite | ported | is_composite |
text | ported | text |
syllabic | ported | syllabic |
identifier | ported | identifier |
rawText | ported | raw_text |
number | ported | number |
setTextAndSyllabic | ported | set_text_and_syllabic |
▶Restnote.py
crate 1 of 1
A silence of a written length.
| music21 | Crate | music21-rs |
|---|---|---|
fullName | ported | full_name |
▶ChordBasechord/__init__.py
crate 7 of 7
What a chord is before it is asked anything: the notes it holds, and adding to and taking from them.
| music21 | Crate | music21-rs |
|---|---|---|
add | ported | add |
remove | ported | remove |
notes | ported | notes |
tie | ported | tie |
volume | ported | volume |
hasComponentVolumes | ported | has_component_volumes |
setVolumes | ported | set_volumes |
▶Tupletduration.py
crate 10 of 10
The bracket that says a length is written as one thing and sounds as another.
| music21 | Crate | music21-rs |
|---|---|---|
augmentOrDiminish | ported | augment_or_diminish |
setDurationType | ported | set_duration_type |
setRatio | ported | set_ratio |
totalTupletLength | ported | total_tuplet_length |
tupletMultiplier | ported | multiplier |
durationActual | ported | duration_actual |
durationNormal | ported | duration_normal |
fullName | ported | full_name |
tupletActual | ported | tuplet_actual |
tupletNormal | ported | tuplet_normal |
▶Notenote.py
crate 7 of 8
1 to port
A pitch and an optional duration.
| music21 | Crate | music21-rs |
|---|---|---|
pitchChanged | missing | observer callback; there is none |
name | ported | pitch_name |
nameWithOctave | ported | pitch_name_with_octave |
step | ported | step |
octave | ported | octave |
pitches | ported | pitches |
transpose | ported | transpose |
fullName | ported | full_name |
▶ChordSymbolharmony.py
crate 3 of 3
| music21 | Crate | music21-rs |
|---|---|---|
findFigure | ported | find_figure |
inversionIsValid | ported | inversion_is_valid |
transpose | ported | transpose |
▶pitch.py functionspitch.py
crate 4 of 4
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
isValidAccidentalName | ported | is_valid_name |
standardizeAccidentalName | ported | standardize_name |
convertPitchClassToStr | ported | convert_pitch_class_to_str |
simplifyMultipleEnharmonics | ported | simplify_multiple_enharmonics |
▶key.py functionskey.py
crate 3 of 3
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
convertKeyStringToMusic21KeyString | ported | convert_key_string_to_music21_key_string |
sharpsToPitch | ported | sharps_to_pitch |
pitchToSharps | ported | pitch_to_sharps |
▶duration.py functionsduration.py
crate 12 of 12
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
nextLargerType | ported | next_larger |
nextSmallerType | ported | next_smaller |
quarterLengthToClosestType | ported | quarter_length_to_closest_type |
convertQuarterLengthToType | ported | from_quarter_length |
dottedMatch | ported | type_and_dots |
quarterLengthToNonPowerOf2Tuplet | ported | quarter_length_to_non_power_of_2_tuplet |
quarterLengthToTuplet | ported | quarter_length_to_tuplet |
quarterConversion | ported | quarter_conversion |
convertTypeToQuarterLength | ported | quarter_length |
convertTypeToNumber | ported | type_number |
durationTupleFromQuarterLength | ported | type_and_dots |
durationTupleFromTypeDots | ported | from_type_with_dots |
▶tempo.py functionstempo.py
crate 2 of 2
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
convertTempoByReferent | ported | convert_tempo_by_referent |
interpolateElements | ported | interpolate_elements |
▶roman.py functionsroman.py
crate 8 of 8
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
expandShortHand | ported | expand_shorthand |
correctSuffixForChordQuality | ported | correct_suffix_for_chord_quality |
figureTuples | ported | figure_tuples |
figureTupleSolo | ported | from_pitch_and_reference |
identifyAsTonicOrDominant | ported | identify_as_tonic_or_dominant |
romanInversionName | ported | roman_inversion_name |
correctRNAlterationForMinor | ported | correct_rn_alteration_for_minor |
romanNumeralFromChord | ported | roman_numeral_from_chord |
▶chord/__init__.py functionschord/__init__.py
crate 2 of 2
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
fromForteClass | ported | from_forte_class |
fromIntervalVector | ported | from_interval_vector |
▶chord/tables.py functionschord/tables.py
crate 9 of 9
The Forte tables of set classes, read without a chord in hand. The data is generated from music21's own and checked by xtask verify-tables.
| music21 | Crate | music21-rs |
|---|---|---|
forteIndexToInversionsAvailable | ported | inversions_available |
addressToTransposedNormalForm | ported | normal_form |
addressToPrimeForm | ported | prime_form |
addressToIntervalVector | ported | interval_class_vector |
intervalVectorToAddress | ported | set_classes_with_interval_vector |
addressToZAddress | ported | z_related_class |
addressToCommonNames | ported | common_names |
addressToForteName | ported | forte_name |
seekChordTablesAddress | ported | address_of_pitch_classes |
▶TabChordBaseromanText/tsvConverter.py
crate 3 of 3
One row of the lab's tabular analysis, read: the columns both of its standards share, the label music21 builds a numeral from, and the chord that numeral stands for. The one row type here reads a row of either standard, as music21's two subclasses do between them.
| music21 | Crate | music21-rs |
|---|---|---|
combinedChord | ported | chord |
tabToM21 | ported | element |
populateFromRow | ported | from_row |
▶TabChordV2romanText/tsvConverter.py
crate 4 of 4
What the lab's second standard renamed: the measure and the onset it writes as mn and mn_onset, and the keys it writes without the underscore.
| music21 | Crate | music21-rs |
|---|---|---|
beat | ported | beat |
measure | ported | measure |
local_key | ported | local_key |
global_key | ported | global_key |
▶TsvHandlerromanText/tsvConverter.py
crate 2 of 3
1 to port
A table read: the rows, and the score of numerals they make.
| music21 | Crate | music21-rs |
|---|---|---|
prepStream | missing | a step inside the reader: from_tsv prepares the measures from the table's own numbers and meters itself and hands back the whole score |
tsvToChords | ported | tsv_to_chords |
toM21Stream | ported | from_tsv |
▶M21toTSVromanText/tsvConverter.py
crate 1 of 2
1 to port
A score written back as a table, column for column.
| music21 | Crate | music21-rs |
|---|---|---|
write | missing | writes a file, which the library does not do: to_tsv hands back the text |
m21ToTsv | ported | to_tsv |
▶romanText/tsvConverter.py functionsromanText/tsvConverter.py
crate 7 of 7
Module-level helpers: the swaps between the two notations, a local key read as a degree or as a key of its own, and the form, the figured bass and the added tones a label writes.
| music21 | Crate | music21-rs |
|---|---|---|
getForm | ported | form_of |
handleAddedTones | ported | handle_added_tones |
localKeyAsRn | ported | local_key_as_roman |
isMinor | ported | is_minor |
characterSwaps | ported | character_swaps |
getLocalKey | ported | local_key |
getSecondaryKey | ported | secondary_key |
▶CTSongromanText/clercqTemperley.py
crate 7 of 8
1 to port
A de Clercq-Temperley analysis of the rock corpus as its text says it: the title, the comments, the rules, and the key and the meter the song opens in.
| music21 | Crate | music21-rs |
|---|---|---|
toScore | missing | music21's own deprecated name for toPart, which it will take out |
parse | ported | parse |
title | ported | title |
comments | ported | comments |
rules | ported | rules |
homeTimeSig | ported | home_time_signature |
homeKey | ported | home_key |
toPart | ported | to_part |
▶CTRuleromanText/clercqTemperley.py
crate 7 of 12
5 to port
One rule of a song, a line of its text: its name, the section it stands for, its chords, its comment, and the measures it expands to.
| music21 | Crate | music21-rs |
|---|---|---|
parent | missing | music21 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 |
expandExpansionContent | missing | a step inside the expansion, which the crate drives from the song rather than from the rule keeping the state |
expandSimpleContent | missing | a step inside the expansion, as expandExpansionContent |
addOptionalTieAndLyrics | missing | a step inside the expansion, which ties the chord before as it writes the one after |
insertKsTs | missing | a step inside the expansion: the crate writes the key and the meter into a measure as it builds it |
expand | ported | expand |
isSame | ported | is_same |
fixupChordAtom | ported | fixup_chord_atom |
musicText | ported | music_text |
comment | ported | comment |
LHS | ported | left_hand_side |
sectionName | ported | section_name |
▶harmony.py functionsharmony.py
crate 7 of 10
3 to port
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
addNewChordSymbol | missing | mutates 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 |
changeAbbreviationFor | missing | mutates 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 |
removeChordSymbols | missing | mutates 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 |
chordSymbolFigureFromChord | ported | chord_symbol_figure_from_chord |
alterToChordSymbolString | ported | alter_to_chord_symbol_string |
chordSymbolFromChord | ported | chord_symbol_from_chord |
getAbbreviationListGivenChordType | ported | abbreviations_for_kind |
getCurrentAbbreviationFor | ported | current_abbreviation_for_kind |
getNotationStringGivenChordType | ported | notation_for_kind |
realizeChordSymbolDurations | ported | realize_chord_symbol_durations |
▶meter/base.py functionsmeter/base.py
crate 1 of 1
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
bestTimeSignature | ported | best_time_signature |
▶ScalaDatascale/scala/__init__.py
crate 7 of 7
A Scala scale as its file writes it: a description, a degree a line and the interval it repeats at. ScalaFile is left out because it is file IO, which this library leaves to its caller.
| music21 | Crate | music21-rs |
|---|---|---|
parse | ported | parse |
getCentsAboveTonic | ported | written_cents |
getAdjacentCents | ported | adjacent_cents |
setAdjacentCents | ported | from_adjacent_cents |
getIntervalSequence | ported | interval_sequence |
setIntervalSequence | ported | from_interval_sequence |
getFileString | ported | file_string |
▶scale/scala/__init__.py functionsscale/scala/__init__.py
crate 2 of 3
1 to port
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
getPaths | missing | where the archive's files sit on disk; the archive here is one bundled table and has no paths |
parse | ported | find |
search | ported | search |
▶Tietie.py
crate 3 of 4
1 to port
Two written notes sounding as one, and how the tie between them is drawn.
| music21 | Crate | music21-rs |
|---|---|---|
id | missing | the 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 |
placement | ported | placement |
style | ported | style |
type | ported | tie_type |
▶MeterTerminalmeter/core.py
crate 10 of 10
A span of a bar written as a ratio, which is what a meter's partitions are made of.
| music21 | Crate | music21-rs |
|---|---|---|
ratioEqual | ported | ratio_equal |
subdivideByCount | ported | subdivide_by_count |
subdivideByList | ported | subdivide_by_list |
subdivideByOther | ported | subdivide_by_other |
subdivide | ported | subdivide |
weight | ported | weight |
numerator | ported | numerator |
denominator | ported | denominator |
duration | ported | quarter_length |
depth | ported | depth |
▶MeterSequencemeter/core.py
crate 23 of 25
2 to port
A span divided into parts, each of them a span in turn, which is the tree every meter question is read off.
| music21 | Crate | music21-rs |
|---|---|---|
partition | missing | one setter dispatching on the type of what it is handed; the three partitions it dispatches to are each ported |
load | missing | rebuilding a sequence in place; a new one is built instead |
partitionDisplay | ported | partition_display |
getPartitionOptions | ported | partition_options |
partitionByCount | ported | partition_by_count |
partitionByList | ported | partition_by_list |
partitionByOtherMeterSequence | ported | partition_by_other |
subdividePartitionsEqual | ported | subdivide_partitions_equal |
subdivideNestedHierarchy | ported | subdivide_nested_hierarchy |
partitionStr | ported | partition_string |
weight | ported | weight |
flatten | ported | flatten |
flatWeight | ported | flat_weights |
depth | ported | depth |
isUniformPartition | ported | is_uniform_partition |
getLevelList | ported | level_list |
getLevel | ported | level |
getLevelSpan | ported | level_span |
getLevelWeight | ported | level_weight |
setLevelWeight | ported | set_level_weight |
offsetToIndex | ported | offset_to_index |
offsetToAddress | ported | offset_to_address |
offsetToSpan | ported | offset_to_span |
offsetToWeight | ported | offset_to_weight |
offsetToDepth | ported | offset_to_depth |
▶voiceLeading.py functionsvoiceLeading.py
crate 2 of 2
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
getVerticalityFromObject | ported | verticality_at |
iterateAllVoiceLeadingQuartets | ported | iterate_all_voice_leading_quartets |
▶Dynamicdynamics.py
crate 2 of 2
A dynamic mark and the loudness it stands for. In a stream it is in force until the next, which is what realize_volume reads.
| music21 | Crate | music21-rs |
|---|---|---|
value | ported | value |
volumeScalar | ported | volume_scalar |
▶dynamics.py functionsdynamics.py
crate 1 of 1
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
dynamicStrFromDecimal | ported | dynamic_str_from_decimal |
▶Clefclef.py
crate 3 of 3
A clef: its sign, the line it sits on, the octaves it transposes and the note on its lowest line.
| music21 | Crate | music21-rs |
|---|---|---|
octaveChange | ported | octave_change |
name | ported | name |
getStemDirectionForPitches | ported | stem_direction_for_pitches |
▶PitchClefclef.py
crate 1 of 1
A clef that places pitches, whose lowest line moves with its octave change.
| music21 | Crate | music21-rs |
|---|---|---|
octaveChange | ported | octave_change |
▶clef.py functionsclef.py
crate 2 of 2
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
clefFromString | ported | from_string |
bestClef | ported | best_for |
▶Articulationarticulations.py
crate 2 of 2
A mark on a note saying how it is played: how much louder, how much shorter, and which part of a tied note keeps it.
| music21 | Crate | music21-rs |
|---|---|---|
name | ported | name |
volumeShift | ported | volume_shift |
▶Ornamentexpressions.py
crate 4 of 5
1 to port
An ornament and the notes it is played as: its ornamental pitches and its realization over a note in a key.
| music21 | Crate | music21-rs |
|---|---|---|
fillListOfRealizedNotes | missing | a helper realize fills its lists with; realize is ported |
realize | ported | realize |
resolveOrnamentalPitches | ported | ornamental_pitches |
ornamentalPitches | ported | ornamental_pitches |
updateAccidentalDisplay | ported | update_accidental_display |
▶GeneralMordentexpressions.py
crate 9 of 9
| music21 | Crate | music21-rs |
|---|---|---|
name | ported | name |
accidental | ported | accidental |
direction | ported | direction |
getSize | ported | size |
resolveOrnamentalPitches | ported | ornamental_pitches |
ornamentalPitch | ported | ornamental_pitches |
ornamentalPitches | ported | ornamental_pitches |
updateAccidentalDisplay | ported | update_accidental_display |
realize | ported | realize |
▶Trillexpressions.py
crate 10 of 10
| music21 | Crate | music21-rs |
|---|---|---|
name | ported | name |
direction | ported | direction |
accidental | ported | accidental |
splitClient | ported | split_client |
getSize | ported | size |
resolveOrnamentalPitches | ported | ornamental_pitches |
ornamentalPitch | ported | ornamental_pitches |
ornamentalPitches | ported | ornamental_pitches |
updateAccidentalDisplay | ported | update_accidental_display |
realize | ported | realize |
▶Turnexpressions.py
crate 12 of 12
| music21 | Crate | music21-rs |
|---|---|---|
upperAccidental | ported | upper_accidental |
lowerAccidental | ported | lower_accidental |
delay | ported | delay |
isDelayed | ported | is_delayed |
name | ported | name |
getSize | ported | turn_size |
resolveOrnamentalPitches | ported | ornamental_pitches |
upperOrnamentalPitch | ported | ornamental_pitches |
lowerOrnamentalPitch | ported | ornamental_pitches |
ornamentalPitches | ported | ornamental_pitches |
updateAccidentalDisplay | ported | update_accidental_display |
realize | ported | realize |
▶GeneralAppoggiaturaexpressions.py
crate 1 of 1
| music21 | Crate | music21-rs |
|---|---|---|
realize | ported | realize |
▶Tremoloexpressions.py
crate 2 of 2
| music21 | Crate | music21-rs |
|---|---|---|
numberOfMarks | ported | number_of_marks |
realize | ported | realize |
▶figuredBass/possibility.py functionsfiguredBass/possibility.py
crate 15 of 15
The rules a voicing of a figured bass is held to, alone and moving to the next.
| music21 | Crate | music21-rs |
|---|---|---|
voiceCrossing | ported | voice_crossing |
isIncomplete | ported | is_incomplete |
upperPartsWithinLimit | ported | upper_parts_within_limit |
pitchesWithinLimit | ported | pitches_within_limit |
limitPartToPitch | ported | limit_part_to_pitch |
parallelFifths | ported | parallel_fifths |
parallelOctaves | ported | parallel_octaves |
hiddenFifths | ported | hidden_fifths |
hiddenOctaves | ported | hidden_octaves |
voiceOverlap | ported | voice_overlap |
partMovementsWithinLimits | ported | part_movements_within_limits |
upperPartsSame | ported | upper_parts_same |
partsSame | ported | parts_same |
couldBeItalianA6Resolution | ported | could_be_italian_a6_resolution |
partPairs | ported | part_pairs |
▶figuredBass/resolution.py functionsfiguredBass/resolution.py
crate 13 of 14
1 to port
How a dominant seventh, a diminished seventh or an augmented sixth resolves, voiced part for part.
| music21 | Crate | music21-rs |
|---|---|---|
showResolutions | missing | puts 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 |
augmentedSixthToDominant | ported | augmented_sixth_to_dominant |
augmentedSixthToMajorTonic | ported | augmented_sixth_to_major_tonic |
augmentedSixthToMinorTonic | ported | augmented_sixth_to_minor_tonic |
dominantSeventhToMajorTonic | ported | dominant_seventh_to_major_tonic |
dominantSeventhToMinorTonic | ported | dominant_seventh_to_minor_tonic |
dominantSeventhToMajorSubmediant | ported | dominant_seventh_to_major_submediant |
dominantSeventhToMinorSubmediant | ported | dominant_seventh_to_minor_submediant |
dominantSeventhToMajorSubdominant | ported | dominant_seventh_to_major_subdominant |
dominantSeventhToMinorSubdominant | ported | dominant_seventh_to_minor_subdominant |
diminishedSeventhToMajorTonic | ported | diminished_seventh_to_major_tonic |
diminishedSeventhToMinorTonic | ported | diminished_seventh_to_minor_tonic |
diminishedSeventhToMajorSubdominant | ported | diminished_seventh_to_major_subdominant |
diminishedSeventhToMinorSubdominant | ported | diminished_seventh_to_minor_subdominant |
▶FiguredBassScalefiguredBass/realizerScale.py
crate 3 of 3
The key a figured bass is counted in, and the notes a bass and its figures stand for.
| music21 | Crate | music21-rs |
|---|---|---|
getPitchNames | ported | pitch_names |
getSamplePitches | ported | sample_pitches |
getPitches | ported | pitches |
▶SegmentfiguredBass/segment.py
crate 6 of 9
3 to port
A bass note and its figures, every voicing of them, and the moves to the next.
| music21 | Crate | music21-rs |
|---|---|---|
singlePossibilityRules | missing | music21's table of its own Python functions for printing; the rules are Rules and the segment runs them |
consecutivePossibilityRules | missing | music21's table of its own Python functions for printing; the rules are Rules and the segment runs them |
specialResolutionRules | missing | music21's table of its own Python functions for printing; the rules are Rules and the segment runs them |
resolveDominantSeventhSegment | ported | resolve_dominant_seventh_segment |
resolveDiminishedSeventhSegment | ported | resolve_diminished_seventh_segment |
resolveAugmentedSixthSegment | ported | resolve_augmented_sixth_segment |
allSinglePossibilities | ported | all_single_possibilities |
allCorrectSinglePossibilities | ported | all_correct_single_possibilities |
allCorrectConsecutivePossibilities | ported | all_correct_consecutive_possibilities |
▶figuredBass/segment.py functionsfiguredBass/segment.py
crate 1 of 2
1 to port
Module-level helpers.
| music21 | Crate | music21-rs |
|---|---|---|
printRules | missing | prints music21's rule tables, which hold its Python functions |
getPitches | ported | pitches |
▶FiguredBassLinefiguredBass/realizer.py
crate 5 of 5
A bass line and its figures in a key and a meter, written out as a part, and realized into every voicing that keeps the rules -- and keeps any part laid over it.
| music21 | Crate | music21-rs |
|---|---|---|
addElement | ported | add_element |
generateBassLine | ported | generate_bass_line |
retrieveSegments | ported | segments |
overlayPart | ported | overlay_part |
realize | ported | realize |
▶RealizationfiguredBass/realizer.py
crate 7 of 7
Every way of voicing a line: counted, listed, chosen from, and written out as a score in keyboard or chorale style. Where music21 chooses at random the caller chooses.
| music21 | Crate | music21-rs |
|---|---|---|
getNumSolutions | ported | num_solutions |
getAllPossibilityProgressions | ported | all_possibility_progressions |
getRandomPossibilityProgression | ported | possibility_progression_by |
generateRealizationFromPossibilityProgression | ported | generate_realization_from_possibility_progression |
generateAllRealizations | ported | generate_all_realizations |
generateRandomRealization | ported | generate_random_realization |
generateRandomRealizations | ported | generate_random_realizations |
▶KeyWeightKeyAnalysisanalysis/discrete.py
crate 3 of 6
3 to port
Key finding by correlating a duration-weighted pitch-class distribution with one of five key profiles.
| music21 | Crate | music21-rs |
|---|---|---|
solutionLegend | missing | the colour legend of a keyscape graph; presentation |
solutionUnitString | missing | the unit a graph's legend is labelled with; presentation |
solutionToColor | missing | the colour a key is drawn in; presentation |
getWeights | ported | major_weights |
process | ported | estimate_key_from_distribution |
getSolution | ported | estimate_key_from_distribution |
▶Ambitusanalysis/discrete.py
crate 3 of 6
3 to port
| music21 | Crate | music21-rs |
|---|---|---|
solutionLegend | missing | the colour legend of a graph; presentation |
solutionUnitString | missing | the unit a graph's legend is labelled with; presentation |
solutionToColor | missing | the colour a span is drawn in; presentation |
getPitchSpan | ported | pitch_span |
process | ported | pitch_span |
getSolution | ported | pitch_span |
▶MelodicIntervalDiversityanalysis/discrete.py
crate 3 of 4
1 to port
| music21 | Crate | music21-rs |
|---|---|---|
solutionToColor | missing | the colour a count is drawn in; presentation |
countMelodicIntervals | ported | melodic_interval_counts |
process | ported | melodic_interval_counts |
getSolution | ported | melodic_interval_counts |
▶EnharmonicSimplifieranalysis/enharmonics.py
crate 5 of 6
1 to port
The best spelling of a run of pitches, scored on augmented and diminished steps, accidentals and their mixture.
| music21 | Crate | music21-rs |
|---|---|---|
getProduct | missing | lists every combination of the spellings at once; best_choice walks them one at a time |
getRepresentations | ported | spelling_options |
bestPitches | ported | best_spelling |
getAlterationScore | ported | alteration_score |
getMixSharpFlatsScore | ported | mixture_score |
getAugDimScore | ported | aug_dim_score |
▶analysis/neoRiemannian.py functionsanalysis/neoRiemannian.py
crate 12 of 12
L, P and R, their chains, the hexatonic cycle and systems, and the chromatic and disjunct mediants.
| music21 | Crate | music21-rs |
|---|---|---|
L | ported | apply |
P | ported | apply |
R | ported | apply |
isNeoR | ported | is_neo_r |
isChromaticMediant | ported | is_chromatic_mediant |
LRP_combinations | ported | lrp_combination |
completeHexatonic | ported | complete_hexatonic |
hexatonicSystem | ported | hexatonic_system |
chromaticMediants | ported | chromatic_mediant |
disjunctMediants | ported | disjunct_mediant |
S | ported | slide |
N | ported | nebenverwandt |
▶analysis/harmonicFunction.py functionsanalysis/harmonicFunction.py
crate 2 of 2
The eighteen harmonic function labels and the Roman numerals they stand for, in either mode.
| music21 | Crate | music21-rs |
|---|---|---|
functionToRoman | ported | to_roman |
romanToFunction | ported | from_roman |
▶TranspositionCheckeranalysis/transposition.py
crate 6 of 6
A set of pitches in all twelve transpositions, and how many of them differ.
| music21 | Crate | music21-rs |
|---|---|---|
getTranspositions | ported | transpositions |
listNormalOrders | ported | normal_orders |
listDistinctNormalOrders | ported | distinct_normal_orders |
numDistinctTranspositions | ported | distinct_count |
getChordsOfDistinctTranspositions | ported | distinct_chords |
getPitchesOfDistinctTranspositions | ported | distinct_pitches |
▶analysis/patel.py functionsanalysis/patel.py
crate 2 of 2
The normalized pairwise variability of a rhythm and the melodic interval variability of a line.
| music21 | Crate | music21-rs |
|---|---|---|
nPVI | ported | n_pvi |
melodicIntervalVariability | ported | melodic_interval_variability |
▶analysis/metrical.py functionsanalysis/metrical.py
crate 2 of 2
The depth of the metrical hierarchy at each note, and Thomassen's melodic accent.
| music21 | Crate | music21-rs |
|---|---|---|
labelBeatDepth | ported | label_beat_depth |
thomassenMelodicAccent | ported | thomassen_melodic_accent |
▶Segmenteranalysis/segmentByRests.py
crate 2 of 2
A part cut into its runs of notes between rests and clefs, and the intervals inside them.
| music21 | Crate | music21-rs |
|---|---|---|
getSegmentsList | ported | segments_list |
getIntervalList | ported | interval_list |
▶analysis/pitchAnalysis.py functionsanalysis/pitchAnalysis.py
crate 1 of 1
How often each value of a property of a stream's pitches comes.
| music21 | Crate | music21-rs |
|---|---|---|
pitchAttributeCount | ported | pitch_attribute_count |
▶WindowedAnalysisanalysis/windowed.py
crate 3 of 3
A stream cut into quarter-note windows, and an analysis run over windows of each size.
| music21 | Crate | music21-rs |
|---|---|---|
getMinimumWindowStream | ported | new |
analyze | ported | analyze |
process | ported | process |
▶KeyAnalyzeranalysis/floatingKey.py
crate 4 of 4
A key for every measure, each measure's reading smoothed by its neighbours'.
| music21 | Crate | music21-rs |
|---|---|---|
run | ported | run |
getRawKeyByMeasure | ported | raw_key_by_measure |
getInterpretationByMeasure | ported | interpretation_by_measure |
smoothInterpretationByMeasure | ported | smooth_interpretation_by_measure |
▶analysis/floatingKey.py functionsanalysis/floatingKey.py
crate 1 of 1
| music21 | Crate | music21-rs |
|---|---|---|
divide | ported | divide |
▶humdrum/harmParser.py functionshumdrum/harmParser.py
crate 1 of 1
The harmonic annotations a **harm spine carries, read as the roman numerals they stand for.
| music21 | Crate | music21-rs |
|---|---|---|
convertHarmToRoman | ported | convert_harm_to_roman |
▶HarmParserhumdrum/harmParser.py
crate 1 of 1
A **harm token read: the accidental, the degree, the quality, the intervals, the inversion, an alternative reading and a secondary function. music21 reads it with the regular expressions of its HarmDefs, which the crate has none of -- Harm::parse reads the token by hand in the same order, and ROOTS is the table of degrees.
| music21 | Crate | music21-rs |
|---|---|---|
parse | ported | parse |
▶Barlinebar.py
crate 2 of 2
How a measure is closed. A crate measure keeps one as its own left_barline or right_barline, and a barline standing inside a measure is an element of the stream.
| music21 | Crate | music21-rs |
|---|---|---|
type | ported | bar_type |
musicXMLBarStyle | ported | musicxml_bar_style |
▶Repeatbar.py
crate 3 of 3
A barline that says which way the music goes back. A crate barline carries the direction and the times, so a repeat is a barline that has them.
| music21 | Crate | music21-rs |
|---|---|---|
direction | ported | repeat_direction |
times | ported | repeat_times |
getTextExpression | ported | repeat_text_expression |
▶Streamstream/base.py
crate 98 of 131
33 to port
Music on a timeline, and the subclasses music21 nests inside one another: Measure, Part, PartStaff, Score, Voice and Opus are all read here, since the crate has one Stream with a StreamKind where music21 has seven classes. What makes an object a *member* of a music21 stream is deliberately absent -- sites, contexts, derivations, activeSite -- so the members that ask an element where it sits, or ask the stream to hold somebody else's object, are excluded with their reasons. The notation methods live in makenotation, what a bar and a beat last in meter, and the variant methods in variant, which is where music21 keeps them too.
| music21 | Crate | music21-rs |
|---|---|---|
write | missing | writing a file, which the format modules do |
show | missing | rendering, which the crate leaves to its caller |
first | missing | as elementOffset: events answers in order |
last | missing | as elementOffset: events answers in order |
clef | missing | the clef a stream opens with; the clef in force is read by in_force_before, a crate stream keeping no clef of its own |
clear | missing | empties a stream in place; clone_empty answers an empty one of the same kind |
mergeAttributes | missing | what clone_empty carries over |
index | missing | as elementOffset |
remove | missing | takes a named object out; retain_leaves and remove_event take out by place or by test |
setElementOffset | missing | as elementOffset: events_mut reaches each in place |
elementOffset | missing | asks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset |
storeAtEnd | missing | elements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own here |
isAtEnd | missing | needs the sites a crate stream does not keep |
setDerivationMethod | missing | derivations, which a crate stream does not keep |
replace | missing | swaps one object for another; events_mut reaches each in place |
recurseRepr | missing | music21's own text dump of a stream |
plot | missing | plotting, which the crate leaves to its caller |
addGroupForElements | missing | the group names music21 picks elements out of a stream by; nothing a crate stream holds carries them |
getElementsByGroup | missing | as addGroupForElements |
getElementById | missing | an id on every element, which only a stream and a note carry here |
measure | missing | one measure by its number; measures answers them all, each carrying its own number |
transferOffsetToElements | missing | moves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep |
haveAccidentalsBeenMade | missing | a flag music21 keeps on the stream; nothing here remembers having been asked |
sort | missing | a crate stream is in offset order as it is built |
sorted | missing | as sort |
containerInHierarchy | missing | needs the sites a crate stream does not keep |
makeImmutable | missing | music21's mutability machinery, which a value has no need of |
makeMutable | missing | as makeImmutable |
duration | missing | a crate stream has no Duration of its own; highest_time answers when the last thing in it ends |
beat | missing | where one element sits in its bar; placed answers it for every element at once, and beat_and_measure_from_offset for a point |
beatStr | missing | as beat |
beatStrength | missing | as beat |
attachMelodicIntervals | missing | attaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line |
iter | ported | iter |
elements | ported | events |
timeSignature | ported | time_signature_at |
keySignature | ported | key_signature_at |
staffLines | ported | staff_lines |
cloneEmpty | ported | clone_empty |
hasElementOfClass | ported | has_element_of_class |
mergeElements | ported | merge_elements |
pop | ported | remove_event |
removeByClass | ported | remove_by_class |
removeByNotOfClass | ported | remove_by_not_of_class |
insert | ported | insert |
insertIntoNoteOrChord | ported | insert_into_note_or_chord |
append | ported | push |
insertAndShift | ported | insert_and_shift |
splitAtDurations | ported | split_at_durations |
splitAtQuarterLength | ported | split_at_quarter_length |
analyze | ported | analyze |
getElementsByClass | ported | elements_of_class |
getElementsNotOfClass | ported | elements_not_of_class |
getElementsByOffset | ported | elements_in_span |
getElementAtOrBefore | ported | element_at_or_before |
getElementBeforeOffset | ported | element_before_offset |
getElementAfterElement | ported | element_after |
measures | ported | measures |
template | ported | template |
measureOffsetMap | ported | measure_offset_map |
finalBarline | ported | final_barline |
voices | ported | voices |
spanners | ported | spanners |
atSoundingPitch | ported | at_sounding_pitch |
toSoundingPitch | ported | to_sounding_pitch |
toWrittenPitch | ported | to_written_pitch |
getTimeSignatures | ported | time_signatures |
getInstruments | ported | instruments |
getInstrument | ported | instrument |
invertDiatonic | ported | invert_diatonic |
shiftElements | ported | shift_elements |
repeatAppend | ported | repeat_append |
repeatInsert | ported | repeat_insert |
extractContext | ported | extract_context |
chordify | ported | chordify |
splitByClass | ported | split_by |
offsetMap | ported | offset_map |
makeMeasures | ported | make_measures |
makeRests | ported | make_rests |
makeTies | ported | make_ties |
makeBeams | ported | make_beams |
makeAccidentals | ported | make_accidentals |
makeNotation | ported | make_notation |
extendDuration | ported | extend_duration |
stripTies | ported | strip_ties |
extendTies | ported | extend_ties |
flatten | ported | flatten |
recurse | ported | recurse |
highestOffset | ported | highest_offset |
highestTime | ported | highest_time |
lowestOffset | ported | lowest_offset |
seconds | ported | seconds |
metronomeMarkBoundaries | ported | metronome_mark_boundaries |
metadata | ported | metadata |
beatDuration | ported | beat_duration |
beatAndMeasureFromOffset | ported | beat_and_measure_from_offset |
transpose | ported | transpose |
scaleOffsets | ported | scale_offsets |
scaleDurations | ported | scale_durations |
augmentOrDiminish | ported | augment_or_diminish |
quantize | ported | quantize |
expandRepeats | ported | expand_repeats |
sliceByQuarterLengths | ported | slice_by_quarter_lengths |
sliceByGreatestDivisor | ported | slice_by_greatest_divisor |
sliceAtOffsets | ported | slice_at_offsets |
sliceByBeat | ported | slice_by_beat |
hasMeasures | ported | has_measures |
hasVoices | ported | has_voices |
hasPartLikeStreams | ported | has_part_like_streams |
isTwelveTone | ported | is_twelve_tone |
isWellFormedNotation | ported | is_well_formed_notation |
notesAndRests | ported | notes_and_rests |
notes | ported | notes |
pitches | ported | pitches |
findConsecutiveNotes | ported | find_consecutive_notes |
melodicIntervals | ported | melodic_intervals |
findGaps | ported | find_gaps |
isGapless | ported | is_gapless |
getOverlaps | ported | get_overlaps |
isSequence | ported | is_sequence |
simultaneousAttacks | ported | simultaneous_attacks |
attachIntervalsBetweenStreams | ported | harmonic_intervals |
playingWhenAttacked | ported | playing_when_attacked |
allPlayingWhileSounding | ported | all_playing_while_sounding |
makeVoices | ported | make_voices |
voicesToParts | ported | voices_to_parts |
explode | ported | explode |
flattenUnnecessaryVoices | ported | flatten_unnecessary_voices |
lyrics | ported | lyrics |
activateVariants | ported | activate_variants |
showVariantAsOssialikePart | ported | show_variant_as_ossialike_part |
▶Measurestream/base.py
crate 8 of 9
1 to port
A bar of music. A crate stream of kind Measure carries its own barlines and padding, and what a bar and a beat last is read off the metre.
| music21 | Crate | music21-rs |
|---|---|---|
mergeAttributes | missing | what clone_empty carries over |
measureNumberWithSuffix | ported | number_with_suffix |
makeNotation | ported | make_notation |
barDurationProportion | ported | bar_duration_proportion |
padAsAnacrusis | ported | pad_as_anacrusis |
barDuration | ported | bar_duration |
bestTimeSignature | ported | best_time_signature |
leftBarline | ported | left_barline |
rightBarline | ported | right_barline |
▶Partstream/base.py
crate 3 of 4
1 to port
One player's line. A crate stream of kind Part or PartStaff carries the name and abbreviation music21 keeps as partName and partAbbreviation.
| music21 | Crate | music21-rs |
|---|---|---|
mergeAttributes | missing | what clone_empty carries over |
partName | ported | name |
partAbbreviation | ported | abbreviation |
makeAccidentals | ported | make_accidentals |
▶Scorestream/base.py
crate 8 of 9
1 to port
Every part of a piece together.
| music21 | Crate | music21-rs |
|---|---|---|
measure | missing | one measure by its number; measures answers them all, each carrying its own number |
parts | ported | parts |
measures | ported | measures |
expandRepeats | ported | expand_repeats |
measureOffsetMap | ported | measure_offset_map |
sliceByGreatestDivisor | ported | slice_by_greatest_divisor |
partsToVoices | ported | parts_to_voices |
implode | ported | implode |
makeNotation | ported | make_notation |
▶Opusstream/base.py
crate 5 of 7
2 to port
The scores a multi-work file holds, which many an ABC or Essen collection is.
| music21 | Crate | music21-rs |
|---|---|---|
write | missing | writing a file, which the format modules do |
show | missing | rendering, which the crate leaves to its caller |
getNumbers | ported | score_numbers |
getScoreByNumber | ported | score_by_number |
getScoreByTitle | ported | score_by_title |
scores | ported | scores |
mergeScores | ported | merge_scores |
▶percussion.py classespercussion.py
crate 1 of 1
Unpitched percussion: a stroke written on a staff with no pitch to it, and a chord of them.
| music21 | Crate | music21-rs |
|---|---|---|
PercussionChord | ported | PercussionChord |
▶PercussionChordpercussion.py
crate 2 of 2
A chord of strokes, each of which may be pitched or not. Its members are PercussionNotes rather than notes, since a stroke is not a note.
| music21 | Crate | music21-rs |
|---|---|---|
notes | ported | members |
pitches | ported | pitches |
▶tablature.py classestablature.py
crate 8 of 8
Fretted-instrument tablature: which string is stopped at which fret, and the pitches that sounds. The four instruments music21 keeps a class each for are constructors here, a fretboard being the same thing whatever it is strung as.
| music21 | Crate | music21-rs |
|---|---|---|
FretNote | ported | FretNote |
FretBoard | ported | FretBoard |
FirstFret | ported | FirstFret |
ChordWithFretBoard | ported | ChordWithFretBoard |
GuitarFretBoard | ported | guitar |
UkeleleFretBoard | ported | ukulele |
BassGuitarFretBoard | ported | bass_guitar |
MandolinFretBoard | ported | mandolin |
▶FretBoardtablature.py
crate 3 of 3
| music21 | Crate | music21-rs |
|---|---|---|
fretNotesLowestFirst | ported | fret_notes_lowest_first |
getFretNoteByString | ported | fret_note_by_string |
getPitches | ported | pitches |
▶ChordWithFretBoardtablature.py
crate 0 of 1
1 to port
A chord symbol with a diagram under it.
| music21 | Crate | music21-rs |
|---|---|---|
getFretNotesFromFigure | missing | music21's own is a stub that answers nothing, its docstring a TODO: the fret notes a figure stands for are not worked out there either |
▶text.py functionstext.py
crate 4 of 4
Words in a score: the lyrics assembled off its notes, and an article moved to the front of a title or back to its end.
| music21 | Crate | music21-rs |
|---|---|---|
assembleLyrics | ported | assemble_lyrics |
assembleAllLyrics | ported | assemble_all_lyrics |
prependArticle | ported | prepend_article |
postpendArticle | ported | postpend_article |
▶TextBoxtext.py
crate 2 of 2
Text standing anywhere on the page, which MusicXML writes as a credit.
| music21 | Crate | music21-rs |
|---|---|---|
content | ported | content |
page | ported | page |
▶LanguageDetectortext.py
crate 2 of 3
1 to port
Which language a text is most likely in, by the letters that follow each pair of letters.
| music21 | Crate | music21-rs |
|---|---|---|
readExcerpts | missing | reads the excerpt files off the disk; the crate's excerpts are built in and the library does no file IO |
mostLikelyLanguage | ported | most_likely_language |
mostLikelyLanguageNumeric | ported | most_likely_language_numeric |
▶Trigramtext.py
crate 4 of 6
2 to port
| music21 | Crate | music21-rs |
|---|---|---|
measure | missing | the step that counts the letter triples, which building one does |
likely | missing | which language a trigram is nearest, which most_likely_language answers |
length | ported | length |
parseExcerpt | ported | from_text |
similarity | ported | similarity |
makeWords | ported | from_words |
▶layout.py classeslayout.py
crate 5 of 10
5 to port
How a score is laid out: the page and system margins a file states, a staff's size and lines, and the parts bracketed together.
| music21 | Crate | music21-rs |
|---|---|---|
LayoutBase | missing | the class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds |
LayoutScore | missing | a 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 |
Page | missing | a page of such a score |
System | missing | a system of such a score |
Staff | missing | a staff of such a score |
ScoreLayout | ported | ScoreLayout |
PageLayout | ported | PageLayout |
SystemLayout | ported | SystemLayout |
StaffLayout | ported | StaffLayout |
StaffGroup | ported | StaffGroup |
▶layout.py functionslayout.py
crate 0 of 4
4 to port
Reading a score's measures back off its pages and systems, which only a LayoutScore has.
| music21 | Crate | music21-rs |
|---|---|---|
divideByPages | missing | builds a LayoutScore, which the crate has none of |
getPageRegionMeasureNumbers | missing | the measures on a page of a LayoutScore |
getSystemRegionMeasureNumbers | missing | the measures in a system of a LayoutScore |
getRegionMeasureNumbers | missing | the measures in a region of a LayoutScore |
▶ScoreLayoutlayout.py
crate 1 of 1
| music21 | Crate | music21-rs |
|---|---|---|
tenthsToMillimeters | ported | tenths_to_millimeters |
▶StaffGrouplayout.py
crate 2 of 2
The parts a brace or a bracket joins, and whether their barlines are drawn through.
| music21 | Crate | music21-rs |
|---|---|---|
barTogether | ported | bar_together |
symbol | ported | symbol |
▶style.py classesstyle.py
crate 1 of 10
9 to port
How something is drawn. The crate models what a reader must read back to write the same document again -- a text's font and where it sits, a line's ticks, a colour -- and the page itself it does not model. Inside music21 the wheel hands back music21's own style objects, whose subclasses carry more than one class here would.
| music21 | Crate | music21-rs |
|---|---|---|
Enclosure | missing | the 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 |
Style | missing | the base class every style hangs off; the crate keeps the few drawing values it reads and writes beside the thing drawn |
NoteStyle | missing | how a note is drawn beyond its colour and its size |
TextStylePlacement | missing | a text style that also says which side of the staff it is on, which is display::Drawn here |
BezierStyle | missing | the curve of a slur |
LineStyle | missing | the dashes of a line |
StreamStyle | missing | how a whole stream is drawn |
BeamStyle | missing | how a beam is drawn |
StyleMixin | missing | what music21 mixes into every class it draws; nothing here has a style of its own to mix in |
TextStyle | ported | TextStyle |
▶TextStylestyle.py
crate 7 of 8
1 to port
| music21 | Crate | music21-rs |
|---|---|---|
letterSpacing | missing | the 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 |
alignVertical | ported | align_vertical |
alignHorizontal | ported | align_horizontal |
justify | ported | justify |
fontStyle | ported | font_style |
fontWeight | ported | font_weight |
fontSize | ported | font_size |
fontFamily | ported | font_family |
▶spanner.py classesspanner.py
crate 6 of 10
4 to port
Something drawn across several notes: a slur, a hairpin, an octave line, a pedal mark. A spanner here is one value with a kind, naming the leaves it joins by their position in the stream that holds it.
| music21 | Crate | music21-rs |
|---|---|---|
PendingAssignmentRef | missing | music21's note to itself that a spanner is waiting for its first element, which the readers keep as a queue |
SpannerAnchor | missing | an 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 |
SpannerBundle | missing | the collection music21 keeps a stream's spanners in; a crate stream holds its own |
MultiMeasureRest | missing | several measures of rest drawn as one, which is a notation this crate does not write |
Spanner | ported | Spanner |
Slur | ported | Slur |
RepeatBracket | ported | Ending |
Ottava | ported | Ottava |
Line | ported | Line |
Glissando | ported | Glissando |
▶Spannerspanner.py
crate 3 of 14
11 to port
The leaves a spanner joins are positions in Stream::leaves, so what it holds is the stream's to hand back.
| music21 | Crate | music21-rs |
|---|---|---|
purgeOrphans | missing | drops the elements no stream holds any more, which only a spanner keeping objects can have |
purgeLocations | missing | drops the sites it remembers, and it remembers none |
getSpannedElementsByClass | missing | the elements of a class among them, which the stream holding them answers |
getSpannedElementIds | missing | Python object ids |
addSpannedElements | missing | adds elements by object; Spanner::new takes the positions it joins |
insertFirstSpannedElement | missing | puts an element first by object |
hasSpannedElement | missing | whether an element is among them, which is spanned().contains |
replaceSpannedElement | missing | swaps one element for another by object |
fill | missing | fills in every element between the first and the last, which asks the stream what stands between them |
getFirst | missing | the first element itself; spanned gives its position and the stream hands back what stands there |
getLast | missing | the last element itself, likewise |
getSpannedElements | ported | spanned |
isFirst | ported | is_first |
isLast | ported | is_last |
▶Ottavaspanner.py
crate 6 of 6
An octave line, and whether the notes under it are written where they sound.
| music21 | Crate | music21-rs |
|---|---|---|
type | ported | name |
shiftMagnitude | ported | magnitude |
shiftDirection | ported | up |
interval | ported | interval |
performTransposition | ported | to_sounding_pitch |
undoTransposition | ported | to_written_pitch |
▶Linespanner.py
crate 5 of 6
1 to port
A bracket with a tick at each end.
| music21 | Crate | music21-rs |
|---|---|---|
tick | missing | sets both ends at once; LineEnds carries each |
endTick | ported | end |
startTick | ported | start |
lineType | ported | line_type |
endHeight | ported | end_height |
startHeight | ported | start_height |
▶Glissandospanner.py
crate 2 of 2
| music21 | Crate | music21-rs |
|---|---|---|
lineType | ported | line_type |
slideType | ported | slide_type |
▶repeat.py classesrepeat.py
crate 13 of 16
3 to port
The marks that send the music back -- a segno, a coda, a da capo -- which are the kinds of one RepeatExpression here, and the expansion that plays them out.
| music21 | Crate | music21-rs |
|---|---|---|
RepeatMark | missing | what music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back to |
RepeatExpressionCommand | missing | the kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to |
RepeatFinder | missing | finds the repeated passages of a score so as to write it with repeat signs, which nothing here writes |
RepeatExpression | ported | RepeatExpression |
RepeatExpressionMarker | ported | is_marker |
Coda | ported | Coda |
Segno | ported | Segno |
Fine | ported | Fine |
DaCapo | ported | DaCapo |
DaCapoAlFine | ported | DaCapoAlFine |
DaCapoAlCoda | ported | DaCapoAlCoda |
AlSegno | ported | AlSegno |
DalSegno | ported | DalSegno |
DalSegnoAlFine | ported | DalSegnoAlFine |
DalSegnoAlCoda | ported | DalSegnoAlCoda |
Expander | ported | expand_repeats |
▶repeat.py functionsrepeat.py
crate 0 of 3
3 to port
Writing repeats into a score, which the crate does not do: it plays out the repeats a score already has.
| music21 | Crate | music21-rs |
|---|---|---|
insertRepeatEnding | missing | writes an ending bracket over some measures |
insertRepeat | missing | writes repeat barlines round some measures |
deleteMeasures | missing | takes measures out and renumbers the rest |
▶RepeatExpressionrepeat.py
crate 3 of 6
3 to port
| music21 | Crate | music21-rs |
|---|---|---|
applyTextFormatting | missing | the font and the justification a renderer draws the words with; justify says which way they are set |
setTextExpression | missing | keeps the words as a TextExpression object |
getTextExpression | missing | the words as a TextExpression for a renderer; text is what they say |
getText | ported | text |
setText | ported | set_text |
isValidText | ported | is_valid_text |
▶Expanderrepeat.py
crate 1 of 7
6 to port
Playing a score's repeats out, which Stream::expand_repeats does in one.
| music21 | Crate | music21-rs |
|---|---|---|
measureMap | missing | the measures of the expansion listed for a caller to read |
repeatBarsAreCoherent | missing | a step of the expansion, which answers an error where the repeats make no sense |
findInnermostRepeatIndices | missing | a step of the expansion |
processInnermostRepeatBars | missing | a step of the expansion |
getRepeatExpressionIndex | missing | a step of the expansion |
isExpandable | missing | whether there is anything to play out, which expanding answers |
process | ported | expand_repeats |
▶variant.py functionsvariant.py
crate 10 of 10
Another reading of a passage kept beside the one in the score: merged in from a second source, refined, gathered into blocks, and activated in place of what it replaces.
| music21 | Crate | music21-rs |
|---|---|---|
mergeVariants | ported | merge_variants |
mergeVariantScores | ported | merge_variant_scores |
mergeVariantMeasureStreams | ported | merge_variant_measure_streams |
mergeVariantsEqualDuration | ported | merge_variants_equal_duration |
mergePartAsOssia | ported | merge_part_as_ossia |
addVariant | ported | add_variant |
refineVariant | ported | refine_variant |
getMeasureHashes | ported | measure_hashes |
makeAllVariantsReplacements | ported | make_all_variants_replacements |
makeVariantBlocks | ported | make_variant_blocks |
▶Variantvariant.py
crate 7 of 15
8 to port
| music21 | Crate | music21-rs |
|---|---|---|
purgeOrphans | missing | drops the elements no stream holds any more, which only a variant keeping objects can have |
purgeLocations | missing | drops the sites it remembers, and it remembers none |
getElementIds | missing | Python object ids |
replaceElement | missing | swaps one element for another by object |
highestOffset | missing | the offset of the stream it holds, which Stream::highest_offset answers of its contents |
show | missing | rendering, which the crate leaves to its caller |
containedSite | missing | the stream it was read out of, which is a site |
replacementDuration | missing | the Duration of what it replaces; replacement_quarter_length is how long that is |
highestTime | ported | highest_time |
containedHighestTime | ported | contained_highest_time |
containedHighestOffset | ported | contained_highest_offset |
replacementQuarterLength | ported | replacement_quarter_length |
lengthType | ported | length_type |
replacedElements | ported | replaced_elements |
removeReplacedElementsFromStream | ported | remove_replaced_elements_from_stream |
▶Metadatametadata/__init__.py
crate 34 of 35
1 to port
What a score says about itself. Every standard name is read and written by that name through one pair of members, where music21 keeps a property for each; STANDARD_PROPERTIES is the table of the 131 names, checked against music21's live one by metadata_parity.
| music21 | Crate | music21-rs |
|---|---|---|
convertValue | missing | reads 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 |
add | ported | add |
getCustom | ported | get |
addCustom | ported | add |
setCustom | ported | set |
uniqueNameToNamespaceName | ported | namespace_name |
namespaceNameToUniqueName | ported | unique_name_of |
isContributorUniqueName | ported | is_contributor_unique_name |
isStandardName | ported | unique_name_of |
software | ported | get |
contributors | ported | contributors |
copyright | ported | string_value |
all | ported | all |
addContributor | ported | add_contributor |
getContributorsByRole | ported | contributors_by_role |
search | ported | search |
alternativeTitle | ported | string_value |
composer | ported | string_value |
composers | ported | get |
dateCreated | ported | string_value |
fileFormat | ported | string_value |
filePath | ported | string_value |
corpusFilePath | ported | string_value |
fileNumber | ported | string_value |
localeOfComposition | ported | string_value |
librettist | ported | string_value |
librettists | ported | get |
lyricist | ported | string_value |
lyricists | ported | get |
movementName | ported | string_value |
movementNumber | ported | string_value |
number | ported | string_value |
opusNumber | ported | string_value |
title | ported | title |
bestTitle | ported | best_title |
▶RichMetadatametadata/__init__.py
crate 0 of 4
4 to port
The numbers music21 caches beside a score's metadata so that its corpus can be searched without parsing every file again.
| music21 | Crate | music21-rs |
|---|---|---|
merge | missing | takes in another score's cached numbers |
getSourcePath | missing | where the file sits, relative to the corpus |
update | missing | works 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 |
all | missing | the cached numbers beside the metadata |
▶search/base.py functionssearch/base.py
crate 18 of 18
Searching a stream for a run of notes: the searches themselves, and the strings music21 turns a line into so that one line can be matched against another.
| music21 | Crate | music21-rs |
|---|---|---|
streamSearchBase | ported | run_over |
rhythmicSearch | ported | rhythmic_search |
noteNameSearch | ported | note_name_search |
noteNameRhythmicSearch | ported | note_name_rhythmic_search |
approximateNoteSearch | ported | approximate_note_search |
approximateNoteSearchNoRhythm | ported | approximate_note_search_no_rhythm |
approximateNoteSearchOnlyRhythm | ported | approximate_note_search_only_rhythm |
approximateNoteSearchWeighted | ported | approximate_note_search_weighted |
translateStreamToString | ported | translate_stream_to_string |
translateDiatonicStreamToString | ported | translate_diatonic_stream_to_string |
translateIntervalsAndSpeed | ported | translate_intervals_and_speed |
translateStreamToStringNoRhythm | ported | translate_stream_to_string_no_rhythm |
translateStreamToStringOnlyRhythm | ported | translate_stream_to_string_only_rhythm |
translateNoteToByte | ported | translate_note_to_byte |
translateNoteWithDurationToBytes | ported | translate_note_with_duration_to_bytes |
translateNoteTieToByte | ported | translate_note_tie_to_byte |
translateDurationToBytes | ported | translate_duration_to_bytes |
mostCommonMeasureRhythms | ported | most_common_measure_rhythms |
▶StreamSearchersearch/base.py
crate 4 of 4
A search for a list of terms, each a note name, a length or a wildcard.
| music21 | Crate | music21-rs |
|---|---|---|
run | ported | run |
wildcardAlgorithm | ported | run_over |
rhythmAlgorithm | ported | rhythmic_search |
noteNameAlgorithm | ported | note_name_search |
▶LyricSearchersearch/lyrics.py
crate 4 of 4
Searching the words sung in a score, which means indexing them into one text first.
| music21 | Crate | music21-rs |
|---|---|---|
indexText | ported | index_text |
indexTuples | ported | indexed |
index | ported | indexed |
search | ported | search |
▶IndexedLyricsearch/lyrics.py
crate 0 of 1
1 to port
| music21 | Crate | music21-rs |
|---|---|---|
modify | missing | a named tuple's _replace, which is Python's own |
▶search/segment.py functionssearch/segment.py
crate 3 of 8
5 to port
Comparing scores by cutting each part into overlapping segments and matching the strings they make.
| music21 | Crate | music21-rs |
|---|---|---|
indexScoreFilePaths | missing | indexes the scores at a list of paths, which means reading files |
indexOnePath | missing | indexes the score at a path, likewise |
saveScoreDict | missing | writes an index to a file |
loadScoreDict | missing | reads an index back |
getDifflibOrPyLev | missing | chooses between two Python libraries for the string comparison; search::difflib is the one difflib.SequenceMatcher ratio, ported |
translateMonophonicPartToSegments | ported | translate_monophonic_part_to_segments |
indexScoreParts | ported | index_score_parts |
scoreSimilarity | ported | score_similarity |
▶ReductiveNoteanalysis/reduction.py
crate 2 of 2
A note of a reduction, written in a lyric under the note it reduces.
| music21 | Crate | music21-rs |
|---|---|---|
isParsed | ported | is_parsed |
getNoteAndTextExpression | ported | note_and_text_expression |
▶ScoreReductionanalysis/reduction.py
crate 3 of 3
| music21 | Crate | music21-rs |
|---|---|---|
score | ported | score |
chordReduction | ported | chord_reduction |
reduce | ported | reduce |
▶PartReductionanalysis/reduction.py
crate 1 of 2
1 to port
How busy each part of a score is, span by span, which music21 draws as a horizontal bar graph.
| music21 | Crate | music21-rs |
|---|---|---|
getGraphHorizontalBarWeightedData | missing | the spans arranged for music21's bar graph; weighted_spans is what they say |
process | ported | weighted_spans |
▶ActivityMatchanalysis/correlate.py
crate 1 of 1
What goes with what in a stream: every pitch against the dynamic sounding with it.
| music21 | Crate | music21-rs |
|---|---|---|
pitchToDynamic | ported | pitch_to_dynamic |
▶ElementTimespantree/spans.py
crate 4 of 6
2 to port
One element of a stream as the stretch of time it sounds for, which is what a timespan tree holds.
| music21 | Crate | music21-rs |
|---|---|---|
new | missing | a copy with some of its values changed, which a value type here is made afresh |
makeElement | missing | the element itself, which an ElementTimespan holds a reference to |
quarterLength | ported | quarter_length |
measureNumber | ported | measure_number |
getParentageByClass | ported | parentage |
part | ported | part |
▶Timespantree/spans.py
crate 2 of 6
4 to port
| music21 | Crate | music21-rs |
|---|---|---|
new | missing | a copy with some of its values changed |
canMerge | missing | whether two timespans may be joined, which only the tree's own merging asks |
mergeWith | missing | joins two timespans |
splitAt | missing | cuts a timespan in two |
offset | ported | offset |
endTime | ported | end_time |
▶TimespanTreetree/timespanTree.py
crate 11 of 17
6 to port
Every element of a score as a stretch of time, which is how the voice-leading walk reads what sounds together. The crate keeps the timespans in offset order rather than in music21's tree, there being no insertion to keep balanced.
| music21 | Crate | music21-rs |
|---|---|---|
index | missing | where a timespan sits in the tree, which is its place in the list here |
removeTimespanList | missing | takes several out, likewise |
removeTimespan | missing | takes a timespan out of the tree; the crate reads a stream into timespans and does not edit them |
toPartwiseTimespanTrees | missing | a tree for each part of the score; as_timespans reads whichever stream it is given, a part included |
allParts | missing | every part the timespans came from, which the caller has in the score it read |
element | missing | the element a timespan holds, which ElementTimespan::element answers |
elementEndTime | ported | end_time |
offset | ported | lowest_position |
findNextPitchedTimespanInSameStreamByClass | ported | next_in_same_part |
findPreviousPitchedTimespanInSameStreamByClass | ported | previous_in_same_part |
getVerticalityAtOrBefore | ported | verticality_at_or_before |
iterateConsonanceBoundedVerticalities | ported | consonance_bounded_verticalities |
iterateVerticalities | ported | verticalities |
iterateVerticalitiesNwise | ported | verticalities_nwise |
splitAt | ported | split_at |
unwrapVerticalities | ported | unwrap |
maximumOverlap | ported | maximum_overlap |
▶Verticalitytree/verticality.py
crate 13 of 14
1 to port
Everything sounding at one offset, which is what a chord of a chordified score is made of.
| music21 | Crate | music21-rs |
|---|---|---|
beatStrength | missing | the 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 |
bassTimespan | ported | bass_timespan |
toChord | ported | to_chord |
measureNumber | ported | measure_number |
nextStartOffset | ported | next_start_offset |
nextVerticality | ported | next |
pitchSet | ported | pitch_set |
pitchClassSet | ported | pitch_class_set |
previousVerticality | ported | previous |
startAndOverlapTimespans | ported | start_and_overlap_timespans |
timeToNextEvent | ported | time_to_next_event |
makeElement | ported | make_element |
getAllVoiceLeadingQuartets | ported | voice_leading_quartets |
getPairedMotion | ported | paired_motion |
▶Horizontalitytree/analysis.py
crate 3 of 3
The timespans one voice sounds in a row, and whether the middle note of three is passed through or stepped away from and back.
| music21 | Crate | music21-rs |
|---|---|---|
hasPassingTone | ported | has_passing_tone |
hasNeighborTone | ported | has_neighbor_tone |
hasNoMotion | ported | has_no_motion |
▶tree/fromStream.py functionstree/fromStream.py
crate 2 of 4
2 to port
Reading a score into timespans.
| music21 | Crate | music21-rs |
|---|---|---|
listOfTreesByClass | missing | a tree per part per class, which the caller builds of what as_timespans reads |
makeFastShallowTreeFromSortedStream | missing | a tree of one stream's own elements with nothing nested, built without sorting; the crate sorts once and keeps a list |
asTree | ported | as_timespans |
asTimespans | ported | as_timespans |
▶tree/toStream.py functionstree/toStream.py
crate 1 of 2
1 to port
Writing timespans back out as a stream.
| music21 | Crate | music21-rs |
|---|---|---|
partwise | missing | the timespans written back out as a part each, which is the score they were read from |
chordified | ported | chordify |
▶features/base.py functionsfeatures/base.py
crate 5 of 5
The machinery round the feature extractors: finding one by its id, and the vector a stream gives for all of them. The 72 jSymbolic extractors and the 24 native ones are rows of a generated table rather than a class each, and features_parity checks that table against music21's live classes.
| music21 | Crate | music21-rs |
|---|---|---|
allFeaturesAsList | ported | all_features_as_list |
extractorsById | ported | extractors_by_id |
extractorById | ported | extractor_by_id |
vectorById | ported | vector_by_id |
getIndex | ported | index_of |
▶Featurefeatures/base.py
crate 0 of 2
2 to port
What one extractor found: the numbers, and what each of them is called.
| music21 | Crate | music21-rs |
|---|---|---|
prepareVectors | missing | makes room for the numbers before they are worked out, which building one does |
normalize | missing | divides the numbers by their sum, which Extractor::extract does where the extractor asks for it |
▶FeatureExtractorfeatures/base.py
crate 3 of 7
4 to port
One extractor: its id, how many numbers it gives, and what it reads off a stream. music21 keeps the stream and the half-built feature on the object; here an extractor is a row of a table and reading is a function of the data.
| music21 | Crate | music21-rs |
|---|---|---|
setData | missing | hands the extractor the stream to read, which extract takes as an argument |
fillFeatureAttributes | missing | copies the extractor's own id and name onto the feature it is filling in |
prepareFeature | missing | makes the blank feature and fills its attributes in, which blank answers |
process | missing | the reading itself, which is the row's own function and runs in extract |
getAttributeLabels | ported | attribute_labels |
extract | ported | extract |
getBlankFeature | ported | blank |
▶StreamFormsfeatures/base.py
crate 8 of 14
6 to port
The readings of a stream every extractor shares, each worked out once when it is first asked for. music21 keys them by name in a dictionary; here each is a member of the data, and the ones only one extractor reads are worked out where it reads them.
| music21 | Crate | music21-rs |
|---|---|---|
keys | missing | the names music21 looks a form up by |
formSetClassHistogram | missing | how often each set class comes, which the extractors that read it work out where they read it |
formPitchClassSetHistogram | missing | how often each pitch-class set comes, likewise |
formTypesHistogram | missing | how often each written value comes, likewise |
formGetElementsByClassMeasure | missing | the measures of the stream, which Stream::measures answers |
formBeatHistogram | missing | how often each beat strength comes, which the extractor reading it works out |
formPartitionByInstrument | ported | partition_by_instrument |
formChordify | ported | chordified_chords |
formQuarterLengthHistogram | ported | quarter_length_histogram |
formMidiPitchHistogram | ported | midi_pitch_histogram |
formPitchClassHistogram | ported | pitch_class_histogram |
formMidiIntervalHistogram | ported | midi_interval_histogram |
formContourList | ported | contour_list |
formSecondsMap | ported | seconds_map |
▶DataInstancefeatures/base.py
crate 1 of 5
4 to port
One subject prepared for extraction: the stream with its ties stripped, each part and each voice of it prepared on its own, and every reading an extractor may ask for.
| music21 | Crate | music21-rs |
|---|---|---|
setupPostStreamParse | missing | the second half of reading the stream in, which building one does in one |
setClassLabel | missing | the class a subject belongs to for the data set it is in; DataSet::add_data takes it beside the subject |
getClassValue | missing | that class, likewise |
getId | missing | the name a subject goes by, which DataSet::add_data takes beside it |
parseStream | ported | new |
▶DataSetfeatures/base.py
crate 9 of 12
3 to port
Several subjects run through the same extractors, written out as a table.
| music21 | Crate | music21-rs |
|---|---|---|
getClassPositionLabels | missing | where the class column sits, which the caller knows of the labels it asked for |
addMultipleData | missing | adds several subjects at once, which is add_data in a loop |
write | missing | writes the table to a file, which the library does not do: to_text is the text to write |
getClassLabel | ported | class_label |
addFeatureExtractors | ported | add_extractors |
getAttributeLabels | ported | attribute_labels |
getDiscreteLabels | ported | discrete_labels |
addData | ported | add_data |
process | ported | process |
getFeaturesAsList | ported | features_as_list |
getUniqueClassValues | ported | unique_class_values |
getString | ported | to_text |
▶braille/basic.py functionsbraille/basic.py
crate 27 of 27
One element of a score in braille: a note, a rest, a chord, a clef, a signature, a dynamic, a word.
| music21 | Crate | music21-rs |
|---|---|---|
barlineToBraille | ported | barline_to_braille |
chordToBraille | ported | chord_to_braille |
pitchToOctave | ported | pitch_to_octave |
clefToBraille | ported | clef_to_braille |
dynamicToBraille | ported | dynamic_to_braille |
instrumentToBraille | ported | instrument_to_braille |
keySigToBraille | ported | key_sig_to_braille |
metronomeMarkToBraille | ported | metronome_mark_to_braille |
yieldBrailleArticulations | ported | note_to_braille |
noteToBraille | ported | note_to_braille |
handlePitchWithAccidental | ported | note_to_braille |
handleArticulations | ported | note_to_braille |
handleExpressions | ported | note_to_braille |
restToBraille | ported | rest_to_braille |
tempoTextToBraille | ported | tempo_text_to_braille |
textExpressionToBraille | ported | text_expression_to_braille |
timeSigToBraille | ported | time_sig_to_braille |
showOctaveWithNote | ported | show_octave_with_note |
transcribeHeading | ported | transcribe_heading |
transcribeNoteFingering | ported | transcribe_note_fingering |
transcribeSignatures | ported | transcribe_signatures |
brailleUnicodeToBrailleAscii | ported | braille_unicode_to_braille_ascii |
brailleAsciiToBrailleUnicode | ported | braille_ascii_to_braille_unicode |
brailleUnicodeToSymbols | ported | braille_unicode_to_symbols |
yieldDots | ported | yield_dots |
wordToBraille | ported | word_to_braille |
numberToBraille | ported | number_to_braille |
▶braille/translate.py functionsbraille/translate.py
crate 7 of 8
1 to port
A whole score in braille, part by part or on joined staves.
| music21 | Crate | music21-rs |
|---|---|---|
opusToBraille | missing | every score of an opus one after another, which is score_to_braille of each |
objectToBraille | ported | element_to_braille |
streamToBraille | ported | stream_to_braille |
scoreToBraille | ported | score_to_braille |
metadataToString | ported | metadata_to_string |
measureToBraille | ported | measure_to_braille |
partToBraille | ported | part_to_braille |
keyboardPartsToBraille | ported | keyboard_parts_to_braille |
▶BrailleTextbraille/text.py
crate 11 of 11
The page the braille is written onto: its lines, and what may still fit on the one being written.
| music21 | Crate | music21-rs |
|---|---|---|
showHand | ported | set_show_hand |
addHeading | ported | add_heading |
addLongExpression | ported | add_long_expression |
addToNewLine | ported | add_to_new_line |
appendOrInsertCurrent | ported | append_or_insert_current |
addInaccord | ported | add_inaccord |
addMeasureNumber | ported | add_measure_number |
optionalAddKeyboardSymbolsAndDots | ported | optional_add_keyboard_symbols_and_dots |
addSignatures | ported | add_signatures |
makeNewLine | ported | make_new_line |
recenterHeadings | ported | recenter_headings |
▶BrailleTextLinebraille/text.py
crate 5 of 5
| music21 | Crate | music21-rs |
|---|---|---|
append | ported | append |
insert | ported | insert |
canAppend | ported | can_append |
canInsert | ported | can_insert |
lastHyphenToSpace | ported | last_hyphen_to_space |
▶BrailleKeyboardbraille/text.py
crate 2 of 2
| music21 | Crate | music21-rs |
|---|---|---|
makeNewLines | ported | make_new_lines |
addNoteGroupings | ported | add_note_groupings |
▶braille/lookup.py functionsbraille/lookup.py
crate 2 of 3
1 to port
The braille cells music21 writes each thing with, which are tables here rather than dictionaries built at import.
| music21 | Crate | music21-rs |
|---|---|---|
makeBrailleDictionary | missing | builds music21's dictionary of cells at import; the tables here are written out |
dotsAdd | ported | dots_add |
makePitchNameToNotes | ported | pitch_name_to_note |
▶braille/segment.py functionsbraille/segment.py
crate 6 of 10
4 to port
A part cut into the segments braille is written in, each a run of elements that belong together.
| music21 | Crate | music21-rs |
|---|---|---|
setGroupingGlobals | missing | music21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says instead |
setAffinityCode | missing | which kind of segment an element belongs in, which extract_braille_elements says as it reads |
areGroupingsIdentical | missing | whether two groupings are the same, which the segment asks of its own |
splitMeasure | missing | cuts a measure in two so that the braille fits, which split_note_grouping does of the grouping |
findSegments | ported | find_segments |
prepareSlurredNotes | ported | prepare_slurred_notes |
getRawSegments | ported | get_raw_segments |
extractBrailleElements | ported | extract_braille_elements |
prepareBeamedNotes | ported | prepare_beamed_notes |
splitNoteGrouping | ported | split_note_grouping |
▶BrailleSegmentbraille/segment.py
crate 4 of 17
13 to port
One segment written out. music21 takes the segment apart member by member -- the heading, the measure number, each grouping -- where transcribe does the whole of it in order, so those steps are not members here.
| music21 | Crate | music21-rs |
|---|---|---|
addDummyRests | missing | a step of the transcription: the rests that stand before a measure number |
extractMeasureNumber | missing | a step of the transcription |
extractHeading | missing | a step of the transcription: the key, the meter and the tempo over the first measure |
extractInaccordGrouping | missing | a step of the transcription: the voices written one after another |
extractLongExpressionGrouping | missing | a step of the transcription |
showLeadingOctaveFromNoteGrouping | missing | a step of the transcription: whether the first note of a grouping shows its octave |
needsSplitToFit | missing | a step of the transcription: whether a grouping must be split to fit the line |
splitNoteGroupingAndTranscribe | missing | a step of the transcription, which split_note_grouping does the splitting half of |
extractNoteGrouping | missing | a step of the transcription |
addRepeatSymbols | missing | a step of the transcription: the sign for a measure repeated |
extractSignatureGrouping | missing | a step of the transcription |
extractTempoTextGrouping | missing | a step of the transcription |
consolidate | missing | a step of the transcription: the groupings of one kind joined into one |
brailleText | ported | transcribe |
transcribe | ported | transcribe |
addGroupingAttributes | ported | add_grouping_attributes |
fixArticulations | ported | fix_articulations |
▶BrailleGrandSegmentbraille/segment.py
crate 3 of 5
2 to port
A keyboard part written on joined staves, the two hands' groupings paired.
| music21 | Crate | music21-rs |
|---|---|---|
extractHeading | missing | a step of the transcription |
extractNoteGrouping | missing | a step of the transcription |
brailleText | ported | transcribe |
yieldCombinedGroupingKeys | ported | combined_keys |
transcribe | ported | transcribe |
▶StreamAligneralpha/analysis/aligner.py
crate 9 of 14
5 to port
Two readings of the same music lined up against each other -- a score read by an optical reader against the same music played in -- by the edit distance between their hashes.
| music21 | Crate | music21-rs |
|---|---|---|
insertCost | missing | what an insertion costs, which is one everywhere |
deleteCost | missing | what a deletion costs, likewise |
substitutionCost | missing | what a substitution costs, which the hashes' difference says |
tupleEqualityWithoutReference | missing | whether two hashes are equal but for which note they came from, which comparing them answers |
showChanges | missing | prints the changes, and colours the notes of the score to show them |
getDefaultHasher | ported | new |
align | ported | align |
makeHashedStreams | ported | align |
setupDistanceMatrix | ported | align_hashed |
populateDistanceMatrix | ported | align_hashed |
getPossibleMovesFromLocation | ported | align_hashed |
getOpFromLocation | ported | align_hashed |
calculateNumSimilarities | ported | changes_count |
calculateChangesList | ported | align_hashed |
▶Hasheralpha/analysis/hasher.py
crate 2 of 7
5 to port
A stream's notes as hashes, each as much or as little of the note as the caller asked to compare.
| music21 | Crate | music21-rs |
|---|---|---|
setupValidTypesAndStateVars | missing | reads the switches into the state music21 hashes by, which are the fields of a Hasher here |
hashMeasures | missing | the measures hashed one at a time, which is hash_stream of each |
addHashToFinalHash | missing | appends one hash to the list being built |
addNoteHashWithReferenceToFinalHash | missing | appends a note's hash with the note it came from, likewise |
addNoteHashToFinalHash | missing | appends a note's hash, likewise |
setupTupleList | ported | tuple_list |
hashStream | ported | hash_stream |
▶alpha/analysis/fixer.py functionsalpha/analysis/fixer.py
crate 1 of 1
Mending one reading of a score against another: the notes within a length, and the fixes themselves.
| music21 | Crate | music21-rs |
|---|---|---|
getNotesWithinDuration | ported | notes_within_duration |
▶OrnamentFixeralpha/analysis/fixer.py
crate 2 of 3
1 to port
Where the played reading trills or turns and the read one does not, the ornament is written onto the read one.
| music21 | Crate | music21-rs |
|---|---|---|
addOrnament | missing | writes the ornament onto the read note, which fix does where it finds one |
findOrnament | ported | find_ornament |
fix | ported | fix |
▶EnharmonicFixeralpha/analysis/fixer.py
crate 1 of 8
7 to port
Where the two readings spell the same sound differently, the played spelling wins.
| music21 | Crate | music21-rs |
|---|---|---|
isEnharmonic | missing | whether two notes sound alike, which is Pitch::is_enharmonic |
hasAcc | missing | whether a note carries an accidental, which is Pitch::accidental_is_written |
hasNatAcc | missing | whether it carries a natural, likewise |
hasSharpFlatAcc | missing | whether it carries a sharp or a flat, likewise |
stepEq | missing | whether two notes stand on the same step |
stepNotEq | missing | whether they do not |
intervalTooBig | missing | whether the two are too far apart to be a misspelling, which the fix asks as it goes |
fix | ported | fix_enharmonics |
▶alpha/analysis/ornamentRecognizer.py functionsalpha/analysis/ornamentRecognizer.py
crate 1 of 1
How long the notes of an ornament last, written out.
| music21 | Crate | music21-rs |
|---|---|---|
calculateTrillNoteDuration | ported | ornament_note_quarter_length |
▶TrillRecognizeralpha/analysis/ornamentRecognizer.py
crate 1 of 1
Whether a run of notes is a trill written out, and which trill it is.
| music21 | Crate | music21-rs |
|---|---|---|
recognize | ported | recognize |
▶TurnRecognizeralpha/analysis/ornamentRecognizer.py
crate 2 of 2
| music21 | Crate | music21-rs |
|---|---|---|
isAcceptableInterval | ported | is_acceptable_interval |
recognize | ported | recognize |
▶OrnamentRecognizeralpha/analysis/ornamentRecognizer.py
crate 2 of 2
| music21 | Crate | music21-rs |
|---|---|---|
calculateOrnamentNoteQl | ported | ornament_note_quarter_length |
calculateOrnamentTotalQl | ported | ornament_total_quarter_length |
▶alpha/analysis/search.py functionsalpha/analysis/search.py
crate 1 of 1
Runs of notes that walk a scale, found in a part.
| music21 | Crate | music21-rs |
|---|---|---|
findConsecutiveScale | ported | find_consecutive_scale |
▶ScoreCorrectoromr/correctors.py
crate 10 of 14
4 to port
Mending a score read by an optical reader against itself: a measure that reads oddly is compared with the same measure of the other parts and with the rest of its own part, and the likeliest reading wins.
| music21 | Crate | music21-rs |
|---|---|---|
runPriorModel | missing | music21's measure of how much the correction helped, which PriorsIntegrationScore carries |
getMeasureSlice | missing | the same measure across every part, which vertical_probability_dist reads as it goes |
getVerticalProbabilityDistributionSinglePart | missing | a step of the vertical correction, which vertical_probability_dist does for every part at once |
getVerticalProbabilityDistributionSinglePartSingleMeasure | missing | a step of the same |
run | ported | run |
getAllHashes | ported | all_hashes |
getSinglePart | ported | single_part_mut |
runHorizontalCorrectionModel | ported | run_horizontal_correction_model |
getAllIncorrectMeasures | ported | all_incorrect_measures |
verticalProbabilityDist | ported | vertical_probability_dist |
runVerticalSearch | ported | run_vertical_search |
substituteOneMeasureContentsForAnother | ported | substitute_measure |
runVerticalCorrectionModel | ported | run_vertical_correction_model |
generateCorrectedScore | ported | generate_corrected_score |
▶SinglePartomr/correctors.py
crate 6 of 7
1 to port
| music21 | Crate | music21-rs |
|---|---|---|
getMeasures | missing | the measures of the part, which the Stream it was read from holds |
getIncorrectMeasureIndices | ported | find_incorrect_measures |
getSequenceHashesFromMeasureStream | ported | hashed_notes |
horizontalProbabilityDist | ported | horizontal_probability_dist |
runHorizontalSearch | ported | run_horizontal_search |
runHorizontalCorrectionModel | ported | run_horizontal_correction_model |
getProbabilityDistribution | ported | probability_distribution |
▶MeasureHashomr/correctors.py
crate 10 of 15
5 to port
One measure as a string, a character a note, so that two measures may be compared as text.
| music21 | Crate | music21-rs |
|---|---|---|
setSequenceMatcher | missing | keeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported |
differenceProbabilityForOneOpCode | missing | the odds of one edit, which probability_based_on_changes sums |
getProbabilityOnEquality | missing | the odds of two measures reading alike, likewise |
getProbabilityOnOmission | missing | the odds of a note left out, likewise |
getProbabilityOnAddition | missing | the odds of a note put in, likewise |
getHashString | ported | measure_hash |
hashNote | ported | measure_hash |
hashGrace | ported | measure_hash |
hashRest | ported | measure_hash |
hashQuarterLength | ported | measure_hash |
getMeasureDifference | ported | measure_difference |
getOpCodes | ported | opcodes |
getProbabilityBasedOnChanges | ported | probability_based_on_changes |
getProbabilityOnSubstitute | ported | probability_on_substitute |
getProbabilityFromOneCharSub | ported | probability_from_one_char_sub |
▶MeasureSliceomr/correctors.py
crate 0 of 2
2 to port
The same measure across every part, which is what a doubtful measure is compared against.
| music21 | Crate | music21-rs |
|---|---|---|
getSliceHashes | missing | the hashes of the measure across every part, which ScoreCorrector::vertical_probability_dist reads as it goes |
runSliceSearch | missing | the search across the parts, which run_vertical_search does |
▶omr/evaluators.py functionsomr/evaluators.py
crate 2 of 2
How well the mending did: a score with mistakes put in on purpose, mended, and compared with the one it was made from.
| music21 | Crate | music21-rs |
|---|---|---|
evaluateCorrectingModel | ported | evaluate_correcting_model |
autoCorrelationBestMeasure | ported | auto_correlation_best_measure |
▶OmrGroundTruthPairomr/evaluators.py
crate 4 of 10
6 to port
| music21 | Crate | music21-rs |
|---|---|---|
debug | missing | music21's switch for printing what it is doing |
parseAll | missing | reads both scores from their files |
hashAll | missing | hashes both scores, which building the pair does |
substCost | missing | what a substitution costs, which the hashes' difference says |
insertCost | missing | what an insertion costs, which is one everywhere |
deleteCost | missing | what a deletion costs, likewise |
getOmrScore | ported | omr |
getGroundScore | ported | ground |
minEditDist | ported | min_edit_distance |
getDifferences | ported | differences |
▶audioSearch/__init__.py functionsaudioSearch/__init__.py
crate 14 of 16
2 to port
Hearing a monophonic line: the pitch of each stretch of sound, the lengths they make, and the notes that come of it.
| music21 | Crate | music21-rs |
|---|---|---|
getFrequenciesFromMicrophone | missing | listens to a microphone, which the library does not do |
getFrequenciesFromPartialAudioFile | missing | reads part of a file as it is being recorded |
histogram | ported | histogram |
autocorrelationFunction | ported | autocorrelation_frequency |
prepareThresholds | ported | prepare_thresholds |
interpolation | ported | interpolation |
normalizeInputFrequency | ported | normalize_input_frequency |
pitchFrequenciesToObjects | ported | pitch_frequencies_to_objects |
getFrequenciesFromAudioFile | ported | frequencies_from_wav |
detectPitchFrequencies | ported | detect_pitch_frequencies |
smoothFrequencies | ported | smooth_frequencies |
joinConsecutiveIdenticalPitches | ported | join_consecutive_identical_pitches |
quantizeDuration | ported | quantize_duration |
quarterLengthEstimation | ported | quarter_length_estimation |
notesAndDurationsToStream | ported | notes_and_durations_to_stream |
decisionProcess | ported | decision_process |
▶search/serial.py classessearch/serial.py
crate 3 of 8
5 to port
The classes music21's serial search is written as. The crate has one matcher taking Matching, since the five subclasses differ only in how a run is normalized before it is compared.
| music21 | Crate | music21-rs |
|---|---|---|
TransposedSegmentMatcher | missing | one of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes |
TransformedSegmentMatcher | missing | Matching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other |
MultisetSegmentMatcher | missing | Matching::Multiset, which compares the pitch classes in any order |
TransposedMultisetMatcher | missing | Matching::TransposedMultiset |
TransposedInvertedMultisetMatcher | missing | Matching::TransposedInvertedMultiset |
ContiguousSegmentOfNotes | ported | ContiguousSegment |
ContiguousSegmentSearcher | ported | ContiguousSegmentSearcher |
SegmentMatcher | ported | SegmentMatcher |
▶ContiguousSegmentOfNotessearch/serial.py
crate 6 of 7
1 to port
A run of a stream's notes and chords a search found: where it starts, the pitch classes it was read as, and the segment it was matched to.
| music21 | Crate | music21-rs |
|---|---|---|
getActiveMatchedRows | missing | two 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 |
startMeasureNumber | ported | start_measure |
startOffset | ported | start_offset |
zeroCenteredTransformationsFromMatched | ported | zero_centered_transformations_from_matched |
originalCenteredTransformationsFromMatched | ported | original_centered_transformations_from_matched |
readPitchClassesFromBottom | ported | pitch_classes_from_bottom |
getDistinctPitchClasses | ported | distinct_pitch_classes |
▶ContiguousSegmentSearchersearch/serial.py
crate 1 of 11
10 to port
Every run of a given length in a stream, read in one of music21's ways of reading repetitions, chords in or out.
| music21 | Crate | music21-rs |
|---|---|---|
getSearchBoundMethod | missing | music21 chooses a method by name for each way of reading repetitions; the crate's one walk takes Repetitions as an argument |
addActiveChords | missing | a step inside that walk: the crate reads a chord's pitch classes where it meets one |
searchIncludeAllExclude | missing | one of the twelve methods that choice picks between, which the one walk answers for |
searchIncludeAllInclude | missing | as searchIncludeAllExclude |
searchSkipConsecutiveExclude | missing | as searchIncludeAllExclude |
searchSkipConsecutiveInclude | missing | as searchIncludeAllExclude |
searchIgnoreAllExclude | missing | as searchIncludeAllExclude |
searchIgnoreAllInclude | missing | as searchIncludeAllExclude |
searchRowsOnlyExclude | missing | as searchIncludeAllExclude |
searchRowsOnlyInclude | missing | as searchIncludeAllExclude |
byLength | ported | by_length |
▶SegmentMatchersearch/serial.py
crate 3 of 9
6 to port
The runs of a stream that are segments searched for, and the stream with each marked by a lyric. Matching says how a run is told the same as a segment, which is music21's five subclasses.
| music21 | Crate | music21-rs |
|---|---|---|
getContiguousSegmentsByLength | missing | the searcher's by_length, which find asks for itself |
findOneIgnoreAll | missing | one of the two branches of music21's find, which it picks by how repetitions are read; the crate's find is the one walk |
findOneOtherReps | missing | the other branch of find |
checkSearchedAlready | missing | whether a segment the same as one already searched for is to be passed over, which find keeps as it goes |
normalize | missing | how 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 |
equalSubset | missing | the comparison Matching decides, which the crate does inside find |
reps | ported | repetitions |
includeChords | ported | include_chords |
find | ported | find |
▶search/serial.py functionssearch/serial.py
crate 6 of 6
Module-level: the six functions marking a stream's runs with the name of the segment each matched. Each is SegmentMatcher::label given the Matching that function's name says.
| music21 | Crate | music21-rs |
|---|---|---|
labelSegments | ported | label |
labelTransposedSegments | ported | label |
labelTransformedSegments | ported | label |
labelMultisets | ported | label |
labelTransposedMultisets | ported | label |
labelTransposedAndInvertedMultisets | ported | label |
Nothing matches that filter.
Every public member of the music21 classes the crate ports, read from the submodule and matched to a pub fn by the crate's naming convention, with data/feature_map.toml holding the renames the convention does not give. A reason for not porting a member is shown beside it but still counts against the total.
Still to port
287 members, 0 with no reason given
| music21 member | Why not | Wheel |
|---|---|---|
| left out, with a reason — 287 | ||
Pitch.groupspitch.py | the 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 | in the wheel |
Pitch.informClientpitch.py | observer callback for a containing note; there is none | in the wheel |
ConcreteScale.isConcretescale/__init__.py | every Scale here has a tonic, so the question has one answer; the wheel answers it for a scale built without one | in the wheel |
ConcreteScale.abstractscale/__init__.py | a 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 | in the wheel |
ConcreteScale.writescale/__init__.py | writes 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 | not in the wheel |
ConcreteScale.showscale/__init__.py | opens the scale in another program, which is the caller's to do | not in the wheel |
Scalescale/__init__.py | the abstract base | in the wheel |
AbstractScalescale/__init__.py | a 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 | in the wheel |
AbstractDiatonicScalescale/__init__.py | the IntervalNetwork layer | not in the wheel |
AbstractOctatonicScalescale/__init__.py | the IntervalNetwork layer | not in the wheel |
AbstractHarmonicMinorScalescale/__init__.py | the IntervalNetwork layer | not in the wheel |
AbstractMelodicMinorScalescale/__init__.py | the IntervalNetwork layer | not in the wheel |
AbstractCyclicalScalescale/__init__.py | the IntervalNetwork layer | not in the wheel |
AbstractOctaveRepeatingScalescale/__init__.py | the IntervalNetwork layer | not in the wheel |
ConcreteScalescale/__init__.py | realized by Scale, StepScale and ScalaScale | in the wheel |
DiatonicScalescale/__init__.py | the diatonic modes are ScaleType variants | in the wheel |
TimeSignature.resetValuesmeter/base.py | rebuilding a meter in place; a new one is built instead | in the wheel |
TimeSignature.loadmeter/base.py | rebuilding a meter in place; a new one is built instead | in the wheel |
Instrument.partIdRandomizeinstrument.py | makes 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 | in the wheel |
Instrument.instrumentIdRandomizeinstrument.py | makes 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 | in the wheel |
Duration.informClientduration.py | observer callback for a containing note; there is none | in the wheel |
Duration.currentComponentsduration.py | the working-out is not deferred here, so there is no half-worked-out state to read | in the wheel |
Sieve.expandsieve.py | which reading answers is not state on the sieve here; compressed hands back the other one and the sieve as written stays as it was | in the wheel |
Sieve.setZsieve.py | the range is an argument of each question here, not state on the sieve | in the wheel |
Sieve.setZRangesieve.py | the range is an argument of each question here, not state on the sieve | in the wheel |
Sieve.setSegmentFormatsieve.py | the segment format is an argument of each question here, not state on the sieve | in the wheel |
Sieve.representsieve.py | the sieve is written by Display, which is not a function the map can name | in the wheel |
Volume.cachedRealizedvolume.py | the crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does | in the wheel |
Volume.cachedRealizedStrvolume.py | the crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does | in the wheel |
Note.pitchChangednote.py | observer callback; there is none | in the wheel |
TsvHandler.prepStreamromanText/tsvConverter.py | a step inside the reader: from_tsv prepares the measures from the table's own numbers and meters itself and hands back the whole score | not in the wheel |
M21toTSV.writeromanText/tsvConverter.py | writes a file, which the library does not do: to_tsv hands back the text | not in the wheel |
CTSong.toScoreromanText/clercqTemperley.py | music21's own deprecated name for toPart, which it will take out | not in the wheel |
CTRule.parentromanText/clercqTemperley.py | music21 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 | not in the wheel |
CTRule.expandExpansionContentromanText/clercqTemperley.py | a step inside the expansion, which the crate drives from the song rather than from the rule keeping the state | not in the wheel |
CTRule.expandSimpleContentromanText/clercqTemperley.py | a step inside the expansion, as expandExpansionContent | not in the wheel |
CTRule.addOptionalTieAndLyricsromanText/clercqTemperley.py | a step inside the expansion, which ties the chord before as it writes the one after | not in the wheel |
CTRule.insertKsTsromanText/clercqTemperley.py | a step inside the expansion: the crate writes the key and the meter into a measure as it builds it | not in the wheel |
addNewChordSymbolharmony.py | mutates 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 | not in the wheel |
changeAbbreviationForharmony.py | mutates 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 | not in the wheel |
removeChordSymbolsharmony.py | mutates 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 | not in the wheel |
getPathsscale/scala/__init__.py | where the archive's files sit on disk; the archive here is one bundled table and has no paths | not in the wheel |
Tie.idtie.py | the 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 | in the wheel |
MeterSequence.partitionmeter/core.py | one setter dispatching on the type of what it is handed; the three partitions it dispatches to are each ported | in the wheel |
MeterSequence.loadmeter/core.py | rebuilding a sequence in place; a new one is built instead | in the wheel |
Ornament.fillListOfRealizedNotesexpressions.py | a helper realize fills its lists with; realize is ported | in the wheel |
showResolutionsfiguredBass/resolution.py | puts 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 | not in the wheel |
Segment.singlePossibilityRulesfiguredBass/segment.py | music21's table of its own Python functions for printing; the rules are Rules and the segment runs them | in the wheel |
Segment.consecutivePossibilityRulesfiguredBass/segment.py | music21's table of its own Python functions for printing; the rules are Rules and the segment runs them | in the wheel |
Segment.specialResolutionRulesfiguredBass/segment.py | music21's table of its own Python functions for printing; the rules are Rules and the segment runs them | in the wheel |
printRulesfiguredBass/segment.py | prints music21's rule tables, which hold its Python functions | not in the wheel |
KeyWeightKeyAnalysis.solutionLegendanalysis/discrete.py | the colour legend of a keyscape graph; presentation | not in the wheel |
KeyWeightKeyAnalysis.solutionUnitStringanalysis/discrete.py | the unit a graph's legend is labelled with; presentation | not in the wheel |
KeyWeightKeyAnalysis.solutionToColoranalysis/discrete.py | the colour a key is drawn in; presentation | not in the wheel |
Ambitus.solutionLegendanalysis/discrete.py | the colour legend of a graph; presentation | not in the wheel |
Ambitus.solutionUnitStringanalysis/discrete.py | the unit a graph's legend is labelled with; presentation | not in the wheel |
Ambitus.solutionToColoranalysis/discrete.py | the colour a span is drawn in; presentation | not in the wheel |
MelodicIntervalDiversity.solutionToColoranalysis/discrete.py | the colour a count is drawn in; presentation | in the wheel |
EnharmonicSimplifier.getProductanalysis/enharmonics.py | lists every combination of the spellings at once; best_choice walks them one at a time | in the wheel |
Stream.writestream/base.py | writing a file, which the format modules do | not in the wheel |
Stream.showstream/base.py | rendering, which the crate leaves to its caller | not in the wheel |
Stream.firststream/base.py | as elementOffset: events answers in order | not in the wheel |
Stream.laststream/base.py | as elementOffset: events answers in order | not in the wheel |
Stream.clefstream/base.py | the clef a stream opens with; the clef in force is read by in_force_before, a crate stream keeping no clef of its own | in the wheel |
Stream.clearstream/base.py | empties a stream in place; clone_empty answers an empty one of the same kind | not in the wheel |
Stream.mergeAttributesstream/base.py | what clone_empty carries over | not in the wheel |
Stream.indexstream/base.py | as elementOffset | not in the wheel |
Stream.removestream/base.py | takes a named object out; retain_leaves and remove_event take out by place or by test | in the wheel |
Stream.setElementOffsetstream/base.py | as elementOffset: events_mut reaches each in place | in the wheel |
Stream.elementOffsetstream/base.py | asks where one object sits; a crate stream owns values rather than objects, so events gives each with its offset | in the wheel |
Stream.storeAtEndstream/base.py | elements music21 keeps at the right barline rather than at an offset; a measure's barlines are its own here | not in the wheel |
Stream.isAtEndstream/base.py | needs the sites a crate stream does not keep | not in the wheel |
Stream.setDerivationMethodstream/base.py | derivations, which a crate stream does not keep | not in the wheel |
Stream.replacestream/base.py | swaps one object for another; events_mut reaches each in place | not in the wheel |
Stream.recurseReprstream/base.py | music21's own text dump of a stream | not in the wheel |
Stream.plotstream/base.py | plotting, which the crate leaves to its caller | not in the wheel |
Stream.addGroupForElementsstream/base.py | the group names music21 picks elements out of a stream by; nothing a crate stream holds carries them | not in the wheel |
Stream.getElementsByGroupstream/base.py | as addGroupForElements | not in the wheel |
Stream.getElementByIdstream/base.py | an id on every element, which only a stream and a note carry here | not in the wheel |
Stream.measurestream/base.py | one measure by its number; measures answers them all, each carrying its own number | in the wheel |
Stream.transferOffsetToElementsstream/base.py | moves a stream's own offset onto what it holds, which needs the sites a crate stream does not keep | not in the wheel |
Stream.haveAccidentalsBeenMadestream/base.py | a flag music21 keeps on the stream; nothing here remembers having been asked | not in the wheel |
Stream.sortstream/base.py | a crate stream is in offset order as it is built | not in the wheel |
Stream.sortedstream/base.py | as sort | in the wheel |
Stream.containerInHierarchystream/base.py | needs the sites a crate stream does not keep | not in the wheel |
Stream.makeImmutablestream/base.py | music21's mutability machinery, which a value has no need of | not in the wheel |
Stream.makeMutablestream/base.py | as makeImmutable | not in the wheel |
Stream.durationstream/base.py | a crate stream has no Duration of its own; highest_time answers when the last thing in it ends | not in the wheel |
Stream.beatstream/base.py | where one element sits in its bar; placed answers it for every element at once, and beat_and_measure_from_offset for a point | not in the wheel |
Stream.beatStrstream/base.py | as beat | not in the wheel |
Stream.beatStrengthstream/base.py | as beat | not in the wheel |
Stream.attachMelodicIntervalsstream/base.py | attaches an interval to each note; melodic_intervals answers them instead, a crate note carrying nothing of its line | not in the wheel |
Measure.mergeAttributesstream/base.py | what clone_empty carries over | not in the wheel |
Part.mergeAttributesstream/base.py | what clone_empty carries over | not in the wheel |
Score.measurestream/base.py | one measure by its number; measures answers them all, each carrying its own number | in the wheel |
Opus.writestream/base.py | writing a file, which the format modules do | not in the wheel |
Opus.showstream/base.py | rendering, which the crate leaves to its caller | not in the wheel |
ChordWithFretBoard.getFretNotesFromFiguretablature.py | music21'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 | not in the wheel |
LanguageDetector.readExcerptstext.py | reads the excerpt files off the disk; the crate's excerpts are built in and the library does no file IO | not in the wheel |
Trigram.measuretext.py | the step that counts the letter triples, which building one does | not in the wheel |
Trigram.likelytext.py | which language a trigram is nearest, which most_likely_language answers | not in the wheel |
LayoutBaselayout.py | the class music21 hangs the four layouts off; layout::Layout is the one of them a stream holds | not in the wheel |
LayoutScorelayout.py | a 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 | not in the wheel |
Pagelayout.py | a page of such a score | not in the wheel |
Systemlayout.py | a system of such a score | not in the wheel |
Stafflayout.py | a staff of such a score | not in the wheel |
divideByPageslayout.py | builds a LayoutScore, which the crate has none of | not in the wheel |
getPageRegionMeasureNumberslayout.py | the measures on a page of a LayoutScore | not in the wheel |
getSystemRegionMeasureNumberslayout.py | the measures in a system of a LayoutScore | not in the wheel |
getRegionMeasureNumberslayout.py | the measures in a region of a LayoutScore | not in the wheel |
Enclosurestyle.py | the 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 | not in the wheel |
Stylestyle.py | the base class every style hangs off; the crate keeps the few drawing values it reads and writes beside the thing drawn | in the wheel |
NoteStylestyle.py | how a note is drawn beyond its colour and its size | in the wheel |
TextStylePlacementstyle.py | a text style that also says which side of the staff it is on, which is display::Drawn here | not in the wheel |
BezierStylestyle.py | the curve of a slur | not in the wheel |
LineStylestyle.py | the dashes of a line | not in the wheel |
StreamStylestyle.py | how a whole stream is drawn | not in the wheel |
BeamStylestyle.py | how a beam is drawn | not in the wheel |
StyleMixinstyle.py | what music21 mixes into every class it draws; nothing here has a style of its own to mix in | not in the wheel |
TextStyle.letterSpacingstyle.py | the 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 | not in the wheel |
PendingAssignmentRefspanner.py | music21's note to itself that a spanner is waiting for its first element, which the readers keep as a queue | not in the wheel |
SpannerAnchorspanner.py | an 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 | not in the wheel |
SpannerBundlespanner.py | the collection music21 keeps a stream's spanners in; a crate stream holds its own | in the wheel |
MultiMeasureRestspanner.py | several measures of rest drawn as one, which is a notation this crate does not write | not in the wheel |
Spanner.purgeOrphansspanner.py | drops the elements no stream holds any more, which only a spanner keeping objects can have | not in the wheel |
Spanner.purgeLocationsspanner.py | drops the sites it remembers, and it remembers none | not in the wheel |
Spanner.getSpannedElementsByClassspanner.py | the elements of a class among them, which the stream holding them answers | not in the wheel |
Spanner.getSpannedElementIdsspanner.py | Python object ids | not in the wheel |
Spanner.addSpannedElementsspanner.py | adds elements by object; Spanner::new takes the positions it joins | in the wheel |
Spanner.insertFirstSpannedElementspanner.py | puts an element first by object | not in the wheel |
Spanner.hasSpannedElementspanner.py | whether an element is among them, which is spanned().contains | in the wheel |
Spanner.replaceSpannedElementspanner.py | swaps one element for another by object | in the wheel |
Spanner.fillspanner.py | fills in every element between the first and the last, which asks the stream what stands between them | not in the wheel |
Spanner.getFirstspanner.py | the first element itself; spanned gives its position and the stream hands back what stands there | in the wheel |
Spanner.getLastspanner.py | the last element itself, likewise | in the wheel |
Line.tickspanner.py | sets both ends at once; LineEnds carries each | not in the wheel |
RepeatMarkrepeat.py | what music21 mixes into everything that repeats; a barline here says it repeats and an expression says where to go back to | not in the wheel |
RepeatExpressionCommandrepeat.py | the kinds that send the music somewhere rather than marking a place, which is every kind is_marker says no to | not in the wheel |
RepeatFinderrepeat.py | finds the repeated passages of a score so as to write it with repeat signs, which nothing here writes | not in the wheel |
insertRepeatEndingrepeat.py | writes an ending bracket over some measures | not in the wheel |
insertRepeatrepeat.py | writes repeat barlines round some measures | not in the wheel |
deleteMeasuresrepeat.py | takes measures out and renumbers the rest | not in the wheel |
RepeatExpression.applyTextFormattingrepeat.py | the font and the justification a renderer draws the words with; justify says which way they are set | not in the wheel |
RepeatExpression.setTextExpressionrepeat.py | keeps the words as a TextExpression object | not in the wheel |
RepeatExpression.getTextExpressionrepeat.py | the words as a TextExpression for a renderer; text is what they say | not in the wheel |
Expander.measureMaprepeat.py | the measures of the expansion listed for a caller to read | not in the wheel |
Expander.repeatBarsAreCoherentrepeat.py | a step of the expansion, which answers an error where the repeats make no sense | not in the wheel |
Expander.findInnermostRepeatIndicesrepeat.py | a step of the expansion | not in the wheel |
Expander.processInnermostRepeatBarsrepeat.py | a step of the expansion | not in the wheel |
Expander.getRepeatExpressionIndexrepeat.py | a step of the expansion | not in the wheel |
Expander.isExpandablerepeat.py | whether there is anything to play out, which expanding answers | not in the wheel |
Variant.purgeOrphansvariant.py | drops the elements no stream holds any more, which only a variant keeping objects can have | not in the wheel |
Variant.purgeLocationsvariant.py | drops the sites it remembers, and it remembers none | not in the wheel |
Variant.getElementIdsvariant.py | Python object ids | not in the wheel |
Variant.replaceElementvariant.py | swaps one element for another by object | not in the wheel |
Variant.highestOffsetvariant.py | the offset of the stream it holds, which Stream::highest_offset answers of its contents | not in the wheel |
Variant.showvariant.py | rendering, which the crate leaves to its caller | not in the wheel |
Variant.containedSitevariant.py | the stream it was read out of, which is a site | not in the wheel |
Variant.replacementDurationvariant.py | the Duration of what it replaces; replacement_quarter_length is how long that is | not in the wheel |
Metadata.convertValuemetadata/__init__.py | reads 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 | not in the wheel |
RichMetadata.mergemetadata/__init__.py | takes in another score's cached numbers | not in the wheel |
RichMetadata.getSourcePathmetadata/__init__.py | where the file sits, relative to the corpus | not in the wheel |
RichMetadata.updatemetadata/__init__.py | works 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 | not in the wheel |
RichMetadata.allmetadata/__init__.py | the cached numbers beside the metadata | not in the wheel |
IndexedLyric.modifysearch/lyrics.py | a named tuple's _replace, which is Python's own | not in the wheel |
indexScoreFilePathssearch/segment.py | indexes the scores at a list of paths, which means reading files | not in the wheel |
indexOnePathsearch/segment.py | indexes the score at a path, likewise | not in the wheel |
saveScoreDictsearch/segment.py | writes an index to a file | not in the wheel |
loadScoreDictsearch/segment.py | reads an index back | not in the wheel |
getDifflibOrPyLevsearch/segment.py | chooses between two Python libraries for the string comparison; search::difflib is the one difflib.SequenceMatcher ratio, ported | not in the wheel |
PartReduction.getGraphHorizontalBarWeightedDataanalysis/reduction.py | the spans arranged for music21's bar graph; weighted_spans is what they say | not in the wheel |
ElementTimespan.newtree/spans.py | a copy with some of its values changed, which a value type here is made afresh | not in the wheel |
ElementTimespan.makeElementtree/spans.py | the element itself, which an ElementTimespan holds a reference to | not in the wheel |
Timespan.newtree/spans.py | a copy with some of its values changed | not in the wheel |
Timespan.canMergetree/spans.py | whether two timespans may be joined, which only the tree's own merging asks | not in the wheel |
Timespan.mergeWithtree/spans.py | joins two timespans | not in the wheel |
Timespan.splitAttree/spans.py | cuts a timespan in two | not in the wheel |
TimespanTree.indextree/timespanTree.py | where a timespan sits in the tree, which is its place in the list here | not in the wheel |
TimespanTree.removeTimespanListtree/timespanTree.py | takes several out, likewise | not in the wheel |
TimespanTree.removeTimespantree/timespanTree.py | takes a timespan out of the tree; the crate reads a stream into timespans and does not edit them | not in the wheel |
TimespanTree.toPartwiseTimespanTreestree/timespanTree.py | a tree for each part of the score; as_timespans reads whichever stream it is given, a part included | not in the wheel |
TimespanTree.allPartstree/timespanTree.py | every part the timespans came from, which the caller has in the score it read | not in the wheel |
TimespanTree.elementtree/timespanTree.py | the element a timespan holds, which ElementTimespan::element answers | not in the wheel |
Verticality.beatStrengthtree/verticality.py | the 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 | not in the wheel |
listOfTreesByClasstree/fromStream.py | a tree per part per class, which the caller builds of what as_timespans reads | not in the wheel |
makeFastShallowTreeFromSortedStreamtree/fromStream.py | a tree of one stream's own elements with nothing nested, built without sorting; the crate sorts once and keeps a list | not in the wheel |
partwisetree/toStream.py | the timespans written back out as a part each, which is the score they were read from | not in the wheel |
Feature.prepareVectorsfeatures/base.py | makes room for the numbers before they are worked out, which building one does | not in the wheel |
Feature.normalizefeatures/base.py | divides the numbers by their sum, which Extractor::extract does where the extractor asks for it | not in the wheel |
FeatureExtractor.setDatafeatures/base.py | hands the extractor the stream to read, which extract takes as an argument | not in the wheel |
FeatureExtractor.fillFeatureAttributesfeatures/base.py | copies the extractor's own id and name onto the feature it is filling in | not in the wheel |
FeatureExtractor.prepareFeaturefeatures/base.py | makes the blank feature and fills its attributes in, which blank answers | not in the wheel |
FeatureExtractor.processfeatures/base.py | the reading itself, which is the row's own function and runs in extract | not in the wheel |
StreamForms.keysfeatures/base.py | the names music21 looks a form up by | not in the wheel |
StreamForms.formSetClassHistogramfeatures/base.py | how often each set class comes, which the extractors that read it work out where they read it | not in the wheel |
StreamForms.formPitchClassSetHistogramfeatures/base.py | how often each pitch-class set comes, likewise | not in the wheel |
StreamForms.formTypesHistogramfeatures/base.py | how often each written value comes, likewise | not in the wheel |
StreamForms.formGetElementsByClassMeasurefeatures/base.py | the measures of the stream, which Stream::measures answers | not in the wheel |
StreamForms.formBeatHistogramfeatures/base.py | how often each beat strength comes, which the extractor reading it works out | not in the wheel |
DataInstance.setupPostStreamParsefeatures/base.py | the second half of reading the stream in, which building one does in one | not in the wheel |
DataInstance.setClassLabelfeatures/base.py | the class a subject belongs to for the data set it is in; DataSet::add_data takes it beside the subject | not in the wheel |
DataInstance.getClassValuefeatures/base.py | that class, likewise | not in the wheel |
DataInstance.getIdfeatures/base.py | the name a subject goes by, which DataSet::add_data takes beside it | not in the wheel |
DataSet.getClassPositionLabelsfeatures/base.py | where the class column sits, which the caller knows of the labels it asked for | not in the wheel |
DataSet.addMultipleDatafeatures/base.py | adds several subjects at once, which is add_data in a loop | not in the wheel |
DataSet.writefeatures/base.py | writes the table to a file, which the library does not do: to_text is the text to write | not in the wheel |
opusToBraillebraille/translate.py | every score of an opus one after another, which is score_to_braille of each | not in the wheel |
makeBrailleDictionarybraille/lookup.py | builds music21's dictionary of cells at import; the tables here are written out | not in the wheel |
setGroupingGlobalsbraille/segment.py | music21's module-level defaults for a grouping, set the first time one is made; SegmentOptions is what a caller says instead | not in the wheel |
setAffinityCodebraille/segment.py | which kind of segment an element belongs in, which extract_braille_elements says as it reads | not in the wheel |
areGroupingsIdenticalbraille/segment.py | whether two groupings are the same, which the segment asks of its own | not in the wheel |
splitMeasurebraille/segment.py | cuts a measure in two so that the braille fits, which split_note_grouping does of the grouping | not in the wheel |
BrailleSegment.addDummyRestsbraille/segment.py | a step of the transcription: the rests that stand before a measure number | not in the wheel |
BrailleSegment.extractMeasureNumberbraille/segment.py | a step of the transcription | not in the wheel |
BrailleSegment.extractHeadingbraille/segment.py | a step of the transcription: the key, the meter and the tempo over the first measure | not in the wheel |
BrailleSegment.extractInaccordGroupingbraille/segment.py | a step of the transcription: the voices written one after another | not in the wheel |
BrailleSegment.extractLongExpressionGroupingbraille/segment.py | a step of the transcription | not in the wheel |
BrailleSegment.showLeadingOctaveFromNoteGroupingbraille/segment.py | a step of the transcription: whether the first note of a grouping shows its octave | not in the wheel |
BrailleSegment.needsSplitToFitbraille/segment.py | a step of the transcription: whether a grouping must be split to fit the line | not in the wheel |
BrailleSegment.splitNoteGroupingAndTranscribebraille/segment.py | a step of the transcription, which split_note_grouping does the splitting half of | not in the wheel |
BrailleSegment.extractNoteGroupingbraille/segment.py | a step of the transcription | not in the wheel |
BrailleSegment.addRepeatSymbolsbraille/segment.py | a step of the transcription: the sign for a measure repeated | not in the wheel |
BrailleSegment.extractSignatureGroupingbraille/segment.py | a step of the transcription | not in the wheel |
BrailleSegment.extractTempoTextGroupingbraille/segment.py | a step of the transcription | not in the wheel |
BrailleSegment.consolidatebraille/segment.py | a step of the transcription: the groupings of one kind joined into one | not in the wheel |
BrailleGrandSegment.extractHeadingbraille/segment.py | a step of the transcription | not in the wheel |
BrailleGrandSegment.extractNoteGroupingbraille/segment.py | a step of the transcription | not in the wheel |
StreamAligner.insertCostalpha/analysis/aligner.py | what an insertion costs, which is one everywhere | not in the wheel |
StreamAligner.deleteCostalpha/analysis/aligner.py | what a deletion costs, likewise | not in the wheel |
StreamAligner.substitutionCostalpha/analysis/aligner.py | what a substitution costs, which the hashes' difference says | not in the wheel |
StreamAligner.tupleEqualityWithoutReferencealpha/analysis/aligner.py | whether two hashes are equal but for which note they came from, which comparing them answers | not in the wheel |
StreamAligner.showChangesalpha/analysis/aligner.py | prints the changes, and colours the notes of the score to show them | not in the wheel |
Hasher.setupValidTypesAndStateVarsalpha/analysis/hasher.py | reads the switches into the state music21 hashes by, which are the fields of a Hasher here | not in the wheel |
Hasher.hashMeasuresalpha/analysis/hasher.py | the measures hashed one at a time, which is hash_stream of each | not in the wheel |
Hasher.addHashToFinalHashalpha/analysis/hasher.py | appends one hash to the list being built | not in the wheel |
Hasher.addNoteHashWithReferenceToFinalHashalpha/analysis/hasher.py | appends a note's hash with the note it came from, likewise | not in the wheel |
Hasher.addNoteHashToFinalHashalpha/analysis/hasher.py | appends a note's hash, likewise | not in the wheel |
OrnamentFixer.addOrnamentalpha/analysis/fixer.py | writes the ornament onto the read note, which fix does where it finds one | not in the wheel |
EnharmonicFixer.isEnharmonicalpha/analysis/fixer.py | whether two notes sound alike, which is Pitch::is_enharmonic | not in the wheel |
EnharmonicFixer.hasAccalpha/analysis/fixer.py | whether a note carries an accidental, which is Pitch::accidental_is_written | not in the wheel |
EnharmonicFixer.hasNatAccalpha/analysis/fixer.py | whether it carries a natural, likewise | not in the wheel |
EnharmonicFixer.hasSharpFlatAccalpha/analysis/fixer.py | whether it carries a sharp or a flat, likewise | not in the wheel |
EnharmonicFixer.stepEqalpha/analysis/fixer.py | whether two notes stand on the same step | not in the wheel |
EnharmonicFixer.stepNotEqalpha/analysis/fixer.py | whether they do not | not in the wheel |
EnharmonicFixer.intervalTooBigalpha/analysis/fixer.py | whether the two are too far apart to be a misspelling, which the fix asks as it goes | not in the wheel |
ScoreCorrector.runPriorModelomr/correctors.py | music21's measure of how much the correction helped, which PriorsIntegrationScore carries | not in the wheel |
ScoreCorrector.getMeasureSliceomr/correctors.py | the same measure across every part, which vertical_probability_dist reads as it goes | not in the wheel |
ScoreCorrector.getVerticalProbabilityDistributionSinglePartomr/correctors.py | a step of the vertical correction, which vertical_probability_dist does for every part at once | not in the wheel |
ScoreCorrector.getVerticalProbabilityDistributionSinglePartSingleMeasureomr/correctors.py | a step of the same | not in the wheel |
SinglePart.getMeasuresomr/correctors.py | the measures of the part, which the Stream it was read from holds | not in the wheel |
MeasureHash.setSequenceMatcheromr/correctors.py | keeps Python's own SequenceMatcher on the object; search::difflib is the comparison, ported | not in the wheel |
MeasureHash.differenceProbabilityForOneOpCodeomr/correctors.py | the odds of one edit, which probability_based_on_changes sums | not in the wheel |
MeasureHash.getProbabilityOnEqualityomr/correctors.py | the odds of two measures reading alike, likewise | not in the wheel |
MeasureHash.getProbabilityOnOmissionomr/correctors.py | the odds of a note left out, likewise | not in the wheel |
MeasureHash.getProbabilityOnAdditionomr/correctors.py | the odds of a note put in, likewise | not in the wheel |
MeasureSlice.getSliceHashesomr/correctors.py | the hashes of the measure across every part, which ScoreCorrector::vertical_probability_dist reads as it goes | not in the wheel |
MeasureSlice.runSliceSearchomr/correctors.py | the search across the parts, which run_vertical_search does | not in the wheel |
OmrGroundTruthPair.debugomr/evaluators.py | music21's switch for printing what it is doing | not in the wheel |
OmrGroundTruthPair.parseAllomr/evaluators.py | reads both scores from their files | not in the wheel |
OmrGroundTruthPair.hashAllomr/evaluators.py | hashes both scores, which building the pair does | not in the wheel |
OmrGroundTruthPair.substCostomr/evaluators.py | what a substitution costs, which the hashes' difference says | not in the wheel |
OmrGroundTruthPair.insertCostomr/evaluators.py | what an insertion costs, which is one everywhere | not in the wheel |
OmrGroundTruthPair.deleteCostomr/evaluators.py | what a deletion costs, likewise | not in the wheel |
getFrequenciesFromMicrophoneaudioSearch/__init__.py | listens to a microphone, which the library does not do | not in the wheel |
getFrequenciesFromPartialAudioFileaudioSearch/__init__.py | reads part of a file as it is being recorded | not in the wheel |
TransposedSegmentMatchersearch/serial.py | one of Matching's six kinds rather than a class of its own: Matching::Transposed, which compares the intervals a run makes | not in the wheel |
TransformedSegmentMatchersearch/serial.py | Matching::Transformed, which compares the rows a transposition, inversion, retrograde or retrograde inversion takes one to the other | not in the wheel |
MultisetSegmentMatchersearch/serial.py | Matching::Multiset, which compares the pitch classes in any order | not in the wheel |
TransposedMultisetMatchersearch/serial.py | Matching::TransposedMultiset | not in the wheel |
TransposedInvertedMultisetMatchersearch/serial.py | Matching::TransposedInvertedMultiset | not in the wheel |
ContiguousSegmentOfNotes.getActiveMatchedRowssearch/serial.py | two 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 | not in the wheel |
ContiguousSegmentSearcher.getSearchBoundMethodsearch/serial.py | music21 chooses a method by name for each way of reading repetitions; the crate's one walk takes Repetitions as an argument | not in the wheel |
ContiguousSegmentSearcher.addActiveChordssearch/serial.py | a step inside that walk: the crate reads a chord's pitch classes where it meets one | not in the wheel |
ContiguousSegmentSearcher.searchIncludeAllExcludesearch/serial.py | one of the twelve methods that choice picks between, which the one walk answers for | not in the wheel |
ContiguousSegmentSearcher.searchIncludeAllIncludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
ContiguousSegmentSearcher.searchSkipConsecutiveExcludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
ContiguousSegmentSearcher.searchSkipConsecutiveIncludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
ContiguousSegmentSearcher.searchIgnoreAllExcludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
ContiguousSegmentSearcher.searchIgnoreAllIncludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
ContiguousSegmentSearcher.searchRowsOnlyExcludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
ContiguousSegmentSearcher.searchRowsOnlyIncludesearch/serial.py | as searchIncludeAllExclude | not in the wheel |
SegmentMatcher.getContiguousSegmentsByLengthsearch/serial.py | the searcher's by_length, which find asks for itself | not in the wheel |
SegmentMatcher.findOneIgnoreAllsearch/serial.py | one of the two branches of music21's find, which it picks by how repetitions are read; the crate's find is the one walk | not in the wheel |
SegmentMatcher.findOneOtherRepssearch/serial.py | the other branch of find | not in the wheel |
SegmentMatcher.checkSearchedAlreadysearch/serial.py | whether a segment the same as one already searched for is to be passed over, which find keeps as it goes | not in the wheel |
SegmentMatcher.normalizesearch/serial.py | how 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 | not in the wheel |
SegmentMatcher.equalSubsetsearch/serial.py | the comparison Matching decides, which the crate does inside find | not in the wheel |
The same members the list above marks missing, in one place. The ones to watch are those with no reason at all: they are what nobody has decided about. A reason is an exclusion in data/feature_map.toml, and an exclusion is checked before the naming convention, so one left behind after its member is ported goes on hiding the port.
Beyond music21
10 capabilities
| Capability | music21-rs | music21 |
|---|---|---|
| PolyrhythmCross-rhythms as a first-class thing: the cycle two or more pulses make together, where the hits fall in it, and the chord that cycle maps onto when its ratios are read as pitches. music21 has no counterpart. | present | nothing of the kind |
| Tuning systemsExact ratio tables - just intonation, meantone, Bohlen-Pierce, the Carlos scales - with frequencies derived from the ratios rather than from equal temperament, and available with no features turned on. Fourteen of them are the historical keyboard temperaments, Salinas 1577 through Lehman 2005, reachable together as HISTORICAL_TEMPERAMENTS; they are counted here rather than again, being the same tables. 23 of the 28 are in the bundled Scala archive too - the same scales stored the other way, exact ratios against parsed cents - which is deliberate and pinned by a test. music21 tunes a scale only by reading a Scala file. | 28 systems | nothing of the kind |
| Adaptive tuningTuning where a pitch's frequency depends on the harmony it is sounding in rather than on a fixed table - recursive just intonation, five-limit from whichever note is the root. | present | nothing of the kind |
| Scala archiveEvery scale music21 ships, plus the hexatone collection, parsed into one table at build time rather than read from disk. The reader also handles the inline comments and EDO notation that music21's own parser mis-reads. | 3994 scales | 3932 scales |
| Regular temperamentsA mapping from the primes onto a period and its generators, the commas it tempers out, and the scales that come of stacking it. Every one is checked against the Xenharmonic Wiki, so a mistranscribed number fails the build. | 95 temperaments | nothing of the kind |
| Monzos and valsAn interval as the exponents of the primes in its ratio, so 81/80 is [-4 4 -1>, and how many steps of a tuning each prime is worth, 12edo being <12 19 28]. A val mapping a comma to nothing tempers it out. | present | nothing of the kind |
| Moments of symmetryThe scales a single generator makes. Seven fifths folded into an octave give exactly two step sizes, which is the diatonic scale, 5L 2s. The pattern is kept apart from the tuning, and nothing assumes the period is an octave. | present | nothing of the kind |
| Equal divisions of anythingEqual steps of any interval, not only of the octave: Bohlen-Pierce divides a twelfth into thirteen. The octave-repeating tables above cannot express those by construction. | present | nothing of the kind |
Harte chord notationChord labels as harte-library reads them, C:maj7/3 or Bb:(b3,5,b7,9), built into chords with the root fixed as the label names it. The harte crate in this repository, ported from harte-library and checked against every label in that library's 8,064-chord coverage set. |
48 shorthands | nothing of the kind |
| Duplicate detectionWhich of these are the same tuning under another name, compared by sound rather than spelling. It finds 44 groups of repeats among the archive's 3,994 scales. | present | nothing of the kind |
1235 public members the map matches to nothing in music2185 fn, 903 method, 83 struct, 93 enum, 3 trait, 4 type, 64 const, across 97 modules
▶notation59 members
ALLconstBeamstructBeam::beam_typemethodBeam::set_beam_typemethodBeam::set_directionmethodBeam::set_numbermethodBeamDirectionenumBeamDirection::as_strmethodBeamDirection::from_music21_namemethodBeamTypeenumBeamType::as_strmethodBeamType::from_music21_namemethodBeams::beams_mutmethodBeams::featheredmethodBeams::fill_levelsmethodBeams::is_emptymethodBeams::lenmethodBeams::levels_formethodBeams::naivemethodBeams::set_beamsmethodBeams::set_featheredmethodJustificationenumJustification::as_strmethodLEVELSconstLyric::clear_textmethodLyric::elision_beforemethodLyric::explicit_identifiermethodLyric::explicit_syllabicmethodLyric::explicit_textmethodLyric::from_raw_textmethodLyric::is_hiddenmethodLyric::set_componentsmethodLyric::set_elision_beforemethodLyric::set_hiddenmethodLyric::set_identifiermethodLyric::set_justifymethodLyric::set_numbermethodLyric::set_placementmethodLyric::set_raw_textmethodLyric::set_syllabicmethodLyric::unsungmethodNAMESconstNoteSizeenumNoteSize::as_strmethodNoteheadenumNotehead::as_strmethodPlacementenumPlacement::as_strmethodStemDirectionenumStemDirection::as_strmethodSyllabicenumSyllabic::as_strmethodTie::set_placementmethodTie::set_stylemethodTie::set_tie_typemethodTieStyleenumTieStyle::as_strmethodTieTypeenumTieType::as_strmethod
▶stream56 members
ALLconstBarTogetherenumBarTogether::as_strmethodStaffGroup::name_hiddenmethodStaffGroup::set_abbreviationmethodStaffGroup::set_bar_togethermethodStaffGroup::set_namemethodStaffGroup::set_name_hiddenmethodStaffGroup::set_symbolmethodStream::abbreviation_hiddenmethodStream::add_spannermethodStream::add_staff_groupmethodStream::end_offsetmethodStream::endingmethodStream::events_mutmethodStream::for_each_mutmethodStream::from_eventsmethodStream::is_emptymethodStream::kindmethodStream::leavesmethodStream::lenmethodStream::measure_numberingmethodStream::metronome_mark_atmethodStream::name_hiddenmethodStream::number_hiddenmethodStream::number_suffixmethodStream::padding_leftmethodStream::padding_rightmethodStream::retain_leavesmethodStream::set_abbreviationmethodStream::set_abbreviation_hiddenmethodStream::set_endingmethodStream::set_idmethodStream::set_kindmethodStream::set_left_barlinemethodStream::set_measure_numberingmethodStream::set_metadatamethodStream::set_namemethodStream::set_name_hiddenmethodStream::set_numbermethodStream::set_number_hiddenmethodStream::set_number_suffixmethodStream::set_padding_leftmethodStream::set_padding_rightmethodStream::set_right_barlinemethodStream::staff_groupsmethodStream::streams_of_kindmethodStream::with_kindmethodStreamElementenumStreamElement::as_streammethodStreamElement::is_note_or_chordmethodStreamEventstructStreamEvent::element_mutmethodStreamEvent::end_offsetmethodStreamKindenumStreamKind::as_strmethod
▶duration55 members
ALLconstDuration::eighthmethodDuration::expression_is_inferredmethodDuration::from_typemethodDuration::halfmethodDuration::is_gracemethodDuration::quartermethodDuration::set_dot_groupsmethodDuration::set_dotsmethodDuration::set_expression_is_inferredmethodDuration::set_gracemethodDuration::set_linkedmethodDuration::set_quarter_lengthmethodDuration::set_tupletsmethodDuration::wholemethodDuration::written_valuesmethodDurationTuplestructDurationTuple::silencedmethodDurationTypeenumDurationType::from_music21_namemethodDurationType::quarter_length_with_dotsmethodGracestructGrace::appoggiaturamethodGrace::make_timemethodGrace::set_make_timemethodGrace::set_slashmethodGrace::set_steal_time_followingmethodGrace::set_steal_time_previousmethodGrace::slashmethodGrace::steal_time_followingmethodGrace::steal_time_previousmethodTuplet::actualmethodTuplet::actual_showmethodTuplet::augmentedmethodTuplet::bracketmethodTuplet::normalmethodTuplet::normal_dotsmethodTuplet::normal_duration_typemethodTuplet::normal_showmethodTuplet::ratiomethodTuplet::set_actual_showmethodTuplet::set_bracketmethodTuplet::set_duration_actualmethodTuplet::set_duration_normalmethodTuplet::set_normal_showmethodTuplet::set_placementmethodTuplet::set_tuplet_typemethodTuplet::tuplet_typemethodTuplet::with_normalmethodTupletBracketenumTupletNotationstructTupletShowenumTupletShow::as_strmethodTupletTypeenumTupletType::as_strmethod
▶expressions49 members
ALLconstArpeggioTypeenumArpeggioType::as_strmethodExpressionenumExpression::tie_attachmethodFermatastructFermata::fermata_typemethodFermata::set_fermata_typemethodFermata::set_shapemethodFermata::shapemethodFermataTypeenumFermataType::as_strmethodOrnament::appoggiatura_sizemethodOrnament::auto_scalemethodOrnament::is_amethodOrnament::kindmethodOrnament::measuredmethodOrnament::nachschlagmethodOrnament::of_kindmethodOrnament::set_accidentalmethodOrnament::set_appoggiatura_sizemethodOrnament::set_auto_scalemethodOrnament::set_delaymethodOrnament::set_lower_accidentalmethodOrnament::set_measuredmethodOrnament::set_nachschlagmethodOrnament::set_number_of_marksmethodOrnament::set_placementmethodOrnament::set_quarter_lengthmethodOrnament::set_tie_attachmethodOrnament::set_upper_accidentalmethodOrnament::tie_attachmethodOrnamentDelayenumOrnamentKindenumOrnamentKind::class_namemethodOrnamentKind::from_class_namemethodOrnamentKind::has_fixed_sizemethodOrnamentKind::parentsmethodRealization::into_notesmethodRehearsalMarkstructRehearsalMark::enclosuremethodRehearsalMark::set_contentmethodRehearsalMark::set_enclosuremethodRehearsalMark::set_placementmethodTextExpressionstructTextExpression::set_contentmethodTextExpression::set_placementmethodTurnNoteenumrealize_ornamentsfn
▶spanner48 members
LineEndenumLineEnd::as_strmethodLineEndsstructOctaveShiftstructOctaveShift::set_transposingmethodOctaveShift::transposingmethodPedalstructPedalFormenumPedalForm::as_strmethodPedalForm::has_linemethodPedalObjectstructPedalObject::kindmethodPedalObject::set_placementmethodPedalObjectKindenumPedalObjectKind::class_namemethodPedalObjectKind::from_class_namemethodPedalTypeenumPedalType::as_strmethodSlideTypeenumSlideType::as_strmethodSpanner::arpeggiomethodSpanner::arpeggio_markmethodSpanner::endsmethodSpanner::glissando_detailsmethodSpanner::is_emptymethodSpanner::kindmethodSpanner::lenmethodSpanner::pedalmethodSpanner::pedal_markmethodSpanner::set_arpeggiomethodSpanner::set_endsmethodSpanner::set_glissando_detailsmethodSpanner::set_line_typemethodSpanner::set_number_of_marksmethodSpanner::set_offsetmethodSpanner::set_pedalmethodSpanner::set_placementmethodSpanner::set_shiftmethodSpanner::set_spreadmethodSpanner::shiftmethodSpanner::slurmethodSpanner::spreadmethodSpanner::wedgemethodSpanner::with_unplacedmethodSpannerKindenumSpannerKind::class_namemethodSpannerKind::is_wedgemethodSpannerKind::numbering_classmethod
▶tuningsystem42 members
A0constA4constALL_TUNING_SYSTEMSconstAN1constAnyTuningSystemenumAnyTuningSystem::cents_atmethodAnyTuningSystem::frequency_atmethodAnyTuningSystem::is_adaptivemethodC0constC4constCN1constCOMMON_EQUAL_TEMPERAMENTSconstCOMMON_TWELVE_TONE_TUNING_SYSTEMSconstEQUAL_TEMPERAMENTconstHISTORICAL_TEMPERAMENTSconstINDIAN_SCALE_NAMESconstJAVANESEconstOCTAVE_SIZEconstQUARTER_TONEconstRatioenumRatio::monzomethodRatio::to_fractionmethodRatio::with_octavesmethodTHAIconstTuningSystemenumTuningSystem::cents_atmethodTuningSystem::degrees_per_periodmethodTuningSystem::descriptionmethodTuningSystem::display_namemethodTuningSystem::edomethodTuningSystem::exact_ratiomethodTuningSystem::frequency_atmethodTuningSystem::is_keyboardmethodTuningSystem::nearest_degreemethodTuningSystem::period_centsmethodTuningSystem::period_ofmethodTuningSystem::pitch_atmethodTuningSystem::ratiomethodTuningSystem::ratio_atmethodTuningSystem::repeats_at_the_octavemethodWHOLE_TONEconstequal_temperamentfn
▶articulations41 members
ALLconstArticulation::alternatemethodArticulation::bend_altermethodArticulation::display_textmethodArticulation::fingermethodArticulation::harmonic_typemethodArticulation::is_amethodArticulation::kindmethodArticulation::length_shiftmethodArticulation::of_kindmethodArticulation::pitch_typemethodArticulation::point_directionmethodArticulation::pre_bendmethodArticulation::releasemethodArticulation::set_alternatemethodArticulation::set_bend_altermethodArticulation::set_display_textmethodArticulation::set_fingermethodArticulation::set_harmonic_typemethodArticulation::set_length_shiftmethodArticulation::set_numbermethodArticulation::set_pitch_typemethodArticulation::set_placementmethodArticulation::set_point_directionmethodArticulation::set_pre_bendmethodArticulation::set_releasemethodArticulation::set_substitutionmethodArticulation::set_symbolmethodArticulation::set_tie_attachmethodArticulation::set_volume_shiftmethodArticulation::set_with_barmethodArticulation::substitutionmethodArticulation::tie_attachmethodArticulation::with_barmethodArticulationKindenumArticulationKind::class_namemethodArticulationKind::from_class_namemethodArticulationKind::has_fieldmethodArticulationKind::parentsmethodFingerenumFinger::from_writtenmethod
▶tempo38 members
DEFAULT_TEMPO_VALUESconstMetricModulation::arrow_directionmethodMetricModulation::classical_stylemethodMetricModulation::maintain_beatmethodMetricModulation::parenthesesmethodMetricModulation::set_arrow_directionmethodMetricModulation::set_classical_stylemethodMetricModulation::set_maintain_beatmethodMetricModulation::set_new_metronomemethodMetricModulation::set_new_referentmethodMetricModulation::set_old_metronomemethodMetricModulation::set_old_referentmethodMetricModulation::set_parenthesesmethodMetricModulation::set_placementmethodMetricModulation::set_transition_symbolmethodMetricModulation::transition_symbolmethodMetronomeMark::number_implicitmethodMetronomeMark::parenthesesmethodMetronomeMark::quarter_length_to_secondsmethodMetronomeMark::set_numbermethodMetronomeMark::set_number_implicitmethodMetronomeMark::set_number_soundingmethodMetronomeMark::set_parenthesesmethodMetronomeMark::set_placementmethodMetronomeMark::set_referentmethodMetronomeMark::sounding_quarter_bpmmethodMetronomeMark::text_implicitmethodMetronomeMark::with_number_and_textmethodMetronomeMark::with_number_soundingmethodMetronomeMark::with_referentmethodModulationSideenumTempoTextstructTempoText::is_common_tempo_textmethodTempoText::set_placementmethoddefault_number_for_textfndefault_text_for_numberfninterpolated_offsetfnis_common_tempo_textfn
▶meter37 members
BeamedNotestructBeatDivisionenumBeatDivision::countmethodTimeSignature::accent_partition_quarter_lengthmethodTimeSignature::accent_sequencemethodTimeSignature::accent_sequence_mutmethodTimeSignature::accent_weight_at_levelmethodTimeSignature::accent_weight_withmethodTimeSignature::accent_weightsmethodTimeSignature::bar_quarter_lengthmethodTimeSignature::beam_sequencemethodTimeSignature::beam_sequence_mutmethodTimeSignature::beat_divisionmethodTimeSignature::beat_division_quarter_lengthsmethodTimeSignature::beat_duration_atmethodTimeSignature::beat_quarter_lengthmethodTimeSignature::beat_sequencemethodTimeSignature::beat_sequence_mutmethodTimeSignature::commonmethodTimeSignature::cutmethodTimeSignature::display_sequencemethodTimeSignature::display_sequence_mutmethodTimeSignature::divide_beatsmethodTimeSignature::favors_compoundmethodTimeSignature::from_ratio_stringmethodTimeSignature::is_compoundmethodTimeSignature::is_hiddenmethodTimeSignature::is_restatedmethodTimeSignature::set_beat_countmethodTimeSignature::set_hiddenmethodTimeSignature::set_restatedmethodTimeSignature::set_summed_numeratormethodTimeSignature::set_symbolmethodTimeSignature::set_symbolize_denominatormethodTimeSignature::symbolize_denominatormethodpartition_namefnsnapped_fractionfn
▶instrument36 members
EACHconstInstrument::class_namemethodInstrument::familiesmethodInstrument::highestmethodInstrument::in_percussion_mapmethodInstrument::instrument_idmethodInstrument::is_amethodInstrument::kindmethodInstrument::kindsmethodInstrument::lowestmethodInstrument::midi_channelmethodInstrument::midi_programmethodInstrument::of_kindmethodInstrument::part_idmethodInstrument::set_abbreviationmethodInstrument::set_highestmethodInstrument::set_in_percussion_mapmethodInstrument::set_instrument_idmethodInstrument::set_lowestmethodInstrument::set_midi_channelmethodInstrument::set_midi_programmethodInstrument::set_modifiermethodInstrument::set_namemethodInstrument::set_part_abbreviationmethodInstrument::set_part_idmethodInstrument::set_part_namemethodInstrument::set_percussion_pitchmethodInstrument::set_soundmethodInstrument::set_string_pitchesmethodInstrument::set_transpositionmethodInstrument::soundmethodInstrument::soundingmethodInstrument::transpositionmethodInstrument::writtenmethodSearchLanguageenumSearchLanguage::as_strmethod
▶pitch29 members
Pitch::buildermethodPitch::frequency_hz_inmethodPitch::frequency_hz_tunedmethodPitch::from_frequencymethodPitch::from_frequency_inmethodPitch::from_midimethodPitch::from_name_and_octavemethodPitch::from_numbermethodPitch::from_optionsmethodPitch::from_pitch_classmethodPitch::from_pitch_spacemethodPitch::from_stepmethodPitch::fundamentalmethodPitch::pitch_spacemethodPitch::set_accidentalmethodPitch::set_accidental_altermethodPitch::set_microtone_centsmethodPitch::set_octavemethodPitch::set_octave_is_implicitmethodPitch::set_spelling_is_inferredmethodPitch::set_written_accidentalmethodPitch::spelling_is_inferredmethodPitch::written_accidentalmethodPitch::written_accidental_mutmethodPitchNameenumPitchOptionsstructPitchOptions::buildmethodPitchOptions::fundamentalmethodPitchOptions::pitch_spacemethod
▶chord28 members
Chord::emptymethodChord::found_bassmethodChord::found_rootmethodChord::guitar_fingeringmethodChord::guitar_fingering_with_tuningmethodChord::is_emptymethodChord::iter_pitchesmethodChord::lenmethodChord::note_for_pitchmethodChord::note_for_pitch_mutmethodChord::notes_mutmethodChord::numeralmethodChord::overridden_bassmethodChord::overridden_rootmethodChord::polyrhythm_componentsmethodChord::polyrhythm_ratio_stringmethodChord::remove_namedmethodChord::remove_redundant_pitch_classes_reportingmethodChord::remove_redundant_pitch_names_reportingmethodChord::remove_redundant_pitches_reportingmethodChord::set_bassmethodChord::set_durationmethodChord::set_numeralmethodChord::set_rootmethodChord::simplify_enharmonics_in_placemethodChord::with_durationmethodChord::with_numeralmethodIntoNotestrait
▶roman26 members
FUNCTIONALITY_SCORESconstFigureTuplestructImpliedQualityenumImpliedQuality::correct_semitonesmethodMinor67DefaultenumNumeralAlonestructPitchFigureTuplestructRomanNumeral::added_stepsmethodRomanNumeral::bracketed_alterationsmethodRomanNumeral::case_mattersmethodRomanNumeral::degreemethodRomanNumeral::effective_key_ofmethodRomanNumeral::figure_numbersmethodRomanNumeral::figures_notationmethodRomanNumeral::figures_writtenmethodRomanNumeral::front_alteration_stringmethodRomanNumeral::implied_qualitymethodRomanNumeral::omitted_stepsmethodRomanNumeral::over_scalemethodRomanNumeral::roman_numeral_alonemethodRomanNumeral::secondarymethodRomanNumeral::seventh_minormethodRomanNumeral::sixth_minormethodRomanNumeral::with_minor_defaultsmethodRomanNumeral::with_optionsmethodRomanNumeral::written_accidentalmethod
▶chordsymbol25 members
ChordAlterationstructChordAlteration::degreemethodChordQualityenumChordSymbol::add_chord_step_modificationmethodChordSymbol::additionsmethodChordSymbol::alterationsmethodChordSymbol::chord_step_modificationsmethodChordSymbol::extensionsmethodChordSymbol::from_kindmethodChordSymbol::is_no_chordmethodChordSymbol::kindmethodChordSymbol::kind_textmethodChordSymbol::lyrics_mutmethodChordSymbol::no_chordmethodChordSymbol::omissionsmethodChordSymbol::parse_music21methodChordSymbol::set_bassmethodChordSymbol::set_chord_step_modificationsmethodChordSymbol::set_durationmethodChordSymbol::set_kind_textmethodChordSymbol::set_placementmethodChordSymbol::set_rootmethodChordSymbol::with_durationmethodChordSymbol::with_kindmethodchord_symbol_durationsfn
▶polyrhythm22 members
PolyrhythmstructPolyrhythm::analysismethodPolyrhythm::beat_timingsmethodPolyrhythm::coincidence_ticksmethodPolyrhythm::component_intervalsmethodPolyrhythm::current_tickmethodPolyrhythm::cycle_lenmethodPolyrhythm::from_time_signaturemethodPolyrhythm::hit_eventsmethodPolyrhythm::measure_durationmethodPolyrhythm::ratio_chordmethodPolyrhythm::ratio_frequenciesmethodPolyrhythm::ratio_pitchesmethodPolyrhythm::ratio_tonesmethodPolyrhythm::resetmethodPolyrhythm::set_tempomethodPolyrhythm::tempomethodPolyrhythm::tick_durationmethodPolyrhythm::with_tempomethodPolyrhythmAnalysisstructPolyrhythmEventstructPolyrhythmRatioTonestruct
▶tree22 members
ElementTimespan::is_pitchedmethodElementTimespan::parent_end_timemethodElementTimespan::parent_offsetmethodFlattenenumHorizontality::timespansmethodTimespanTree::all_offsetsmethodTimespanTree::all_time_pointsmethodTimespanTree::highest_positionmethodTimespanTree::is_emptymethodTimespanTree::lenmethodTimespanTree::overlap_time_pointsmethodTimespanTree::overlappingmethodTimespanTree::position_aftermethodTimespanTree::position_beforemethodTimespanTree::sourcemethodTimespanTree::starting_atmethodTimespanTree::stopping_atmethodTimespanTree::timespansmethodVerticality::overlap_timespansmethodVerticality::start_timespansmethodVerticality::stop_timespansmethodVerticality::voice_leading_timespansmethod
▶tuningsystem::monzo22 members
MonzostructMonzo::exponent_ofmethodMonzo::exponentsmethodMonzo::from_fractionmethodMonzo::from_ratiomethodMonzo::inversemethodMonzo::limitmethodMonzo::multiplymethodMonzo::powmethodMonzo::pythagoreanmethodMonzo::ratiomethodMonzo::unisonmethodPRIMESconstValstructVal::divisionsmethodVal::entriesmethodVal::error_centsmethodVal::limitmethodVal::mapmethodVal::patentmethodVal::reachesmethodVal::tempers_outmethod
▶tuningsystem::scala22 members
ScalaArchivestructScalaArchive::bundledmethodScalaArchive::bundled_lenmethodScalaArchive::bundled_with_failuresmethodScalaArchive::insert_scalemethodScalaArchive::is_emptymethodScalaArchive::lenmethodScalaArchive::namesmethodScalaDegreeenumScalaDegree::as_ratiomethodScalaDegree::ratiomethodScalaDegree::writtenmethodScalaScale::cents_above_rootmethodScalaScale::degreesmethodScalaScale::descriptionmethodScalaScale::frequency_atmethodScalaScale::from_written_centsmethodScalaScale::is_emptymethodScalaScale::lenmethodScalaScale::parse_bytesmethodScalaScale::ratio_atmethodScalaScale::written_degreesmethod
▶tuningsystem::temperament22 members
TemperamentstructTemperament::equavemethodTemperament::equave_centsmethodTemperament::error_centsmethodTemperament::from_mappingmethodTemperament::from_mapping_rowsmethodTemperament::from_publishedmethodTemperament::generator_centsmethodTemperament::generator_mapmethodTemperament::mapmethodTemperament::momentsmethodTemperament::mosmethodTemperament::patternmethodTemperament::period_centsmethodTemperament::period_mapmethodTemperament::periods_per_equavemethodTemperament::primesmethodTemperament::rankmethodTemperament::repeats_at_the_octavemethodTemperament::subgroup_namemethodTemperament::tempers_outmethodcrate::tuningsystem::NamedTemperament::temperamentmethod
▶note20 members
IntoNotetraitNote::articulationsmethodNote::articulations_mutmethodNote::beams_mutmethodNote::expressionsmethodNote::expressions_mutmethodNote::from_numbermethodNote::from_pitchmethodNote::hiddenmethodNote::lyrics_mutmethodNote::set_beamsmethodNote::set_durationmethodNote::set_hiddenmethodNote::set_idmethodNote::set_lyricmethodNote::set_notehead_parenthesismethodNote::set_pitchmethodNote::set_sizemethodNote::set_stored_instrumentmethodNote::with_durationmethod
▶scale::scaletype19 members
ALLconstDegreeComparisonenumHUMDRUM_SOLFEG_SYLLABLESconstSOLFEG_SYLLABLESconstScaleTypeenumScaleType::ascending_degreesmethodScaleType::beyond_terminusmethodScaleType::derive_ranked_bymethodScaleType::descending_formmethodScaleType::descending_stepsmethodScaleType::dominant_degreemethodScaleType::from_music21_namemethodScaleType::is_cyclemethodScaleType::is_plagalmethodScaleType::music21_descriptive_namemethodScaleType::realization_stepsmethodScaleType::tonic_degreemethodSimplificationenumSolfegVariantenum
▶tuningsystem::equal18 members
EqualDivisionstructEqualDivision::approximation_ofmethodEqualDivision::cents_atmethodEqualDivision::degreesmethodEqualDivision::divisionsmethodEqualDivision::edomethodEqualDivision::error_at_centsmethodEqualDivision::mosmethodEqualDivision::nearest_degreemethodEqualDivision::of_ratiomethodEqualDivision::patent_valmethodEqualDivision::period_centsmethodEqualDivision::period_ratiomethodEqualDivision::ratio_atmethodEqualDivision::repeats_at_the_octavemethodEqualDivision::step_centsmethodEqualDivision::tritavemethodTRITAVE_CENTSconst
▶analysis17 members
ALLconstKeyEstimatestructKeyProfileenumKeyProfile::identifiersmethodKeyProfile::minor_weightsmethodKeyProfile::music21_class_namemethodestimate_key_from_chordsfnestimate_key_from_chords_withfnestimate_key_from_pitchesfnestimate_key_from_pitches_withfnestimate_key_of_streamfnmelodic_line_positionsfnmelodic_linesfnpitch_class_distributionfnstream_distributionfnstream_pitch_spanfntonal_certainty_from_scoresfn
▶percussion17 members
PercussionChord::is_emptymethodPercussionChord::is_unpitchedmethodPercussionChord::lenmethodPercussionChord::with_durationmethodPercussionChord::writtenmethodPercussionChord::written_mutmethodPercussionNoteenumUnpitchedstructUnpitched::display_namemethodUnpitched::display_octavemethodUnpitched::display_pitchmethodUnpitched::display_stepmethodUnpitched::displayed_atmethodUnpitched::from_display_namemethodUnpitched::with_durationmethodUnpitched::writtenmethodUnpitched::written_mutmethod
▶clef16 members
ALLconstClef::is_amethodClef::kindmethodClef::lowest_linemethodClef::of_kindmethodClef::places_pitchesmethodClef::set_linemethodClef::set_lowest_linemethodClef::set_octave_changemethodClef::set_signmethodClef::signmethodClef::treblemethodClefKindenumClefKind::class_namemethodClefKind::from_class_namemethodClefKind::parentsmethod
▶tuningsystem::mos16 members
MosstructMos::brightest_wordmethodMos::invertedmethodMos::largemethodMos::smallmethodMosScalestructMosScale::degreesmethodMosScale::from_equal_divisionmethodMosScale::generatormethodMosScale::is_equalmethodMosScale::is_moment_of_symmetrymethodMosScale::patternmethodMosScale::stepsmethodMosScale::wordmethodOCTAVE_CENTSconstmoment_of_symmetry_sizesfn
▶braille::lookup15 members
alphabetfnascii_charfnbefore_note_expressionfnbinary_dotsfnbowingfncellfncellsfnclef_prefixfnclef_suffixfnfermatafnfinger_markfnlength_prefixfnnaturalsfnnumber_lowerfnnumber_upperfn
▶features15 members
DataInstance::analyzed_keymethodDataInstance::parts_countmethodDataInstance::parts_soundingmethodDataInstance::preparedmethodExtractorstructExtractor::descriptionmethodExtractor::dimensionsmethodExtractor::discretemethodFeature::discretemethodFeature::valuesmethodFeature::vectormethodSecondsstructValueenumValue::as_floatmethodValue::is_integermethod
▶figuredbass15 members
EXTENDERconstFigure::has_extendermethodFigure::set_numbermethodModifier::writtenmethodNotationstructNotation::columnmethodNotation::extendersmethodNotation::figure_stringsmethodNotation::figuresmethodNotation::figures_as_writtenmethodNotation::has_extendersmethodNotation::modifier_stringsmethodNotation::modifiersmethodNotation::original_modifiersmethodNotation::original_numbersmethod
▶serial15 members
ALLconstHistoricalRowstructHistoricalRow::rowmethodIndexedTransformationtypeLinkClassificationstructToneRow::find_transformationsmethodToneRow::from_pitchesmethodToneRow::is_emptymethodToneRow::lenmethodToneRow::transformationmethodTransformationenumTransformationConventionenumTwelveToneMatrixstructTwelveToneMatrix::rowmethodTwelveToneMatrix::rowsmethod
▶interval14 members
Interval::between_notesmethodInterval::diatonic_interval_cent_shiftmethodInterval::from_chromaticmethodInterval::from_diatonicmethodInterval::from_diatonic_and_chromaticmethodInterval::from_semitonesmethodInterval::generic_numbermethodInterval::is_implicit_diatonicmethodInterval::pythagorean_monzomethodInterval::transpose_pitch_in_placemethodInterval::transpose_pitch_with_optionsmethodInterval::whole_semitonesmethodIntervalDirectionenumIntervalDirection::as_intmethod
▶rest14 members
Rest::articulationsmethodRest::articulations_mutmethodRest::expressionsmethodRest::expressions_mutmethodRest::full_measuremethodRest::hiddenmethodRest::lyrics_mutmethodRest::set_durationmethodRest::set_full_measuremethodRest::set_hiddenmethodRest::set_lyricmethodRest::set_sizemethodRest::set_step_shiftmethodRest::step_shiftmethod
▶analysis::neoriemannian13 members
ALLconstChainOrderenumHexatonicSystemenumMediantenumMediant::codemethodMediant::from_codemethodMediantSideenumRespellenumTransformenumTransform::from_symbolmethodTransform::parse_chainmethodlrp_chainfnsimpler_enharmonicsfn
▶volume13 members
DynamicContextenumVolume::from_velocitymethodVolume::from_velocity_scalarmethodVolume::has_velocity_informationmethodVolume::realized_dynamicmethodVolume::realized_withmethodVolume::realized_without_velocitymethodVolume::set_velocitymethodVolume::set_velocity_is_relativemethodVolume::set_velocity_scalarmethodVolume::velocity_is_relativemethoddynamics_in_forcefnrounded_strfn
▶metadata12 members
Metadata::add_textmethodMetadata::all_sortedmethodMetadata::first_textmethodMetadata::is_emptymethodMetadataMatchstructMetadataMatch::fieldmethodMetadataQueryenumMetadataValuestructMetadataValue::rolemethodMetadataValue::with_rolemethodOLD_MUSIC21_NAMESconstSTANDARD_PROPERTIESconst
▶meter::sequence12 members
MeterTerminal::flattenedmethodMeterTerminal::from_partition_stringmethodMeterTerminal::from_parts_givenmethodMeterTerminal::from_ratio_stringmethodMeterTerminal::is_emptymethodMeterTerminal::lenmethodMeterTerminal::partition_by_partsmethodMeterTerminal::parts_mutmethodMeterTerminal::set_summed_numeratormethodMeterTerminal::set_weightmethodMeterTerminal::subdivide_nested_hierarchy_bymethodOffsetAlignenum
▶romantext::clercq_temperley12 members
CtLabelsstructCtRulestructCtRule::expand_inmethodCtRule::measure_groupsmethodCtSongstructCtSong::linesmethodCtSong::rulemethodCtSong::to_part_withmethodGroupKindenumMeasureGroupstructfrom_clercq_temperleyfnfrom_clercq_temperley_withfn
▶braille::segment11 members
AffinityenumBrailleElementstructBrailleElementGroupingstructBrailleGrandSegment::englishmethodBrailleSegment::englishmethodHandenumNoteGroupingTranscriberstructNoteGroupingTranscriber::transcribe_groupmethodSegmentKeystructSegmentOptionsstructtranscribe_note_groupingfn
▶key::keysignature11 members
KeySignature::accidentals_apply_only_to_octavemethodKeySignature::descriptionmethodKeySignature::from_altered_pitchesmethodKeySignature::is_non_traditionalmethodKeySignature::set_accidentals_apply_only_to_octavemethodKeySignature::set_altered_pitchesmethodKeySignature::set_non_traditionalmethodKeySignature::set_sharpsmethodKeySignature::try_as_keymethodmode_sharps_alterfnpitch_name_to_sharpsfn
▶repeat11 members
ALLconstRepeatExpression::kindmethodRepeatExpression::set_placementmethodRepeatExpression::set_use_symbolmethodRepeatExpression::use_symbolmethodRepeatExpression::with_textmethodRepeatExpressionKindenumRepeatExpressionKind::class_namemethodRepeatExpressionKind::from_class_namemethodRepeatExpressionKind::has_symbolmethodRepeatExpressionKind::text_alternativesmethod
▶voiceleading11 members
MotionTypeenumMotionType::as_strmethodParallelRequirementenumQuartetOptionsstructVoiceLeadingQuartet::from_namesmethodVoiceLeadingQuartet::horizontal_intervalsmethodVoiceLeadingQuartet::set_keymethodVoiceLeadingQuartet::vertical_intervalsmethodVoiceLeadingQuartet::with_keymethodverticality_positions_atfnvoice_leading_quartet_positionsfn
▶omr::correctors10 members
MeasureRelationshipstructPROBABILITY_ON_ADDITIONconstPROBABILITY_ON_EQUALITYconstPROBABILITY_ON_OMISSIONconstPriorsIntegrationScorestructScoreCorrector::into_scoremethodScoreCorrector::single_partsmethodSinglePart::incorrect_measuresmethodSinglePart::index_arraymethodSinglePart::part_numbermethod
▶sieve10 members
Sieve::containsmethodSieve::from_segmentmethodSieve::intersectionmethodSieve::interval_widthsmethodSieve::segment_binarymethodSieve::segment_unitmethodSieve::segment_widthsmethodSieve::shiftedmethodSieve::symmetric_differencemethodSieve::unionmethod
▶analysis::reduction9 members
PartActivitystructPartGroupstructReductiveNote::measure_indexmethodReductiveNote::measure_offsetmethodReductiveNote::parametersmethodReductiveParametersstructScoreReduction::set_chord_reductionmethodScoreReduction::set_scoremethodWeightedSpanstruct
▶bar9 members
ALLconstBarline::set_bar_typemethodBarlineTypeenumBarlineType::as_strmethodEnding::number_textmethodEnding::startsmethodEnding::stopsmethodRepeatDirectionenumRepeatDirection::as_strmethod
▶figuredbass::realizer9 members
FiguredBassLine::add_chordmethodFiguredBassLine::in_keymethodFiguredBassLine::in_key_and_timemethodFiguredBassLine::is_emptymethodFiguredBassLine::lenmethodRealization::fallbacksmethodRealization::keyboard_style_outputmethodRealization::ofmethodRealization::set_keyboard_style_outputmethod
▶key9 members
Key::derive_by_degree_ofmethodKey::from_tonicmethodKey::from_tonic_modemethodKey::harmonized_seventhsmethodKey::harmonized_triadsmethodKey::modemethodKey::seventh_chord_from_degreemethodKey::tonic_pitchmethodKey::triad_from_degreemethod
▶figuredbass::segment8 members
ConsecutivestructPossibilitytypePossibilityPairtypeSegment::from_pitch_namesmethodSegment::max_pitchmethodSegment::num_partsmethodSegment::overlaidmethodSegment::pitches_above_bassmethod
▶midi8 members
DEFAULT_TICKS_PER_QUARTERconstMidiNotestructMidiNote::with_channelmethodmidi_notes_from_streamfnread_midi_bytesfnread_midi_bytes_with_tempofnstream_from_midi_notesfnwrite_midi_bytesfn
▶romantext::tsv8 members
DirectionenumTabChordstructVersionenumVersion::columnsmethodVersion::from_numbermethodVersion::read_columnsmethodfigured_bass_offnto_tsv_with_extrafn
▶variant8 members
LengthTypeenumLengthType::as_strmethodVariant::contentsmethodVariant::contents_mutmethodVariant::from_streammethodVariant::groups_mutmethodVariant::namedmethodVariant::set_replacement_quarter_lengthmethod
▶analysis::enharmonics7 members
CHORDALconstEnharmonicRulesstructEnharmonicRules::alteration_penaltymethodEnharmonicRules::aug_dim_penaltymethodEnharmonicRules::mixture_penaltymethodMELODICconstbest_choicefn
▶dynamics7 members
Dynamic::english_namemethodDynamic::from_scalarmethodDynamic::long_namemethodDynamic::set_placementmethodDynamic::set_valuemethodDynamic::set_volume_scalarmethodSHORT_NAMESconst
▶humdrum::harm7 members
HarmstructHarm::alternativemethodHarm::attributemethodHarm::impliedmethodHarm::intervalsmethodHarm::roman_figuremethodHarm::secondarymethod
▶style7 members
StyleValueenumStyleValue::readmethodTextStyle::set_align_horizontalmethodTextStyle::set_align_verticalmethodTextStyle::set_font_stylemethodTextStyle::set_font_weightmethodTextStyle::set_justifymethod
▶abc6 members
abc_chordfnabc_durationfnabc_notefnabc_restfnpitch_name_from_abc_notefnpitch_names_from_abc_chordfn
▶chord::guitar6 members
GuitarFingeringstructGuitarStringFingeringstructGuitarTuningstructGuitarTuning::standardmethodGuitarTuning::stringsmethodGuitarTuningStringstruct
▶musicxml6 members
CSS_COLORSconstDIVISIONS_PER_QUARTERconstExportOptionsstructMUSICXML_VERSIONconstcss_color_hexfnto_musicxmlfn
▶analysis::harmonic_function5 members
ALLconstFunctionDetailenumHarmonicFunctionenumHarmonicFunction::from_symbolmethodHarmonicFunction::main_functionmethod
▶figuredbass::resolution5 members
AugmentedSixthenumAugmentedSixth::from_numbermethodAugmentedSixth::ofmethodChordInfostructChordInfo::ofmethod
▶layout5 members
LayoutenumLayout::class_namemethodStaffTypeenumStaffType::as_strmethodTenthsenum
▶scale::hexatonicblues5 members
ALLconstBluesFormenumWeightedHexatonicBluesstructWeightedHexatonicBlues::form_for_seedmethodWeightedHexatonicBlues::samplemethod
▶scale::stepscale5 members
StepScalestructStepScale::cyclical_ofmethodStepScale::octave_repeating_ofmethodStepScale::sieve_bymethodStepScale::stepsmethod
▶tuningsystem::adaptive5 members
AdaptiveTuningSystemenumAdaptiveTuningSystem::cents_atmethodAdaptiveTuningSystem::cents_vs_fixed_atmethodAdaptiveTuningSystem::frequency_atmethodRECURSIVE_JIconst
▶tuningsystem::tuning5 members
JuststructReferencestructReference::a440methodReference::hertzmethodTuningtrait
▶alpha::analysis::fixer4 members
OrnamentFixer::fixedmethodOrnamentFixer::trillsmethodOrnamentFixer::turnsmethodRecognizerenum
▶alpha::analysis::search4 members
PitchAttributeenumRunDirectionenumScaleRunstructScaleRunOptionsstruct
▶analysis::windowed4 members
WindowStepenumWindowTypeenumWindowedAnalysis::minimum_windowsmethodWindowedAnalysis::window_countmethod
▶figuredbass::possibility4 members
DEFAULT_MAX_PITCHconstItalianSixthstructItalianSixth::from_chordmethodItalianSixth::ofmethod
▶makenotation4 members
QUANTIZATION_DIVISORSconstmake_measures_byfnop_fracfnset_stem_direction_for_beam_groupsfn
▶volpiano4 members
BreakenumBreak::class_namemethodfrom_volpianofnto_volpianofn
▶alpha::analysis::aligner3 members
ChangestructChangeOpenumStreamAligner::with_hashermethod
▶alpha::analysis::hasher3 members
HashReferencestructHashValueenumNoteHashstruct
▶audiosearch3 members
AUDIO_CHUNK_LENGTHconstRECORD_SAMPLE_RATEconstmonophonic_stream_from_wavfn
▶braille::basic3 members
NoteContextstructTranscriptionstructtempo_to_braillefn
▶braille::text3 members
BrailleText::add_measure_number_valuemethodBrailleText::current_linemethodBrailleText::rendermethod
▶features::language3 members
LANGUAGE_CODESconstTrigram::distancemethodlanguage_namefn
▶figuredbass::scale3 members
ALLconstFiguredBassModeenumFiguredBassScale::modemethod
▶error2 members
ErrorenumResulttype
▶features::jsymbolic2 members
JSYMBOLICconstextractorfn
▶features::native2 members
NATIVEconstextractorfn
▶lily2 members
LilyOptionsstructto_lilypondfn
▶omr::evaluators2 members
EvaluationstructOmrGroundTruthPair::omr_mutmethod
▶romantext2 members
from_roman_textfnto_roman_textfn
▶analysis::correlate1 member
pitch_to_dynamic_countsfn
▶analysis::floating_key1 member
KeyAnalyzer::measure_countmethod
▶analysis::metrical1 member
beat_depthsfn
▶braille::translate1 member
BrailleOptionsstruct
▶capella1 member
from_capellafn
▶chord::tables1 member
read_addressfn
▶figuredbass::rules1 member
Rulesstruct
▶humdrum1 member
from_humdrumfn
▶mei1 member
from_meifn
▶musedata1 member
from_musedatafn
▶noteworthy1 member
from_noteworthyfn
▶text1 member
ARTICLESconst
▶tinynotation1 member
from_tiny_notationfn
Counts are read out of the crate's own tables, so the report fails when one it names has gone. The list of members is derived: every public member of the crate, less every name music21 uses. It is bounded by what the map enumerates, so a member of a music21 class the map does not carry can appear here.