Universal Music Theory Library - v0.12.0
    Preparing search index...

    Class Schenker

    Basic Schenkerian reduction (approximate): Urlinie, Ursatz and structural levels of a progression.

    Index

    Constructors

    Methods

    • Attempts to identify an Urlinie (fundamental melodic line) in a melody.

      Looks for a descending stepwise line ending on the tonic that covers a 3rd (^3-^2-^1), 5th (^5-^4-^3-^2-^1), or octave (^8-^7-...-^1).

      Returns null if no clear Urlinie is detected.

      Parameters

      • melody: Note[]

        Melody notes (12-TET).

      • keySymbol: string

        Key, e.g. 'C major'.

      Returns UrlinieResult | null

    • Identifies an Ursatz (basic structure) from a progression and melody. Returns the bass arpeggiation (I-V-I) and Urlinie notes, or null.

      Parameters

      • progression: Chord[]
      • melody: Note[]
      • keySymbol: string

      Returns { bass: Note[]; melody: Note[] } | null

      • { bass: Note[]; melody: Note[] }
        • bass: Note[]

          Roots of the bass arpeggiation I-V-I found in the progression (two or three notes).

        • melody: Note[]

          The Urlinie (see findUrlinie).

      • null
    • Reduces a chord progression to a simplified structural level.

      • 'background': only tonic and dominant (the first chord is taken as the tonic).
      • 'middleground': merges consecutive chords on the same root (C C7 → C).
      • 'foreground': merges consecutive identical chords (same pitch classes).

      Parameters

      • chords: Chord[]
      • level: "foreground" | "middleground" | "background"

      Returns Chord[]