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

    Class Spectral

    Psychoacoustic analysis: harmonic series, combination tones, roughness, and sensory consonance.

    Index

    Constructors

    Methods

    • Returns the beat frequency (interference) between two pitches.

      Parameters

      • f1: number
      • f2: number

      Returns number

    • Computes sum and difference combination tones up to order. Only non-negative tones are returned.

      Parameters

      • f1: number
      • f2: number
      • order: number = 2

      Returns { difference: number[]; sum: number[] }

      • difference: number[]

        Difference tones |m·f1 − n·f2|, without zeros.

      • sum: number[]

        Sum tones m·f1 + n·f2, for m and n from 1 to order.

    • Estimates sensory roughness based on the Plomp-Levelt critical bandwidth model. Returns a value 0 (smooth) to 1 (maximum roughness).

      This is a simplified implementation - accurate only for simple sine-tone pairs. For complex spectra, use roughnessPlompLevelt.

      Parameters

      • intervalCents: number

      Returns number

    • Returns the first count partials of the harmonic series starting at fundamental Hz.

      Parameters

      • fundamental: number
      • count: number = 16

      Returns number[]

    • Estimates roughness for a set of frequencies using a pairwise Plomp-Levelt model. Lower values = more consonant.

      Parameters

      • frequencies: number[]

        Array of frequencies in Hz.

      • Optionalamplitudes: number[]

        Optional amplitudes (default: all 1).

      Returns number

    • Estimates sensory consonance of a chord from the roughness between the harmonic partials of its notes (Sethares' model: partial k at k·f with amplitude rolloff^(k−1)). Only partials of different notes are paired. Returns 1 − roughness / the most roughness those partials could make, from 0 (rough) to 1 (smooth): a fifth scores above a tritone.

      Parameters

      • chord: Chord

        The chord to evaluate.

      • partials: number = 6

        Harmonic partials per note (default 6; 1 = fundamentals only).

      • rolloff: number = 0.88

        Amplitude ratio between consecutive partials (default 0.88).

      Returns number