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

    Type Alias MotifData

    A recurring melodic cell.

    Identity is the interval sequence plus the rhythmic profile, so every statement of the motif carries the same intervals and rhythm however far it has been transposed or however wide its note values are written. notes holds one statement — the first — exactly as it sounds.

    type MotifData = {
        notes: NoteEvent[];
        intervals: number[];
        rhythm: number[];
        occurrences: MotifOccurrence[];
        rationale: string;
    }
    Index
    notes: NoteEvent[]

    The first statement, exactly as it sounds in the melody.

    intervals: number[]

    Semitones between consecutive notes. This is the transposition-invariant identity of the cell: two statements a fifth apart share it.

    rhythm: number[]

    Onset-to-onset gaps as multiples of the first gap, so an even cell reads [1, 1, 1] whatever the tempo or note values it is written in.

    occurrences: MotifOccurrence[]

    Every statement found, in time order; the first is notes.

    rationale: string

    Why this counts as a motif.