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

    Type Alias MotifRelation

    The transformation that turns one motif into another.

    type MotifRelation = {
        kind: MotifRelationKind;
        sequence: boolean;
        semitones: number;
        interval: SpelledInterval;
        degrees?: number;
        timeRatio: number;
        rationale: string;
    }
    Index

    The named transformation.

    sequence: boolean

    Whether the second statement begins where the first ends, which is what separates a sequence from a restatement elsewhere in the piece: a 'transposition' that is one is a real sequence, a 'tonalTransposition' that is one is a tonal sequence.

    semitones: number

    Semitones from the first statement's first note to the second's.

    interval: SpelledInterval

    The same distance named as a spelled interval.

    degrees?: number

    Scale degrees the second statement stands above the first, when tonal.

    timeRatio: number

    How much the second statement is stretched against the first: 2 for doubled note values, 0.5 for halved, 1 for unchanged.

    Measured in the direction the relation names, so a retrograde that kept every note value reports 1 however uneven those values are: it is compared against the model played backwards, not against the model as written.

    rationale: string

    Why the pair was given that name.