Module music_df.utils.music21_caching

Functions

def get_rn_from_cache(rn: str,
mode: Literal['M', 'm'] | None = None,
key: str | None = None,
sixth_minor: music21.roman.Minor67Default = Minor67Default.CAUTIONARY,
seventh_minor: music21.roman.Minor67Default = Minor67Default.CAUTIONARY,
case_matters: bool = False)
Expand source code
def get_rn_from_cache(
    rn: str,
    mode: Mode | None = None,
    key: str | None = None,
    sixth_minor: Minor67Default = Minor67Default.CAUTIONARY,
    seventh_minor: Minor67Default = Minor67Default.CAUTIONARY,
    case_matters: bool = False,
):
    assert (mode is None) != (key is None), (
        "Either mode or key must be provided, but not both"
    )
    if key is None:
        key = MODE_TO_DEFAULT_KEY[mode]

    if (rn, key, sixth_minor, seventh_minor) in RN_CACHE:
        return RN_CACHE[(rn, key, sixth_minor, seventh_minor)]
    roman = RomanNumeral(
        rn,
        key,
        sixthMinor=sixth_minor,
        seventhMinor=seventh_minor,
        caseMatters=case_matters,
    )
    RN_CACHE[(rn, key, sixth_minor, seventh_minor)] = roman
    return roman