@libraz/libcantus - v1.3.0
    Preparing search index...

    Type Alias CadenceResult

    A recognized cadence, with the voice-leading facts its reading rests on.

    type CadenceResult = {
        type: CadenceType | null;
        strength: "perfect" | "imperfect" | null;
        soprano?: ChordToneRole;
        rootPosition: boolean;
        evaded: boolean;
        rationale: string;
        alternatives: RejectedCandidate[];
    }
    Index
    type: CadenceType | null

    The cadence the chord pair forms, or null when it forms none.

    strength: "perfect" | "imperfect" | null

    How conclusive an authentic cadence is: 'perfect' when it is a PAC, 'imperfect' when it is an IAC.

    Null for every other cadence type — the distinction is only defined for the authentic cadence — and null for an authentic cadence whose soprano is unknown, which is the case whenever no voicing is given.

    soprano?: ChordToneRole

    The role the final chord's highest sounding pitch plays in that chord.

    Omitted when no voicing was given, and when the top voice is a tension with no basic chord-tone role.

    rootPosition: boolean

    True when both chords stand on their own root — the inversion condition a perfect authentic cadence has to meet.

    evaded: boolean

    True when the dominant resolved onto an inverted tonic (V to I6 and its relatives) instead of the root-position arrival it prepared, so the cadential weight is withheld even though the type still holds.

    rationale: string

    Why the pair reads this way: the motion the type rests on, what graded an authentic cadence, and what a null type failed to be. Always present, in the phrasing analyzeVoice uses for a note.

    alternatives: RejectedCandidate[]

    The cadences that were considered and rejected, empty unless DetectCadenceOptions.alternatives asked for them.

    These are the near misses — the readings a condition or two away from holding — rather than every type that did not fire, which for most pairs would be all of them.