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

    Class default

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

    A jins is a melodic fragment typically consisting of three to five pitch classes that serves as a fundamental building block for constructing maqāmāt. JinsData contains only the abstract note names (dūgāh, kurdī, chahārgāh, etc.) without any connection to specific pitch classes or tuning systems.

    This class represents the "template" or "blueprint" of a jins as it would appear in theoretical texts or JSON data files. To create an actual playable jins with specific pitches, this data must be combined with a tuning system through the getTahlil() method to produce a Jins interface instance.

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

    Index

    Constructors

    • Creates a new JinsData instance with abstract note names.

      Parameters

      • id: string

        Unique identifier for this jins

      • name: string

        Name of the jins (e.g., "Jins Kurd")

      • noteNames: string[]

        Array of note name strings (not yet typed as NoteName)

      • 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 jins.

      Returns string

      The jins ID

    • Gets the standardized ID name of this jins.

      Returns string

      The jins ID name

    • Gets the name of this jins.

      Returns string

      The jins name

    • Gets the array of note names that define this jins.

      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 note names

    • Gets the English-language comments for this jins.

      Returns string

      English comments

    • Gets the Arabic-language comments for this jins.

      Returns string

      Arabic comments

    • Gets the source page references for this jins.

      Returns SourcePageReference[]

      Array of source page references

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

      A jins is only selectable/constructible if ALL of its required note names exist within the tuning system's available pitch classes. The platform searches across all four octaves when determining compatibility.

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

      • Jins Kurd (dūgāh, kurdī, chahārgāh, nawā) ✓ CAN be constructed
      • Jins Chahārgāh (chahārgāh, nawā, nīm ḥusaynī, ʿajam) ✗ CANNOT because Al-Kindī's system lacks "nīm ḥusaynī"

      Parameters

      • allNoteNames: string[]

        All note names available in the tuning system

      Returns boolean

      True if all required note names are available, false otherwise

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

      Parameters

      • newSourcePageReferences: SourcePageReference[]

        New source page references to use

      Returns default

      New JinsData instance with updated references

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

      This is the crucial method that bridges the gap between abstract note names and actual musical pitch classes. It takes the jins's note names and matches them with corresponding pitch classes from a specific tuning system, creating a Jins interface instance with:

      • Actual frequency values
      • Intervallic relationships between pitches
      • Playable musical content

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

      Parameters

      • allPitchClasses: default[]

        All pitch classes available in the tuning system

      Returns Jins

      Jins interface instance with concrete pitches and intervals