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

    Class ScalaTuning

    A tuning system loaded from a Scala (.scl) file.

    Pitches are stored as cent offsets from the root (step 0 = 0¢, always implied). The last entry in the .scl file must be the period (typically 1200¢ = one octave); this value is used to compute frequencies for steps outside the first period.

    Use parseScala() to construct from raw .scl text.

    Hierarchy (View Summary)

    Index

    Constructors

    • Parameters

      • name: string

        Scale name (first non-comment line of the .scl file).

      • cents: number[]

        Cent offsets for each pitch, excluding the implied 0¢ root but including the period as the last entry (e.g. […, 1200.0]).

      • baseFrequency: number = 440

        Frequency of step 0 in Hz (default: 440 Hz = A4).

      Returns ScalaTuning

    Properties

    baseFrequency: number = 440

    Reference frequency for step 0 (A4). Default: 440 Hz.

    cents: number[]

    Cent offsets from the root, with 0¢ prepended. Length = octaveSteps + 1.

    name: string

    Display name: '12-TET', 'Ptolemaic Just Intonation', 'Werckmeister III'.

    octaveSteps: number

    Number of steps per period (= number of pitches in the .scl file, excluding the implied root).

    Methods

    • Frequency in Hz for the given step offset from the base pitch.

      Parameters

      • stepsFromBase: number

      Returns number

    • Returns a generic name for the given step (e.g. "Step 3"). Scala files have no standard note names, so no enharmonic spelling is possible.

      Parameters

      • stepsFromBase: number

      Returns string

    • Converts a 12-TET step pattern (successive steps, e.g. major [2, 2, 1, 2, 2, 2, 1]) to this tuning. Each note's position above the first is mapped, not each step, so the pattern keeps its span: in 22-EDO the major scale spans 22 steps (rounding each step would give 24), and in a 7-note JI scale a semitone does not collapse to 0 steps. A step comes out 0 only when two notes land on the same step of this tuning.

      Parameters

      • pattern: readonly number[]

      Returns number[]

    • The 12-TET note a step stands for: the 12-TET step (A4 = 0) nearest in cents, when getStepFromStandard maps that note back to this step. Names, chord qualities and Roman numerals in any tuning are read through it.

      • In a tuning with 12 steps per octave (12-TET, Werckmeister III, 5-limit JI) every step stands for itself.
      • In 19- or 31-EDO the steps that stand for a note are the meantone images of the 12 notes; in 31-EDO C is step -23 and C# step -21, and steps -22 and -20 stand for none (spelled notes, where the 31-EDO D flat is step -20, are not modelled yet).
      • A quarter tone in 24-EDO stands for none.

      Parameters

      • step: number

      Returns number | null

      The 12-TET step, or null when the step stands for no 12-TET note, and always in a tuning that does not repeat at the octave.

    • Converts a standard 12-TET step (A4 = 0) to the step of this tuning nearest in cents (standardStep × 100¢ above step 0). Works for any tuning whose steps rise: unequal (JI, cent tables, Scala) and non-octave ones alike — in Bohlen-Pierce a fifth (700¢) maps to step 5 (731.6¢). Tunings with 12 steps per octave map one to one.

      Parameters

      • standardStep: number

      Returns number

    • The step of target that stands for the same 12-TET note as step does here (getStandardStep on both sides): C4 is step -9 in 12-TET and step -23 in 31-EDO.

      Parameters

      Returns number | null

      The step in target, or null when step stands for no note or target has no step for it.