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

    Class default

    Represents the raw, tuning-system-independent definition of a maqam.

    A maqam is a complete modal framework that differs from ajnas in its scope and structure, representing a comprehensive melodic system rather than a building block component. Each maqām contains both an ascending sequence (ṣuʿūd) and a descending sequence (hubūṭ) of note names, both consisting of seven or more notes that can be either identical (symmetric) or different (asymmetric).

    MaqamData contains only abstract note names without connection to specific pitch classes or tuning systems, serving as the "template" or "blueprint" of a maqam as it would appear in theoretical texts or JSON data files. To create an actual playable maqam with specific pitches, this data must be combined with a tuning system through the getTahlil() method to produce a Maqam interface instance.

    Key Features:

    • Bidirectional sequences: Separate ascending (ṣuʿūd) and descending (hubūṭ) paths
    • Asymmetrical structure: Platform visually distinguishes notes appearing only in descending sequences
    • Embedded ajnas analysis: Algorithm identifies all possible ajnās patterns within both sequences using cents tolerance matching
    • Suyūr integration: Traditional melodic development pathways defining performance practice

    Key Distinction: MaqamData contains only note names (cultural/theoretical identifiers), while the Maqam interface contains actual pitch classes with frequencies and intervallic relationships within a specific tuning system.

    Index

    Constructors

    • Creates a new MaqamData instance with abstract note names.

      Parameters

      • id: string

        Unique identifier for this maqam

      • name: string

        Name of the maqam (e.g., "Maqam Farahfazza")

      • ascendingNoteNames: string[]

        Ascending sequence (ṣuʿūd) of note names

      • descendingNoteNames: string[]

        Descending sequence (hubūṭ) of note names

      • suyūr: Sayr[]

        Traditional melodic development pathways

      • commentsEnglish: string

        English description or comments

      • commentsArabic: string

        Arabic description or comments

      • sourcePageReferences: SourcePageReference[]

        References to source documents

      Returns default

    Methods

    • Gets the unique identifier of this maqam.

      Returns string

      The maqam ID

    • Gets the name of this maqam.

      Returns string

      The maqam name

    • Gets the ascending sequence (ṣuʿūd) note names.

      These are abstract cultural identifiers without connection to specific pitch frequencies. To get actual playable pitches, use getTahlil() with a specific tuning system.

      Returns string[]

      Array of ascending note names

    • Gets the descending sequence (hubūṭ) note names.

      These may differ from ascending names in asymmetric maqamat, creating distinctive directional characteristics that are essential to the maqam's identity.

      Returns string[]

      Array of descending note names

    • Gets the suyūr (traditional melodic development pathways).

      Suyūr define how the maqam unfolds in performance practice, going beyond basic ascending/descending sequences to describe characteristic progressions, emphasis points, and developmental patterns.

      Returns Sayr[]

      Array of sayr objects

    • Gets the English-language comments for this maqam.

      Returns string

      English comments

    • Gets the Arabic-language comments for this maqam.

      Returns string

      Arabic comments

    • Gets the source page references for this maqam.

      Returns SourcePageReference[]

      Array of source page references

    • Checks if this maqam has symmetric ascending and descending sequences.

      A symmetric maqam has identical ascending and descending sequences when the descending sequence is reversed. Asymmetric maqamat have different note patterns for ascent and descent, creating distinctive directional characteristics that are visually distinguished in the platform interface.

      Returns boolean

      True if the maqam is symmetric, false if asymmetric

    • Checks if this maqam can be constructed within a given tuning system.

      A maqam is only selectable/constructible if ALL note names in BOTH its ascending and descending sequences exist within the tuning system's available pitch classes. The platform searches across all four octaves when determining compatibility, similar to ajnas but with the additional requirement that both directional sequences must be fully supported.

      For example, in Al-Kindī's tuning system:

      • Maqam Farahfazza (yegah → dūgāh ascending, dūgāh → yegah descending) ✓ CAN be constructed
      • A hypothetical maqam requiring "nīm ḥusaynī" ✗ CANNOT because Al-Kindī's system lacks this note

      Parameters

      • allNoteNames: string[]

        All note names available in the tuning system

      Returns boolean

      True if all required note names are available in both sequences, false otherwise

    • Converts this abstract maqam into a concrete, playable tahlil (original form).

      This is the crucial method that bridges the gap between abstract note names and actual musical pitches. It processes both ascending and descending sequences separately, matching note names with corresponding pitch classes from a specific tuning system, creating a Maqam interface instance with:

      • Actual frequency values for both sequences
      • Intervallic relationships between consecutive pitches in both directions
      • Playable musical content with directional characteristics
      • Foundation for embedded ajnas analysis and suyūr transposition

      The resulting Maqam represents the "tahlil" (original/root form) of the maqam, as opposed to "taswir" (transpositions) which would start from different pitch classes but maintain the same intervallic patterns and directional structure.

      Parameters

      • allPitchClasses: default[]

        All pitch classes available in the tuning system

      Returns Maqam

      Maqam interface instance with concrete pitches and intervals

    • Creates a copy of this maqam with new suyūr pathways.

      This method preserves all other properties while allowing for suyūr modifications, useful for exploring different performance traditions or creating variants with alternative melodic development patterns.

      Parameters

      • newSuyūr: Sayr[]

        New suyūr pathways to use in the copy

      Returns default

      New MaqamData instance with updated suyūr

    • Creates a copy of this maqam with new source page references.

      Parameters

      • newSourcePageReferences: SourcePageReference[]

        New source page references to use

      Returns default

      New MaqamData instance with updated references

    Properties

    ascendingPitchClasses: any

    Legacy property - consider removing in future refactoring