Reports
Test coverage
of music21-rs, across every suite below
Every suite above is run instrumented and the profiles merged, except those going through the installed wheel. Generated tables and the tooling crates are excluded. Read it file by file.
music21-rs's own tests
115 failing, 5231 passing
| Suite | Result | Passed | Failed | Command |
|---|---|---|---|---|
| Workspace | passed | 709 | 0 | cargo test --workspace --all-targets |
| Workspace doctests | passed | 21 | 0 | cargo test --workspace --doc |
| Python parity and music21's doctests | passed | 49 | 0 | cargo test --manifest-path python-parity/Cargo.toml -- --test-threads=1 |
Python wheelmusic21_rs-0.5.0-cp313-cp313-manylinux_2_34_x86_64.whl |
passed | — | — | maturin build --release --manifest-path python/Cargo.toml |
| Python wheel tests | passed | 41 | 0 | python -m pytest python/tests |
music21's own test suiteRun twice, once on music21 and once on the crate, and diffed: music21's own suite fails a number of its own tests in any environment, so what counts is that the two sets match.114 of these fail on music21 itself; 0 fail only under music21_rs |
passed | 4411 | 115 | cargo run --release -p xtask --features python -- music21-suite |
A suite whose tooling is not installed is skipped, with the reason, rather than failed.
Speedups over music21
12.6× median across 21 cases
| Case | music21 | crate | wheel | Speedup |
|---|---|---|---|---|
| construction | ||||
| Pitch('C#4') | 2.8 µs | 453 ns | 764 ns | 3.7× |
| Note('C#4') | 8.1 µs | 459 ns | 1.2 µs | 7.0× |
| Interval('P5') | 14.9 µs | 481 ns | 957 ns | 15.6× |
| Chord('C4 E4 G4') | 31.6 µs | 1.4 µs | 6.2 µs | 5.1× |
| chord analysis | ||||
| Chord.commonName5 chords | 1.0 ms | 25.4 µs | 49.4 µs | 20.5× |
| Chord.root()5 chords | 244.6 µs | 11.3 µs | 38.2 µs | 6.4× |
| Chord.inversion()5 chords | 396.3 µs | 10.4 µs | 36.8 µs | 10.8× |
| Chord.forteClass5 chords | 486.8 µs | 12.3 µs | 37.4 µs | 13.0× |
| Chord.primeForm5 chords | 487.8 µs | 13.4 µs | 38.0 µs | 12.8× |
| Chord.intervalVector5 chords | 491.7 µs | 13.5 µs | 37.6 µs | 13.1× |
| Chord.isDominantSeventh()5 chords | 506.4 µs | 15.3 µs | 40.1 µs | 12.6× |
| Chord.orderedPitchClasses5 chords | 226.0 µs | 11.0 µs | 35.2 µs | 6.4× |
| Chord: forteClass + primeForm + intervalVectorone chord, three questions | 110.6 µs | 4.4 µs | 9.9 µs | 11.1× |
| pitch | ||||
| Pitch.transpose('M3') | 63.2 µs | 1.2 µs | 1.9 µs | 33.9× |
| Pitch.frequency | 2.3 µs | 532 ns | 1.0 µs | 2.2× |
| Pitch.getEnharmonic() | 54.0 µs | 694 ns | 1.2 µs | 43.6× |
| Interval(p1, p2) | 20.8 µs | 852 ns | 2.6 µs | 7.9× |
| serial | ||||
| pcToToneRow(...).matrix() | 5.6 ms | 9.2 µs | 10.0 µs | 563.8× |
| ToneRow.zeroCenteredTransformation | 591.7 µs | 678 ns | 756 ns | 783.0× |
| warm object | ||||
| Chord.commonName (cached)music21 memoizes | 118 ns | — | 67 ns | 1.8× |
| Chord.forteClass (cached)music21 memoizes | 2.1 µs | — | 70 ns | 30.1× |
music21 11.0.0b9, Python 3.13.15 (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 and what the speedup is taken from; crate is the same operation in Rust with no Python in the way, so the gap between them is what the binding costs. Each case builds a fresh object, except those marked cached.
3305 of music21's own tests, timed on every side101s on music21, 90s on music21-rs, 91s on music21-rs-wheel; music21-rs median 1.01×, music21-rs-wheel median 1.01×
| Test | music21 | music21-rs | music21-rs-wheel | music21-rs × | music21-rs-wheel × |
|---|---|---|---|---|---|
| furthest ahead | |||||
fromIntervalVector (music21.chord) | 84 ms | 3 ms | 3 ms | 26.98× | 27.42× |
testMelodicMinorB (music21.scale.test_scale_main.Test.testMelodicMinorB) | 74 ms | 3 ms | 3 ms | 23.12× | 23.44× |
fromForteClass (music21.chord) | 52 ms | 2 ms | 2 ms | 22.55× | 22.84× |
testRagMarwaC (music21.scale.test_scale_main.Test.testRagMarwaC) | 49 ms | 3 ms | 3 ms | 18.73× | 18.90× |
figureTuples (music21.roman) | 32 ms | 2 ms | 2 ms | 16.85× | 16.64× |
romanNumeralFromChord (music21.roman) | 263 ms | 16 ms | 16 ms | 16.38× | 16.12× |
testImportMei3 (music21.converter.subConverters.Test.testImportMei3) | 22 ms | 1 ms | 1 ms | 15.93× | 15.75× |
_postFigureFromChordAndKey (music21.roman) | 32 ms | 2 ms | 2 ms | 15.89× | 15.93× |
testKeyAnalysisSpelling (music21.analysis.discrete.Test.testKeyAnalysisSpelling) | 37 ms | 2 ms | 2 ms | 15.58× | 16.29× |
testRagMarwaB (music21.scale.test_scale_main.Test.testRagMarwaB) | 24 ms | 2 ms | 2 ms | 14.34× | 14.75× |
TranspositionChecker (music21.analysis.transposition) | 51 ms | 4 ms | 4 ms | 13.31× | 12.90× |
fromPitchAndReference (music21.roman.FigureTuple) | 22 ms | 2 ms | 2 ms | 13.28× | 13.64× |
| furthest behind | |||||
testARFFNumericClassValues (music21.features.outputFormats.Test.testARFFNumericClassValues) | 18 ms | 129 ms | 119 ms | 0.14× | 0.15× |
testPartitionByInstrumentB (music21.instrument.Test.testPartitionByInstrumentB) | 3 ms | 13 ms | 11 ms | 0.21× | 0.25× |
testCoreIntegration5 (music21.mei.test_base.Test.testCoreIntegration5) | 1 ms | 7 ms | 8 ms | 0.21× | 0.18× |
testGetIntervalList (music21.analysis.segmentByRests.Test.testGetIntervalList) | 3 ms | 10 ms | 12 ms | 0.31× | 0.26× |
testExplicitNaturalDisplayStatusNone (music21.test.test_pitch.Test.testExplicitNaturalDisplayStatusNone) | 3 ms | 7 ms | 3 ms | 0.39× | 0.97× |
testMakeBeamsOnEmptyChord (music21.stream.makeNotation.Test.testMakeBeamsOnEmptyChord) | 4 ms | 8 ms | 3 ms | 0.44× | 1.11× |
quarterConversion (music21.duration) | 16 ms | 36 ms | 36 ms | 0.45× | 0.46× |
testUnit3AddSlurs (music21.mei.test_base.Test.testUnit3AddSlurs) | 4 ms | 7 ms | 7 ms | 0.57× | 0.51× |
testGetTimeSignatures (music21.stream.tests.Test.testGetTimeSignatures) | 8 ms | 14 ms | 14 ms | 0.60× | 0.56× |
test_example07_5a (music21.braille.test.Test.test_example07_5a) | 6 ms | 11 ms | 12 ms | 0.60× | 0.53× |
testConversionMusedata (music21.converter.Test.testConversionMusedata) | 11 ms | 18 ms | 19 ms | 0.61× | 0.58× |
testMakeAccidentalsD (music21.stream.tests.Test.testMakeAccidentalsD) | 1 ms | 2 ms | 2 ms | 0.61× | 0.62× |
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 columns is the packaging rather than the code. All 3305 tests, side by side →
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. 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 |
651 public members the map matches to nothing in music2137 fn, 501 method, 37 struct, 32 enum, 2 trait, 3 type, 39 const, across 39 modules
notation62 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::set_beamsmethodBeams::set_featheredmethodLEVELSconstLyric::clear_textmethodLyric::elision_beforemethodLyric::explicit_identifiermethodLyric::explicit_syllabicmethodLyric::explicit_textmethodLyric::from_raw_textmethodLyric::set_componentsmethodLyric::set_elision_beforemethodLyric::set_identifiermethodLyric::set_numbermethodLyric::set_raw_textmethodLyric::set_syllabicmethodLyric::set_textmethodLyric::unsungmethodNAMESconstNoteheadenumNotehead::as_strmethodNotehead::from_namemethodPlacementenumPlacement::as_strmethodPlacement::from_namemethodStemDirectionenumStemDirection::as_strmethodStemDirection::from_namemethodSyllabicenumSyllabic::as_strmethodSyllabic::from_namemethodTiestructTie::from_namemethodTie::placementmethodTie::set_placementmethodTie::set_stylemethodTie::set_tie_typemethodTie::stylemethodTie::tie_typemethodTieStyleenumTieStyle::as_strmethodTieStyle::from_namemethodTieTypeenumTieType::as_strmethodTieType::from_namemethod
tuningsystem49 members
A0constA4constALL_TUNING_SYSTEMSconstAN1constAnyTuningSystemenumAnyTuningSystem::cents_atmethodAnyTuningSystem::frequency_atmethodAnyTuningSystem::is_adaptivemethodC0constC4constCN1constCOMMON_EQUAL_TEMPERAMENTSconstCOMMON_TWELVE_TONE_TUNING_SYSTEMSconstFORTYTHREE_TONEconstFractionstructFraction::basemethodFraction::labelmethodFraction::new_with_basemethodFraction::ratiomethodFraction::with_octavesmethodHISTORICAL_TEMPERAMENTSconstINDIAN_SCALE_NAMESconstJAVANESEconstOCTAVE_SIZEconstTHAIconstTWELVE_TONE_NAMESconstTWELVE_TONE_NAMES_FLATconstTWELVE_TONE_NAMES_SHARPconstTuningSystemenumTuningSystem::cents_atmethodTuningSystem::descriptionmethodTuningSystem::display_namemethodTuningSystem::fractionmethodTuningSystem::frequency_atmethodTuningSystem::idmethodTuningSystem::labelmethodTuningSystem::octave_sizemethodTuningSystem::ratiomethodWHOLE_TONE_NAMESconstequal_temperamentfnequal_temperament_12fnequal_temperament_defaultfnget_centsfnget_cents_atfnget_fractionfnget_frequencyfnget_frequency_atfnget_labelfnget_ratiofn
stream33 members
ALLconstStreamstructStream::end_offsetmethodStream::eventsmethodStream::events_mutmethodStream::flattenmethodStream::from_eventsmethodStream::insertmethodStream::is_emptymethodStream::itermethodStream::key_signature_atmethodStream::kindmethodStream::lenmethodStream::measuresmethodStream::metronome_mark_atmethodStream::partsmethodStream::pushmethodStream::recursemethodStream::set_kindmethodStream::streams_of_kindmethodStream::time_signature_atmethodStream::voicesmethodStream::with_kindmethodStreamElementenumStreamElement::as_streammethodStreamElement::is_note_or_chordmethodStreamEventstructStreamEvent::elementmethodStreamEvent::element_mutmethodStreamEvent::end_offsetmethodStreamEvent::offsetmethodStreamKindenumStreamKind::as_strmethod
meter::sequence30 members
MeterTerminalstructMeterTerminal::depthmethodMeterTerminal::division_optionsmethodMeterTerminal::flattenedmethodMeterTerminal::from_ratio_stringmethodMeterTerminal::is_emptymethodMeterTerminal::is_uniform_partitionmethodMeterTerminal::lenmethodMeterTerminal::levelmethodMeterTerminal::level_listmethodMeterTerminal::level_spanmethodMeterTerminal::offset_to_depthmethodMeterTerminal::offset_to_indexmethodMeterTerminal::offset_to_spanmethodMeterTerminal::offset_to_weightmethodMeterTerminal::partition_by_countmethodMeterTerminal::partition_by_listmethodMeterTerminal::partition_by_partsmethodMeterTerminal::partition_displaymethodMeterTerminal::partition_stringmethodMeterTerminal::partsmethodMeterTerminal::parts_mutmethodMeterTerminal::set_weightmethodMeterTerminal::set_weights_at_levelmethodMeterTerminal::subdividemethodMeterTerminal::subdivide_by_countmethodMeterTerminal::subdivide_by_listmethodMeterTerminal::subdivide_partitions_equalmethodMeterTerminal::weightmethodOffsetAlignenum
meter29 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::partsmethodTimeSignature::set_beat_countmethodsnapped_fractionfn
pitch28 members
Pitch::buildermethodPitch::explicit_accidentalmethodPitch::explicit_accidental_mutmethodPitch::frequency_hz_inmethodPitch::from_frequencymethodPitch::from_midimethodPitch::from_namemethodPitch::from_name_and_octavemethodPitch::from_numbermethodPitch::from_optionsmethodPitch::from_pitch_classmethodPitch::from_pitch_spacemethodPitch::from_stepmethodPitch::fundamentalmethodPitch::has_accidentalmethodPitch::pitch_spacemethodPitch::set_accidentalmethodPitch::set_accidental_altermethodPitch::set_microtone_centsmethodPitch::set_octavemethodPitch::set_octave_is_implicitmethodPitch::set_spelling_is_inferredmethodPitch::spelling_is_inferredmethodPitchNameenumPitchOptionsstructPitchOptions::buildmethodPitchOptions::fundamentalmethodPitchOptions::pitch_spacemethod
chord26 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::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_inversionmethodChord::set_rootmethodChord::simplify_enharmonics_in_placemethodChord::with_durationmethodIntoNotestrait
roman26 members
FUNCTIONALITY_SCORESconstFigureTuplestructImpliedQualityenumImpliedQuality::correct_semitonesmethodImpliedQuality::from_namemethodMinor67DefaultenumNumeralAlonestructPitchFigureTuplestructRomanNumeral::added_stepsmethodRomanNumeral::bracketed_alterationsmethodRomanNumeral::case_mattersmethodRomanNumeral::degreemethodRomanNumeral::effective_key_ofmethodRomanNumeral::figure_numbersmethodRomanNumeral::figures_notationmethodRomanNumeral::figures_writtenmethodRomanNumeral::implied_qualitymethodRomanNumeral::omitted_stepsmethodRomanNumeral::over_scalemethodRomanNumeral::roman_numeral_alonemethodRomanNumeral::secondarymethodRomanNumeral::seventh_minormethodRomanNumeral::sixth_minormethodRomanNumeral::with_minor_defaultsmethodRomanNumeral::with_optionsmethodRomanNumeral::written_accidentalmethod
polyrhythm24 members
PolyrhythmstructPolyrhythm::analysismethodPolyrhythm::beat_timingsmethodPolyrhythm::coincidence_ticksmethodPolyrhythm::component_intervalsmethodPolyrhythm::current_tickmethodPolyrhythm::cycle_lenmethodPolyrhythm::eventsmethodPolyrhythm::from_time_signaturemethodPolyrhythm::hit_eventsmethodPolyrhythm::measure_durationmethodPolyrhythm::ratio_chordmethodPolyrhythm::ratio_pitchesmethodPolyrhythm::ratio_tonesmethodPolyrhythm::resetmethodPolyrhythm::set_tempomethodPolyrhythm::tempomethodPolyrhythm::tick_durationmethodPolyrhythm::to_chordmethodPolyrhythm::to_polypitchmethodPolyrhythm::with_tempomethodPolyrhythmAnalysisstructPolyrhythmEventstructPolyrhythmRatioTonestruct
tuningsystem::scala24 members
ScalaArchivestructScalaArchive::bundledmethodScalaArchive::bundled_lenmethodScalaArchive::bundled_with_failuresmethodScalaArchive::getmethodScalaArchive::insertmethodScalaArchive::insert_scalemethodScalaArchive::is_emptymethodScalaArchive::itermethodScalaArchive::lenmethodScalaArchive::namesmethodScalaArchive::searchmethodScalaDegreeenumScalaDegree::as_fractionmethodScalaDegree::ratiomethodScalaScale::cents_above_rootmethodScalaScale::degreesmethodScalaScale::descriptionmethodScalaScale::frequency_atmethodScalaScale::is_emptymethodScalaScale::lenmethodScalaScale::parsemethodScalaScale::parse_bytesmethodScalaScale::ratio_atmethod
harte22 members
HartestructHarte::bass_degreemethodHarte::bass_is_rootmethodHarte::contains_shorthandmethodHarte::degreesmethodHarte::into_chordmethodHarte::is_emptymethodHarte::labelmethodHarte::midi_pitchesmethodHarte::multi_hot_encodingmethodHarte::prettifymethodHarte::root_namemethodHarte::shorthandmethodHarte::sounding_degreesmethodHarte::unwrap_shorthandmethodHarteIntervalstructHarteInterval::writtenmethodSHORTHAND_DEGREESconstShorthandtypeconvert_intervalfndegree_sort_keyfnshorthand_degreesfn
tuningsystem::monzo22 members
MonzostructMonzo::dividemethodMonzo::exponent_ofmethodMonzo::exponentsmethodMonzo::from_fractionmethodMonzo::from_ratiomethodMonzo::inversemethodMonzo::limitmethodMonzo::multiplymethodMonzo::powmethodMonzo::ratiomethodMonzo::unisonmethodPRIMESconstValstructVal::divisionsmethodVal::entriesmethodVal::error_centsmethodVal::limitmethodVal::mapmethodVal::patentmethodVal::reachesmethodVal::tempers_outmethod
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
serial18 members
ALLconstHistoricalRowstructHistoricalRow::rowmethodIndexedTransformationtypeLinkClassificationstructToneRow::find_transformationsmethodToneRow::from_pitchesmethodToneRow::is_emptymethodToneRow::lenmethodToneRow::transformationmethodTransformationenumTransformation::from_namemethodTransformation::labelmethodTransformationConventionenumTransformationConvention::from_namemethodTwelveToneMatrixstructTwelveToneMatrix::rowmethodTwelveToneMatrix::rowsmethod
scale::scaletype17 members
ALLconstDegreeComparisonenumHUMDRUM_SOLFEG_SYLLABLESconstSOLFEG_SYLLABLESconstScaleTypeenumScaleType::ascending_degreesmethodScaleType::beyond_terminusmethodScaleType::derive_ranked_bymethodScaleType::descending_formmethodScaleType::descending_stepsmethodScaleType::dominant_degreemethodScaleType::from_music21_namemethodScaleType::is_plagalmethodScaleType::music21_descriptive_namemethodScaleType::realization_stepsmethodScaleType::tonic_degreemethodSolfegVariantenum
tuningsystem::equal17 members
EqualDivisionstructEqualDivision::approximation_ofmethodEqualDivision::cents_atmethodEqualDivision::degreesmethodEqualDivision::divisionsmethodEqualDivision::error_at_centsmethodEqualDivision::mosmethodEqualDivision::nearest_degreemethodEqualDivision::of_ratiomethodEqualDivision::patent_valmethodEqualDivision::period_centsmethodEqualDivision::period_ratiomethodEqualDivision::ratio_atmethodEqualDivision::repeats_at_the_octavemethodEqualDivision::step_centsmethodEqualDivision::tritavemethodTRITAVE_CENTSconst
duration16 members
ALLconstDuration::eighthmethodDuration::from_typemethodDuration::halfmethodDuration::quartermethodDuration::set_quarter_lengthmethodDuration::set_tupletsmethodDuration::wholemethodDurationTypeenumDurationType::from_music21_namemethodDurationType::quarter_length_with_dotsmethodTuplet::actualmethodTuplet::normalmethodTuplet::normal_dotsmethodTuplet::normal_duration_typemethodTuplet::with_normalmethod
figuredbass16 members
EXTENDERconstFigure::has_extendermethodFigure::set_numbermethodModifier::writtenmethodNotationstructNotation::columnmethodNotation::extendersmethodNotation::figure_stringsmethodNotation::figuresmethodNotation::figures_as_writtenmethodNotation::has_extendersmethodNotation::modifier_stringsmethodNotation::modifiersmethodNotation::original_modifiersmethodNotation::original_numbersmethodNotation::parsemethod
tempo16 members
DEFAULT_TEMPO_VALUESconstMetronomeMark::from_textmethodMetronomeMark::number_implicitmethodMetronomeMark::quarter_length_to_secondsmethodMetronomeMark::set_numbermethodMetronomeMark::set_number_implicitmethodMetronomeMark::set_number_soundingmethodMetronomeMark::set_referentmethodMetronomeMark::set_textmethodMetronomeMark::sounding_quarter_bpmmethodMetronomeMark::text_implicitmethodMetronomeMark::with_number_and_textmethodMetronomeMark::with_number_soundingmethodMetronomeMark::with_referentmethoddefault_number_for_textfndefault_text_for_numberfn
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
interval15 members
Interval::between_notesmethodInterval::diatonic_interval_cent_shiftmethodInterval::from_chromaticmethodInterval::from_diatonicmethodInterval::from_diatonic_and_chromaticmethodInterval::from_namemethodInterval::from_semitonesmethodInterval::generic_numbermethodInterval::is_implicit_diatonicmethodInterval::short_namemethodInterval::transpose_pitch_in_placemethodInterval::transpose_pitch_with_optionsmethodInterval::whole_semitonesmethodIntervalDirectionenumIntervalDirection::as_intmethod
note13 members
IntoNotetraitNote::beams_mutmethodNote::from_namemethodNote::from_numbermethodNote::from_pitchmethodNote::lyricsmethodNote::lyrics_mutmethodNote::set_beamsmethodNote::set_durationmethodNote::set_lyricmethodNote::set_notehead_parenthesismethodNote::set_pitchmethodNote::with_durationmethod
analysis12 members
ALLconstKeyEstimatestructKeyEstimate::scoremethodKeyProfileenumKeyProfile::major_weightsmethodKeyProfile::minor_weightsmethodKeyProfile::music21_class_namemethodestimate_key_from_chordsfnestimate_key_from_chords_withfnestimate_key_from_pitchesfnestimate_key_from_pitches_withfntonal_certainty_from_scoresfn
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
chordsymbol10 members
ChordAlterationstructChordAlteration::degreemethodChordQualityenumChordSymbol::additionsmethodChordSymbol::alterationsmethodChordSymbol::extensionsmethodChordSymbol::kindmethodChordSymbol::omissionsmethodChordSymbol::parsemethodChordSymbol::to_chordmethod
key10 members
Key::as_scalemethodKey::derive_by_degree_ofmethodKey::from_tonicmethodKey::from_tonic_modemethodKey::harmonized_seventhsmethodKey::harmonized_triadsmethodKey::modemethodKey::seventh_chord_from_degreemethodKey::tonic_pitchmethodKey::triad_from_degreemethod
sieve10 members
Sieve::containsmethodSieve::intersectionmethodSieve::interval_widthsmethodSieve::parsemethodSieve::segment_binarymethodSieve::segment_unitmethodSieve::segment_widthsmethodSieve::shiftedmethodSieve::symmetric_differencemethodSieve::unionmethod
volume10 members
Volume::from_velocitymethodVolume::from_velocity_scalarmethodVolume::has_velocity_informationmethodVolume::realized_dynamicmethodVolume::realized_withmethodVolume::set_velocitymethodVolume::set_velocity_is_relativemethodVolume::set_velocity_scalarmethodVolume::velocity_is_relativemethodrounded_strfn
midi8 members
DEFAULT_TICKS_PER_QUARTERconstMidiNotestructMidiNote::with_channelmethodmidi_notes_from_streamfnread_midi_bytesfnread_midi_bytes_with_tempofnstream_from_midi_notesfnwrite_midi_bytesfn
voiceleading8 members
MotionTypeenumMotionType::as_strmethodParallelRequirementenumVoiceLeadingQuartet::from_namesmethodVoiceLeadingQuartet::horizontal_intervalsmethodVoiceLeadingQuartet::set_keymethodVoiceLeadingQuartet::vertical_intervalsmethodVoiceLeadingQuartet::with_keymethod
abc6 members
abc_chordfnabc_durationfnabc_notefnabc_restfnpitch_name_from_abc_notefnpitch_names_from_abc_chordfn
chord::guitar6 members
GuitarFingeringstructGuitarStringFingeringstructGuitarTuningstructGuitarTuning::standardmethodGuitarTuning::stringsmethodGuitarTuningStringstruct
scale::hexatonicblues5 members
ALLconstBluesFormenumWeightedHexatonicBluesstructWeightedHexatonicBlues::form_for_seedmethodWeightedHexatonicBlues::samplemethod
tuningsystem::adaptive5 members
AdaptiveTuningSystemenumAdaptiveTuningSystem::cents_atmethodAdaptiveTuningSystem::cents_vs_fixed_atmethodAdaptiveTuningSystem::frequency_atmethodRECURSIVE_JIconst
scale::diatonicscale3 members
DiatonicScale::modemethodDiatonicScale::seventh_chord_from_degreemethodDiatonicScale::triad_from_degreemethod
error2 members
ErrorenumResulttype
scale::stepscale2 members
StepScalestructStepScale::stepsmethod
chord::tables1 member
read_addressfn
rest1 member
Rest::set_durationmethod
Counts are read out of the crate's own tables, so the report fails when one it names has gone. The list below 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.
music21-rs against music21's tests
music21-rs passes 6826 of 6827 examples and 274 of 275 unit tests, across 19 modules
| Module | Docstrings | Examples | Unit tests |
|---|---|---|---|
music21.chord |
105 of 105 |
970 of 970 |
28 of 28 |
music21.pitch |
83 of 83 |
930 of 930 |
27 of 27 |
music21.interval |
107 of 107 |
771 of 771 |
13 of 13 |
music21.duration |
53 of 53 |
588 of 588 |
15 of 15 |
music21.roman |
34 of 34 |
560 of 560 |
33 of 33 |
music21.voiceLeading |
61 of 61 |
513 of 513 |
2 of 2 |
music21.meter.base |
34 of 34 |
387 of 387 |
22 of 22 |
music21.harmony |
25 of 25 |
361 of 361 |
26 of 26 |
music21.scale |
62 of 62 |
344 of 344 |
39 of 39 |
music21.note |
33 of 33 |
341 of 341 |
12 of 13 |
music21.key |
18 of 18 |
245 of 245 |
7 of 7 |
music21.tempo |
27 of 27 |
196 of 196 |
17 of 17 |
music21.serial |
22 of 22 |
149 of 149 |
6 of 6 |
music21.figuredBass.notation |
12 of 12 |
129 of 129 |
3 of 3 |
music21.beam |
13 of 13 |
112 of 112 |
2 of 2 |
music21.sieve |
24 of 25 |
106 of 107 |
8 of 8 |
music21.chord.tables |
10 of 10 |
65 of 65 |
5 of 5 |
music21.volume |
9 of 9 |
46 of 46 |
9 of 9 |
music21.tie |
2 of 2 |
13 of 13 |
0 of 0 |
| every module | 734 of 735 |
6826 of 6827 |
274 of 275 |
music21's own docstrings and unit tests, run against the crate. A docstring passes only when every one of its examples does. The unit-test column is the music21's own test suite row above, attributed per module; a test music21 itself fails counts here as not passing.
Ported from music21
617 members: 568 ported49 still to port590 in the wheel30 in the wheel only
▶Chordchord/__init__.py
95 of 9595 in the wheel
Chord analysis and the notation its notes carry. The per-note getters and setters music21 deprecated in v11 are the note's own methods here, reached through `notes_mut`.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
formatVectorString | ported | format_vector_string | yes |
add | ported | add | yes |
annotateIntervals | ported | annotate_intervals | yes |
areZRelations | ported | are_z_relations | yes |
bass | ported | bass | yes |
canBeDominantV | ported | can_be_dominant_v | yes |
canBeTonic | ported | can_be_tonic | yes |
closedPosition | ported | closed_position | yes |
containsSeventh | ported | contains_seventh | yes |
containsTriad | ported | contains_triad | yes |
geometricNormalForm | ported | geometric_normal_form | yes |
getChordStep | ported | chord_step | yes |
getColor | ported | color | yes |
getNotehead | ported | notehead | yes |
getNoteheadFill | ported | notehead_fill | yes |
getStemDirection | ported | stem_direction | yes |
getTie | ported | tie | yes |
getVolume | ported | volume | yes |
getZRelation | ported | z_relation | yes |
hasAnyEnharmonicSpelledPitches | ported | has_any_enharmonic_spelled_pitches | yes |
hasAnyRepeatedDiatonicNote | ported | has_any_repeated_diatonic_note | yes |
hasRepeatedChordStep | ported | has_repeated_chord_step | yes |
intervalFromChordStep | ported | interval_from_chord_step | yes |
inversion | ported | inversion | yes |
inversionName | ported | inversion_name | yes |
inversionText | ported | inversion_text | yes |
isAugmentedSixth | ported | is_augmented_sixth | yes |
isAugmentedTriad | ported | is_augmented_triad | yes |
isConsonant | ported | is_consonant | yes |
isDiminishedSeventh | ported | is_diminished_seventh | yes |
isSeventhOfType | ported | is_seventh_of_type | yes |
isDiminishedTriad | ported | is_diminished_triad | yes |
isDominantSeventh | ported | is_dominant_seventh | yes |
isFalseDiminishedSeventh | ported | is_false_diminished_seventh | yes |
isFrenchAugmentedSixth | ported | is_french_augmented_sixth | yes |
isGermanAugmentedSixth | ported | is_german_augmented_sixth | yes |
isHalfDiminishedSeventh | ported | is_half_diminished_seventh | yes |
isIncompleteMajorTriad | ported | is_incomplete_major_triad | yes |
isIncompleteMinorTriad | ported | is_incomplete_minor_triad | yes |
isItalianAugmentedSixth | ported | is_italian_augmented_sixth | yes |
isMajorTriad | ported | is_major_triad | yes |
isMinorTriad | ported | is_minor_triad | yes |
isTranspositionallySymmetrical | ported | is_transpositionally_symmetrical | yes |
isSeventh | ported | is_seventh | yes |
isNinth | ported | is_ninth | yes |
isSwissAugmentedSixth | ported | is_swiss_augmented_sixth | yes |
isTriad | ported | is_triad | yes |
removeRedundantPitches | ported | remove_redundant_pitches | yes |
removeRedundantPitchClasses | ported | remove_redundant_pitch_classes | yes |
removeRedundantPitchNames | ported | remove_redundant_pitch_names | yes |
root | ported | root | yes |
semiClosedPosition | ported | semi_closed_position | yes |
semitonesFromChordStep | ported | semitones_from_chord_step | yes |
setColor | ported | set_color | yes |
setNotehead | ported | set_notehead | yes |
setNoteheadFill | ported | set_notehead_fill | yes |
setStemDirection | ported | set_stem_direction | yes |
setTie | ported | set_tie | yes |
setVolume | ported | set_volume | yes |
simplifyEnharmonics | ported | simplify_enharmonics | yes |
sortAscending | ported | sort_ascending | yes |
sortChromaticAscending | ported | sort_chromatic_ascending | yes |
sortDiatonicAscending | ported | sort_diatonic_ascending | yes |
sortFrequencyAscending | ported | sort_frequency_ascending | yes |
transpose | ported | transpose | yes |
chordTablesAddress | ported | chord_tables_address_entry | yes |
commonName | ported | common_name | yes |
duration | ported | duration | yes |
fifth | ported | fifth | yes |
forteClass | ported | forte_class | yes |
forteClassNumber | ported | forte_class_number | yes |
forteClassTn | ported | forte_class_tn | yes |
forteClassTnI | ported | forte_class_tni | yes |
fullName | ported | full_name | yes |
hasZRelation | ported | has_z_relation | yes |
intervalVector | ported | interval_class_vector | yes |
intervalVectorString | ported | interval_vector_string | yes |
isPrimeFormInversion | ported | is_prime_form_inversion | yes |
multisetCardinality | ported | multiset_cardinality | yes |
notes | ported | notes | yes |
normalOrder | ported | normal_order | yes |
normalOrderString | ported | normal_order_string | yes |
orderedPitchClasses | ported | pitch_classes | yes |
orderedPitchClassesString | ported | ordered_pitch_classes_string | yes |
pitchClassCardinality | ported | pitch_class_cardinality | yes |
pitchClasses | ported | note_pitch_classes | yes |
pitchNames | ported | pitch_names | yes |
pitchedCommonName | ported | pitched_common_name | yes |
pitches | ported | pitches | yes |
primeForm | ported | prime_form | yes |
primeFormString | ported | prime_form_string | yes |
quality | ported | quality | yes |
scaleDegrees | ported | scale_degrees | yes |
seventh | ported | seventh | yes |
third | ported | third | yes |
▶Pitchpitch.py
43 of 4545 in the wheel
2 missing
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
groups | missing | stream grouping | yes |
informClient | missing | observer callback for a containing note; there is none | yes |
accidental | ported | accidental | yes |
microtone | ported | microtone | yes |
isTwelveTone | ported | is_twelve_tone | yes |
getCentShiftFromMidi | ported | cent_shift_from_midi | yes |
alter | ported | alter | yes |
convertQuarterTonesToMicrotones | ported | convert_quarter_tones_to_microtones | yes |
convertMicrotonesToQuarterTones | ported | convert_microtones_to_quarter_tones | yes |
ps | ported | ps | yes |
midi | ported | midi | yes |
name | ported | name | yes |
unicodeName | ported | unicode_name | yes |
nameWithOctave | ported | name_with_octave | yes |
unicodeNameWithOctave | ported | unicode_name_with_octave | yes |
fullName | ported | full_name | yes |
step | ported | step | yes |
pitchClass | ported | pitch_class | yes |
pitchClassString | ported | pitch_class_string | yes |
octave | ported | octave | yes |
octaveIsImplicit | ported | octave_is_implicit | yes |
implicitOctave | ported | implicit_octave | yes |
german | ported | german | yes |
italian | ported | italian | yes |
spanish | ported | spanish | yes |
french | ported | french | yes |
frequency | ported | frequency_hz | yes |
freq440 | ported | frequency_hz | yes |
getHarmonic | ported | harmonic | yes |
harmonicFromFundamental | ported | harmonic_from_fundamental | yes |
harmonicString | ported | harmonic_string | yes |
harmonicAndFundamentalFromPitch | ported | harmonic_and_fundamental_from_pitch | yes |
harmonicAndFundamentalStringFromPitch | ported | harmonic_and_fundamental_string_from_pitch | yes |
isEnharmonic | ported | is_enharmonic | yes |
getHigherEnharmonic | ported | get_higher_enharmonic | yes |
getLowerEnharmonic | ported | get_lower_enharmonic | yes |
simplifyEnharmonic | ported | simplify_enharmonic | yes |
getEnharmonic | ported | get_enharmonic | yes |
getAllCommonEnharmonics | ported | all_common_enharmonics | yes |
diatonicNoteNum | ported | diatonic_note_number | yes |
transpose | ported | transpose | yes |
transposeBelowTarget | ported | transpose_below_target | yes |
transposeAboveTarget | ported | transpose_above_target | yes |
updateAccidentalDisplay | ported | update_accidental_display | yes |
getStringHarmonic | ported | string_harmonic | yes |
▶Accidentalpitch.py
12 of 1212 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
listNames | ported | list_names | yes |
set | ported | set | yes |
isTwelveTone | ported | is_twelve_tone | yes |
setAttributeIndependently | ported | set_attribute_independently | yes |
inheritDisplay | ported | inherit_display | yes |
name | ported | name | yes |
alter | ported | alter | yes |
modifier | ported | modifier | yes |
displayType | ported | display_type | yes |
displayStatus | ported | display_status | yes |
unicode | ported | unicode | yes |
fullName | ported | full_name | yes |
▶Microtonepitch.py
3 of 33 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
alter | ported | alter | yes |
cents | ported | cents | yes |
harmonicShift | ported | harmonic_shift | yes |
▶Intervalinterval.py
29 of 2929 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
generic | ported | generic | yes |
name | ported | name | yes |
niceName | ported | name | yes |
simpleName | ported | simple_name | yes |
simpleNiceName | ported | simple_nice_name | yes |
semiSimpleName | ported | semi_simple_name | yes |
semiSimpleNiceName | ported | semi_simple_nice_name | yes |
directedName | ported | directed_name | yes |
directedNiceName | ported | directed_nice_name | yes |
directedSimpleName | ported | directed_simple_name | yes |
directedSimpleNiceName | ported | directed_simple_nice_name | yes |
semitones | ported | semitones | yes |
direction | ported | direction | yes |
specifier | ported | specifier | yes |
specificName | ported | specific_name | yes |
isDiatonicStep | ported | is_diatonic_step | yes |
isChromaticStep | ported | is_chromatic_step | yes |
isStep | ported | is_step | yes |
isSkip | ported | is_skip | yes |
isConsonant | ported | is_consonant | yes |
complement | ported | complement | yes |
intervalClass | ported | interval_class | yes |
cents | ported | cents | yes |
transposePitch | ported | transpose_pitch | yes |
reverse | ported | reversed | yes |
pitchStart | ported | pitch_start | yes |
pitchEnd | ported | pitch_end | yes |
noteStart | ported | note_start | yes |
noteEnd | ported | note_end | yes |
▶GenericIntervalinterval.py
26 of 2626 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
value | ported | value | yes |
directed | ported | directed | yes |
undirected | ported | undirected | yes |
direction | ported | direction | yes |
isSkip | ported | is_skip | yes |
isDiatonicStep | ported | is_diatonic_step | yes |
isStep | ported | is_step | yes |
isUnison | ported | is_unison | yes |
simpleUndirected | ported | simple_undirected | yes |
semiSimpleUndirected | ported | semi_simple_undirected | yes |
undirectedOctaves | ported | undirected_octaves | yes |
octaves | ported | octaves | yes |
simpleDirected | ported | simple_directed | yes |
semiSimpleDirected | ported | semi_simple_directed | yes |
perfectable | ported | is_perfectable | yes |
niceName | ported | nice_name | yes |
simpleNiceName | ported | simple_nice_name | yes |
semiSimpleNiceName | ported | semi_simple_nice_name | yes |
staffDistance | ported | staff_distance | yes |
mod7inversion | ported | mod7_inversion | yes |
mod7 | ported | mod7 | yes |
complement | ported | complement | yes |
reverse | ported | reverse | yes |
transposePitch | ported | transpose_pitch | yes |
transposePitchKeyAware | ported | transpose_pitch_key_aware | yes |
getDiatonic | ported | get_diatonic | yes |
▶DiatonicIntervalinterval.py
25 of 2525 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
name | ported | name | yes |
niceName | ported | nice_name | yes |
specificName | ported | specific_name | yes |
simpleName | ported | simple_name | yes |
simpleNiceName | ported | simple_nice_name | yes |
semiSimpleName | ported | semi_simple_name | yes |
semiSimpleNiceName | ported | semi_simple_nice_name | yes |
direction | ported | direction | yes |
directedName | ported | directed_name | yes |
directedNiceName | ported | directed_nice_name | yes |
directedSimpleName | ported | directed_simple_name | yes |
directedSimpleNiceName | ported | directed_simple_nice_name | yes |
directedSemiSimpleName | ported | directed_semi_simple_name | yes |
directedSemiSimpleNiceName | ported | directed_semi_simple_nice_name | yes |
isStep | ported | is_step | yes |
isDiatonicStep | ported | is_diatonic_step | yes |
isSkip | ported | is_skip | yes |
perfectable | ported | is_perfectable | yes |
mod7inversion | ported | mod7_inversion | yes |
mod7 | ported | mod7 | yes |
reverse | ported | reverse | yes |
getChromatic | ported | get_chromatic | yes |
transposePitch | ported | transpose_pitch | yes |
specifierAbbreviation | ported | specifier_abbreviation | yes |
cents | ported | cents | yes |
▶ChromaticIntervalinterval.py
13 of 1313 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
cents | ported | cents | yes |
directed | ported | directed | yes |
undirected | ported | undirected | yes |
direction | ported | direction | yes |
mod12 | ported | mod12 | yes |
simpleUndirected | ported | simple_undirected | yes |
simpleDirected | ported | simple_directed | yes |
intervalClass | ported | interval_class | yes |
isChromaticStep | ported | is_chromatic_step | yes |
isStep | ported | is_step | yes |
reverse | ported | reverse | yes |
getDiatonic | ported | get_diatonic | yes |
transposePitch | ported | transpose_pitch | yes |
▶Specifierinterval.py
4 of 44 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
niceName | ported | nice_name | yes |
inversion | ported | inversion | yes |
semitonesAbovePerfect | ported | semitones_above_perfect | yes |
semitonesAboveMajor | ported | semitones_above_major | yes |
▶interval.py functionsinterval.py
20 of 2020 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
convertStaffDistanceToInterval | ported | staff_distance_to_generic_number | yes |
convertDiatonicNumberToStep | ported | convert_diatonic_number_to_step | yes |
parseSpecifier | ported | parse_specifier | yes |
convertGeneric | ported | convert_generic | yes |
convertSemitoneToSpecifierGenericMicrotone | ported | convert_semitone_to_specifier_generic_microtone | yes |
convertSemitoneToSpecifierGeneric | ported | convert_semitone_to_specifier_generic | yes |
intervalToPythagoreanRatio | ported | pythagorean_ratio | yes |
notesToGeneric | ported | notes_to_generic | yes |
notesToChromatic | ported | notes_to_chromatic | yes |
intervalsToDiatonic | ported | intervals_to_diatonic | yes |
intervalFromGenericAndChromatic | ported | from_generic_and_chromatic | yes |
getWrittenHigherNote | ported | written_higher_pitch | yes |
getAbsoluteHigherNote | ported | absolute_higher_pitch | yes |
getWrittenLowerNote | ported | written_lower_pitch | yes |
getAbsoluteLowerNote | ported | absolute_lower_pitch | yes |
transposePitch | ported | transpose_pitch | yes |
transposeNote | ported | transpose_note | yes |
notesToInterval | ported | between_pitches | yes |
add | ported | sum | yes |
subtract | ported | difference | yes |
▶KeySignaturekey.py
7 of 77 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
asKey | ported | as_key | yes |
alteredPitches | ported | altered_pitches | yes |
accidentalByStep | ported | accidental_by_step | yes |
transpose | ported | transpose | yes |
transposePitchFromC | ported | transpose_pitch_from_c | yes |
getScale | ported | scale | yes |
sharps | ported | sharps | yes |
▶Keykey.py
6 of 66 in the wheel
tonalCertainty belongs to a key that came out of analysis, so it lives on the ranked estimates in `analysis`.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
relative | ported | relative | yes |
parallel | ported | parallel | yes |
tonicPitchNameWithCase | ported | tonic_pitch_name_with_case | yes |
deriveByDegree | ported | derive_by_degree | yes |
tonalCertainty | ported | tonal_certainty | yes |
transpose | ported | transpose | yes |
▶ConcreteScalescale/__init__.py
23 of 2725 in the wheel
4 missing
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
isConcrete | missing | the AbstractScale layer is not modelled | yes |
abstract | missing | the AbstractScale layer is not modelled | yes |
write | missing | notation output | no |
show | missing | notation output | no |
name | ported | music21_name | yes |
getTonic | ported | tonic | yes |
getDegreeMaxUnique | ported | degree_count | yes |
transpose | ported | transpose | yes |
tune | ported | tune | yes |
romanNumeral | ported | roman_numeral | yes |
getPitches | ported | pitches | yes |
getChord | ported | chord | yes |
pitchFromDegree | ported | pitch_at_degree | yes |
pitchesFromScaleDegrees | ported | pitches_from_scale_degrees | yes |
intervalBetweenDegrees | ported | interval_between_degrees | yes |
getScaleDegreeFromPitch | ported | degree_of | yes |
getScaleDegreeAndAccidentalFromPitch | ported | degree_and_accidental_of | yes |
solfeg | ported | solfeg | yes |
nextPitch | ported | next_pitch_above | yes |
isNext | ported | is_next | yes |
match | ported | match_pitches | yes |
findMissing | ported | find_missing | yes |
deriveRanked | ported | derive_ranked | yes |
derive | ported | derive | yes |
deriveAll | ported | derive_all | yes |
deriveByDegree | ported | derive_by_degree | yes |
getScalaData | ported | scala_data | yes |
▶scale/__init__.py classesscale/__init__.py
22 of 3222 in the wheel
10 missing
The ConcreteScale subclasses, as ScaleType variants or runtime constructors.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
Scale | missing | the abstract base | yes |
AbstractScale | missing | the IntervalNetwork layer; the steps are read off it into ScaleType | yes |
AbstractDiatonicScale | missing | the IntervalNetwork layer | no |
AbstractOctatonicScale | missing | the IntervalNetwork layer | no |
AbstractHarmonicMinorScale | missing | the IntervalNetwork layer | no |
AbstractMelodicMinorScale | missing | the IntervalNetwork layer | no |
AbstractCyclicalScale | missing | the IntervalNetwork layer | no |
AbstractOctaveRepeatingScale | missing | the IntervalNetwork layer | no |
ConcreteScale | missing | realized by Scale, StepScale and ScalaScale | yes |
DiatonicScale | missing | the diatonic modes are ScaleType variants | yes |
MajorScale | ported | MajorScale | yes |
MinorScale | ported | MinorScale | yes |
DorianScale | ported | DorianScale | yes |
PhrygianScale | ported | PhrygianScale | yes |
LydianScale | ported | LydianScale | yes |
MixolydianScale | ported | MixolydianScale | yes |
HypodorianScale | ported | HypodorianScale | yes |
HypophrygianScale | ported | HypophrygianScale | yes |
HypolydianScale | ported | HypolydianScale | yes |
HypomixolydianScale | ported | HypomixolydianScale | yes |
LocrianScale | ported | LocrianScale | yes |
HypolocrianScale | ported | HypolocrianScale | yes |
HypoaeolianScale | ported | HypoaeolianScale | yes |
HarmonicMinorScale | ported | HarmonicMinorScale | yes |
MelodicMinorScale | ported | MelodicMinorScale | yes |
OctatonicScale | ported | OctatonicScale | yes |
OctaveRepeatingScale | ported | octave_repeating | no |
CyclicalScale | ported | cyclical | no |
ChromaticScale | ported | ChromaticScale | yes |
WholeToneScale | ported | WholeToneScale | yes |
SieveScale | ported | sieve | no |
ScalaScale | ported | ScalaScale | no |
▶RomanNumeralroman.py
11 of 1111 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
adjustMinorVIandVIIByQuality | ported | adjust_minor_vi_and_vii_by_quality | yes |
transpose | ported | transpose | yes |
romanNumeral | ported | roman_numeral | yes |
figure | ported | figure | yes |
figureAndKey | ported | figure_and_key | yes |
key | ported | key | yes |
scaleDegreeWithAlteration | ported | scale_degree_with_alteration | yes |
bassScaleDegreeFromNotation | ported | bass_scale_degree_from_notation | yes |
functionalityScore | ported | functionality_score | yes |
isNeapolitan | ported | is_neapolitan | yes |
isMixture | ported | is_mixture | yes |
▶TimeSignaturemeter/base.py
29 of 3332 in the wheel
4 missing
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 | Status | music21-rs | Wheel |
|---|---|---|---|
resetValues | missing | rebuilding a meter in place; a new one is built instead | yes |
load | missing | rebuilding a meter in place; a new one is built instead | yes |
summedNumerator | missing | whether a meter was written (3+2)/8 rather than 3/8+2/8; the parts are kept either way, and music21 refuses to read the first spelling at all | no |
getMeasureOffsetOrMeterModulusOffset | missing | where an element sits in its stream is music21's to know; the wheel answers it there | yes |
ratioString | ported | ratio_string | yes |
ratioEqual | ported | ratio_equal | yes |
numerator | ported | numerator | yes |
denominator | ported | denominator | yes |
barDuration | ported | bar_duration | yes |
beatLengthToQuarterLengthRatio | ported | beat_length_to_quarter_length_ratio | yes |
quarterLengthToBeatLengthRatio | ported | quarter_length_to_beat_length_ratio | yes |
beatCount | ported | beat_count | yes |
beatCountName | ported | beat_count_name | yes |
beatDuration | ported | beat_duration | yes |
beatDivisionCount | ported | beat_division_count | yes |
beatDivisionCountName | ported | beat_division_count_name | yes |
beatDivisionDurations | ported | beat_division_durations | yes |
beatSubDivisionDurations | ported | beat_sub_division_durations | yes |
classification | ported | classification | yes |
getBeams | ported | beams_for | yes |
setDisplay | ported | set_display | yes |
getAccent | ported | accent | yes |
setAccentWeight | ported | set_accent_weight | yes |
averageBeatStrength | ported | average_beat_strength | yes |
getAccentWeight | ported | accent_weight | yes |
getBeat | ported | beat_at_offset | yes |
getBeatOffsets | ported | beat_offsets | yes |
getBeatDuration | ported | beat_duration | yes |
getOffsetFromBeat | ported | offset_from_beat | yes |
getBeatProgress | ported | beat_progress | yes |
getBeatProportion | ported | beat_proportion | yes |
getBeatProportionStr | ported | beat_proportion_string | yes |
getBeatDepth | ported | beat_depth | yes |
▶MetronomeMarktempo.py
10 of 1010 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
referent | ported | referent | yes |
numberSounding | ported | number_sounding | yes |
getQuarterBPM | ported | quarter_bpm | yes |
setQuarterBPM | ported | quarter_bpm | yes |
getTextExpression | ported | text_expression | yes |
getEquivalentByReferent | ported | equivalent_by_referent | yes |
getMaintainedNumberWithReferent | ported | maintained_number_with_referent | yes |
secondsPerQuarter | ported | seconds_per_quarter | yes |
durationToSeconds | ported | duration_to_seconds | yes |
secondsToDuration | ported | seconds_to_duration | yes |
▶Durationduration.py
17 of 2424 in the wheel
7 missing
A quarter length, the note values it is written as, and the tuplets it is written inside.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
linked | missing | an unlinked duration is written as one value and sounds as another, which needs a written value the length does not decide | yes |
consolidate | missing | the written values are read off the length here rather than assembled by hand | yes |
getGraceDuration | missing | a grace note is written but does not sound, which is the note's business and not the length's | yes |
informClient | missing | observer callback for a containing note; there is none | yes |
sliceComponentAtPosition | missing | the written values are read off the length here rather than assembled by hand | yes |
currentComponents | missing | the working-out is not deferred here, so there is no half-worked-out state to read | yes |
splitDotGroups | missing | dot groups are a way of writing one length twice over; the crate keeps the length | yes |
addDurationTuple | ported | add_duration_tuple | yes |
appendTuplet | ported | append_tuplet | yes |
augmentOrDiminish | ported | augment_or_diminish | yes |
clear | ported | clear | yes |
componentIndexAtQtrPosition | ported | component_index_at_qtr_position | yes |
componentStartTime | ported | component_start_time | yes |
components | ported | components | yes |
dotGroups | ported | dot_groups | yes |
dots | ported | dots | yes |
fullName | ported | full_name | yes |
isComplex | ported | is_complex | yes |
ordinal | ported | ordinal | yes |
quarterLengthNoTuplets | ported | quarter_length_no_tuplets | yes |
quarterLength | ported | quarter_length | yes |
tuplets | ported | tuplets | yes |
aggregateTupletMultiplier | ported | aggregate_tuplet_multiplier | yes |
type | ported | duration_type | yes |
▶ToneRowserial.py
10 of 1010 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
pitchClasses | ported | pitch_classes | yes |
noteNames | ported | note_names | yes |
isTwelveToneRow | ported | is_twelve_tone_row | yes |
makeTwelveToneRow | ported | make_twelve_tone_row | yes |
isSameRow | ported | is_same_row | yes |
getIntervalsAsString | ported | intervals_as_string | yes |
zeroCenteredTransformation | ported | zero_centered_transformation | yes |
originalCenteredTransformation | ported | original_centered_transformation | yes |
findZeroCenteredTransformations | ported | find_zero_centered_transformations | yes |
findOriginalCenteredTransformations | ported | find_original_centered_transformations | yes |
▶TwelveToneRowserial.py
7 of 77 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
matrix | ported | matrix | yes |
findHistorical | ported | find_historical | yes |
findTransformedHistorical | ported | find_transformed_historical | yes |
isAllInterval | ported | is_all_interval | yes |
getLinkClassification | ported | link_classification | yes |
isLinkChord | ported | is_link_chord | yes |
areCombinatorial | ported | are_combinatorial | yes |
▶serial.py functionsserial.py
3 of 33 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
getHistoricalRowByName | ported | historical_row_by_name | yes |
pcToToneRow | ported | new | yes |
rowToMatrix | ported | row_to_matrix | yes |
▶VoiceLeadingQuartetvoiceLeading.py
30 of 3030 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
key | ported | key | yes |
v1n1 | ported | v1n1 | yes |
v1n2 | ported | v1n2 | yes |
v2n1 | ported | v2n1 | yes |
v2n2 | ported | v2n2 | yes |
motionType | ported | motion_type | yes |
noMotion | ported | no_motion | yes |
obliqueMotion | ported | oblique_motion | yes |
similarMotion | ported | similar_motion | yes |
parallelMotion | ported | parallel_motion | yes |
contraryMotion | ported | contrary_motion | yes |
outwardContraryMotion | ported | outward_contrary_motion | yes |
inwardContraryMotion | ported | inward_contrary_motion | yes |
antiParallelMotion | ported | anti_parallel_motion | yes |
parallelInterval | ported | parallel_interval | yes |
parallelFifth | ported | parallel_fifth | yes |
parallelOctave | ported | parallel_octave | yes |
parallelUnison | ported | parallel_unison | yes |
parallelUnisonOrOctave | ported | parallel_unison_or_octave | yes |
hiddenInterval | ported | hidden_interval | yes |
hiddenFifth | ported | hidden_fifth | yes |
hiddenOctave | ported | hidden_octave | yes |
voiceOverlap | ported | voice_overlap | yes |
voiceCrossing | ported | voice_crossing | yes |
isProperResolution | ported | is_proper_resolution | yes |
leapNotSetWithStep | ported | leap_not_set_with_step | yes |
modalOpening | ported | modal_opening | yes |
opensIncorrectly | ported | opens_incorrectly | yes |
clausulaVera | ported | clausula_vera | yes |
closesIncorrectly | ported | closes_incorrectly | yes |
▶Sievesieve.py
3 of 97 in the wheel
6 missing
The sieve as written: parse, membership, the segment formats and the interval widths of one period.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
expand | missing | the compressed reading of a sieve is not modelled | no |
compress | missing | the compressed reading of a sieve is not modelled | no |
setZ | missing | the range is an argument of each question here, not state on the sieve | yes |
setZRange | missing | the range is an argument of each question here, not state on the sieve | yes |
setSegmentFormat | missing | the segment format is an argument of each question here, not state on the sieve | yes |
represent | missing | the sieve is written by `Display`, which is not a function the map can name | yes |
segment | ported | segment | yes |
period | ported | period | yes |
collect | ported | collect | yes |
▶Beamsbeam.py
11 of 1212 in the wheel
1 missing
All the beams over one note, and the rules for a run of them.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
naiveBeams | missing | it asks each object for its written value and whether it sounds, which is the facade's to ask; the rules it feeds are here as pure functions over the beams | yes |
removeSandwichedUnbeamables | ported | remove_sandwiched_unbeamables | yes |
mergeConnectingPartialBeams | ported | merge_connecting_partial_beams | yes |
sanitizePartialBeams | ported | sanitize_partial_beams | yes |
append | ported | append | yes |
fill | ported | fill | yes |
getByNumber | ported | by_number | yes |
getNumbers | ported | numbers | yes |
getTypeByNumber | ported | by_number | yes |
getTypes | ported | types | yes |
setAll | ported | set_all | yes |
setByNumber | ported | set_by_number | yes |
▶Volumevolume.py
6 of 99 in the wheel
3 missing
How loud a note sounds, as a velocity and as a scalar.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
getDynamicContext | missing | the dynamic in force is a search through the stream the note sits in; `realized_with` takes it as an argument instead | yes |
cachedRealized | missing | the crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does | yes |
cachedRealizedStr | missing | the crate caches nothing -- a value that answers the same question twice is doing arithmetic. The wheel caches as music21 does | yes |
mergeAttributes | ported | merge_attributes | yes |
getRealizedStr | ported | realized_str | yes |
getRealized | ported | realized | yes |
realized | ported | realized | yes |
velocity | ported | velocity | yes |
velocityScalar | ported | velocity_scalar | yes |
▶volume.py functionsvolume.py
0 of 10 in the wheel
1 missing
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
realizeVolume | missing | walks a stream, setting each note's volume from the dynamics in force | no |
▶FigurefiguredBass/notation.py
1 of 11 in the wheel
One number of that column, with the accidental written against it.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
isPureExtender | ported | is_pure_extender | yes |
▶ModifierfiguredBass/notation.py
2 of 22 in the wheel
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 | Status | music21-rs | Wheel |
|---|---|---|---|
modifyPitchName | ported | modify_pitch_name | yes |
modifyPitch | ported | modify | yes |
▶figuredBass/notation.py functionsfiguredBass/notation.py
1 of 11 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
convertToPitch | ported | convert_to_pitch | yes |
▶sieve.py functionssieve.py
6 of 66 in the wheel
The number helpers music21 keeps beside the sieve: primes, and spacings across the unit interval.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
eratosthenes | ported | eratosthenes | yes |
rabinMiller | ported | rabin_miller | yes |
discreteBinaryPad | ported | discrete_binary_pad | yes |
unitNormRange | ported | unit_norm_range | yes |
unitNormEqual | ported | unit_norm_equal | yes |
unitNormStep | ported | unit_norm_step | yes |
▶GeneralNotenote.py
7 of 88 in the wheel
1 missing
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 | Status | music21-rs | Wheel |
|---|---|---|---|
getGrace | missing | a grace note is written and does not sound, which is a duration music21 keeps unlinked; the wheel makes one by swapping that duration in | yes |
tie | ported | tie | yes |
lyric | ported | lyric | yes |
addLyric | ported | add_lyric | yes |
insertLyric | ported | insert_lyric | yes |
fullName | ported | full_name | yes |
pitches | ported | pitches | yes |
augmentOrDiminish | ported | augment_or_diminish | yes |
▶NotRestnote.py
6 of 88 in the wheel
2 missing
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 | Status | music21-rs | Wheel |
|---|---|---|---|
storedInstrument | missing | the crate models no instruments | yes |
getInstrument | missing | the crate models no instruments | yes |
stemDirection | ported | stem_direction | yes |
notehead | ported | notehead | yes |
noteheadFill | ported | notehead_fill | yes |
noteheadParenthesis | ported | notehead_parenthesis | yes |
hasVolumeInformation | ported | has_volume_information | yes |
volume | ported | volume | yes |
▶Lyricnote.py
7 of 77 in the wheel
A syllable sung to a note.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
isComposite | ported | is_composite | yes |
text | ported | text | yes |
syllabic | ported | syllabic | yes |
identifier | ported | identifier | yes |
rawText | ported | raw_text | yes |
number | ported | number | yes |
setTextAndSyllabic | ported | set_text_and_syllabic | yes |
▶Restnote.py
1 of 10 in the wheel
A silence of a written length.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
fullName | ported | full_name | no |
▶ChordBasechord/__init__.py
7 of 77 in the wheel
What a chord is before it is asked anything: the notes it holds, and adding to and taking from them.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
add | ported | add | yes |
remove | ported | remove | yes |
notes | ported | notes | yes |
tie | ported | tie | yes |
volume | ported | volume | yes |
hasComponentVolumes | ported | has_component_volumes | yes |
setVolumes | ported | set_volumes | yes |
▶Tupletduration.py
10 of 1010 in the wheel
The bracket that says a length is written as one thing and sounds as another.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
augmentOrDiminish | ported | augment_or_diminish | yes |
setDurationType | ported | set_duration_type | yes |
setRatio | ported | set_ratio | yes |
totalTupletLength | ported | total_tuplet_length | yes |
tupletMultiplier | ported | multiplier | yes |
durationActual | ported | duration_actual | yes |
durationNormal | ported | duration_normal | yes |
fullName | ported | full_name | yes |
tupletActual | ported | tuplet_actual | yes |
tupletNormal | ported | tuplet_normal | yes |
▶Notenote.py
7 of 88 in the wheel
1 missing
A pitch and an optional duration.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
pitchChanged | missing | observer callback; there is none | yes |
name | ported | pitch_name | yes |
nameWithOctave | ported | pitch_name_with_octave | yes |
step | ported | step | yes |
octave | ported | octave | yes |
pitches | ported | pitches | yes |
transpose | ported | transpose | yes |
fullName | ported | full_name | yes |
▶ChordSymbolharmony.py
3 of 30 in the wheel
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
findFigure | ported | find_figure | no |
inversionIsValid | ported | inversion_is_valid | no |
transpose | ported | transpose | no |
▶pitch.py functionspitch.py
4 of 44 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
isValidAccidentalName | ported | is_valid_name | yes |
standardizeAccidentalName | ported | standardize_name | yes |
convertPitchClassToStr | ported | convert_pitch_class_to_str | yes |
simplifyMultipleEnharmonics | ported | simplify_multiple_enharmonics | yes |
▶key.py functionskey.py
3 of 33 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
convertKeyStringToMusic21KeyString | ported | convert_key_string_to_music21_key_string | yes |
sharpsToPitch | ported | sharps_to_pitch | yes |
pitchToSharps | ported | pitch_to_sharps | yes |
▶duration.py functionsduration.py
12 of 1212 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
nextLargerType | ported | next_larger | yes |
nextSmallerType | ported | next_smaller | yes |
quarterLengthToClosestType | ported | quarter_length_to_closest_type | yes |
convertQuarterLengthToType | ported | from_quarter_length | yes |
dottedMatch | ported | type_and_dots | yes |
quarterLengthToNonPowerOf2Tuplet | ported | quarter_length_to_non_power_of_2_tuplet | yes |
quarterLengthToTuplet | ported | quarter_length_to_tuplet | yes |
quarterConversion | ported | quarter_conversion | yes |
convertTypeToQuarterLength | ported | quarter_length | yes |
convertTypeToNumber | ported | type_number | yes |
durationTupleFromQuarterLength | ported | type_and_dots | yes |
durationTupleFromTypeDots | ported | from_type_with_dots | yes |
▶tempo.py functionstempo.py
1 of 21 in the wheel
1 missing
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
interpolateElements | missing | interpolates tempo across the elements of a stream | no |
convertTempoByReferent | ported | convert_tempo_by_referent | yes |
▶roman.py functionsroman.py
8 of 88 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
expandShortHand | ported | expand_shorthand | yes |
correctSuffixForChordQuality | ported | correct_suffix_for_chord_quality | yes |
figureTuples | ported | figure_tuples | yes |
figureTupleSolo | ported | from_pitch_and_reference | yes |
identifyAsTonicOrDominant | ported | identify_as_tonic_or_dominant | yes |
romanInversionName | ported | roman_inversion_name | yes |
correctRNAlterationForMinor | ported | correct_rn_alteration_for_minor | yes |
romanNumeralFromChord | ported | roman_numeral_from_chord | yes |
▶chord/__init__.py functionschord/__init__.py
2 of 22 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
fromForteClass | ported | from_forte_class | yes |
fromIntervalVector | ported | from_interval_vector | yes |
▶chord/tables.py functionschord/tables.py
9 of 99 in the wheel
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 | Status | music21-rs | Wheel |
|---|---|---|---|
forteIndexToInversionsAvailable | ported | inversions_available | yes |
addressToTransposedNormalForm | ported | normal_form | yes |
addressToPrimeForm | ported | prime_form | yes |
addressToIntervalVector | ported | interval_class_vector | yes |
intervalVectorToAddress | ported | set_classes_with_interval_vector | yes |
addressToZAddress | ported | z_related_class | yes |
addressToCommonNames | ported | common_names | yes |
addressToForteName | ported | forte_name | yes |
seekChordTablesAddress | ported | address_of_pitch_classes | yes |
▶harmony.py functionsharmony.py
5 of 95 in the wheel
4 missing
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
addNewChordSymbol | missing | mutates music21's global chord-type table; the table here is a constant | no |
changeAbbreviationFor | missing | mutates music21's global chord-type table; the table here is a constant | no |
removeChordSymbols | missing | mutates music21's global chord-type table; the table here is a constant | no |
realizeChordSymbolDurations | missing | stretches chord symbols across a stream | no |
chordSymbolFigureFromChord | ported | chord_symbol_figure_from_chord | yes |
chordSymbolFromChord | ported | chord_symbol_from_chord | yes |
getAbbreviationListGivenChordType | ported | abbreviations_for_kind | yes |
getCurrentAbbreviationFor | ported | current_abbreviation_for_kind | yes |
getNotationStringGivenChordType | ported | notation_for_kind | yes |
▶meter/base.py functionsmeter/base.py
1 of 11 in the wheel
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
bestTimeSignature | ported | best_time_signature | yes |
▶voiceLeading.py functionsvoiceLeading.py
0 of 20 in the wheel
2 missing
Module-level helpers.
| music21 | Status | music21-rs | Wheel |
|---|---|---|---|
getVerticalityFromObject | missing | walks a stream | no |
iterateAllVoiceLeadingQuartets | missing | walks a stream | no |
Nothing matches that filter.
Every public member of the music21 classes the crate ports, read from the submodule. A reason for not porting one is shown beside it but still counts against the total. The wheel is asked separately and under music21's own names: the crate may leave a member out on purpose, but one the wheel lacks is a member a program loses when it calls install_into_music21(). It runs the other way too — a member counted in the wheel only is one the facade answers and the crate has no function for, because what it answers is Python's rather than music theory: a cached value, a callback from the object that holds it, an instrument, or a walk through the stream a note sits in.