Arabic Maqām Network - TypeScript Library Documentation - v0.1.0
    Preparing search index...

    Represents a tuning system used in Arabic maqam music theory.

    A tuning system is a comprehensive framework that defines the available pitch relationships within an octave and their cultural context. Following historical precedents like Al-Kindī's 12-tone system from 874 CE, each tuning system contains:

    1. Pitch Classes: Mathematical intervals defining available pitches (ratios or cents)
    2. Note Names: Cultural vocabulary for identifying each pitch (rāst, dūgāh, segāh, etc.)
    3. Reference Frequency: Converts mathematical ratios into actual frequencies for synthesis

    The system supports multiple octaves (below and above the primary octave) which is crucial for jins and maqam analysis. Since each pitch class has both relational and absolute values, all other representations can be derived through conversion formulas.

    Index

    Constructors

    • Creates a new TuningSystem instance.

      Parameters

      • titleEnglish: string

        English title of the tuning system

      • titleArabic: string

        Arabic title of the tuning system

      • year: string

        Year the system was documented or created

      • sourceEnglish: string

        English name of the source document

      • sourceArabic: string

        Arabic name of the source document

      • SourcePageReferences: SourcePageReference[]

        Array of page references within the source

      • creatorEnglish: string

        English name of the creator/theorist

      • creatorArabic: string

        Arabic name of the creator/theorist

      • commentsEnglish: string

        Additional English comments

      • commentsArabic: string

        Additional Arabic comments

      • originalPitchClassValues: string[]

        Raw input values (ratios, decimals, or cents as strings)

      • noteNameSets: string[][]

        Arrays of note names corresponding to pitch classes

      • abjadNames: string[]

        Traditional Arabic alphabetical names

      • stringLength: number

        String length parameter for instruments

      • referenceFrequencies: { [noteName: string]: number }

        Mapping of note names to reference frequencies

      • defaultReferenceFrequency: number

        Default frequency anchor (e.g., 440 Hz)

      • saved: boolean

        Whether the system has been saved to storage

      Returns default

    Methods

    • Gets the unique identifier for this tuning system.

      Returns string

      Unique ID string generated from creator, year, and title

    • Gets the English title of the tuning system.

      Returns string

      English title

    • Gets the Arabic title of the tuning system.

      Returns string

      Arabic title

    • Gets the year the tuning system was documented or created.

      Returns string

      Year as string

    • Gets the English name of the source document.

      Returns string

      English source name

    • Gets the Arabic name of the source document.

      Returns string

      Arabic source name

    • Gets the page references within the source document.

      Returns SourcePageReference[]

      Array of page references

    • Gets the English name of the tuning system's creator.

      Returns string

      Creator's English name

    • Gets the Arabic name of the tuning system's creator.

      Returns string

      Creator's Arabic name

    • Gets additional English comments about the tuning system.

      Returns string

      English comments

    • Gets additional Arabic comments about the tuning system.

      Returns string

      Arabic comments

    • Gets the original pitch class values as inputted by the user.

      These are raw string values representing mathematical intervals in their original format (e.g., "9/8" for fractional ratios, "1.125" for decimals, or "204.0" for cents). They are NOT PitchClass objects but preserve the exact format as entered, allowing the system to maintain mathematical precision and cultural authenticity of historical tuning descriptions.

      Returns string[]

      Array of original pitch class values as strings

    • Gets the sets of note names.

      Returns string[][]

      Array of note name sets

    • Gets the traditional abjad (Arabic alphabetical) names for pitch classes.

      Returns string[]

      Array of abjad names

    • Gets the string length parameter for instruments (if applicable).

      Returns number

      String length value

    • Gets the mapping of note names to their reference frequencies.

      This allows different notes within the system to serve as frequency anchors for tuning and synthesis purposes.

      Returns { [noteName: string]: number }

      Object mapping note names to frequencies in Hz

    • Gets the default reference frequency for the tuning system.

      This is the primary frequency anchor (e.g., 440 Hz for A4 in Western music, or 220 Hz for ʿushayrān in Al-Kindī's system) used to convert mathematical ratios into actual audible frequencies.

      Returns number

      Default reference frequency in Hz

    • Checks whether this tuning system has been saved to persistent storage.

      Returns boolean

      True if saved, false otherwise

    • Creates a string representation of the tuning system for display purposes.

      Format: "Creator (Year) Title" (e.g., "Al-Kindī (874) 12-tone System")

      Returns string

      Formatted string representation

    • Gets note name sets expanded to include octaves above and below.

      This method is crucial for jins and maqam analysis as it provides access to pitch classes in multiple octaves. Each note name set is expanded to include the octave below (-1) and the octave above (+1) the primary octave, giving analysts access to a three-octave range for comprehensive modal analysis.

      Returns string[][]

      Expanded note name sets with three octaves of coverage

    • Creates a copy of this tuning system with new note name sets.

      Parameters

      • newNoteNames: string[][]

        New note name sets to use in the copy

      Returns default

      New TuningSystem instance with updated note names

    • Creates a blank/default tuning system for initialization purposes.

      This factory method creates an empty tuning system with placeholder values in both English and Arabic. Useful for initializing the interface before users input their own tuning system data or when creating templates for new systems.

      Returns default

      A new TuningSystem instance with default placeholder values