Creates a new JinsData instance with abstract note names.
Unique identifier for this jins
Name of the jins (e.g., "Jins Kurd")
Array of note name strings (not yet typed as NoteName)
English description or comments
Arabic description or comments
References to source documents
Gets the unique identifier of this jins.
The jins ID
Gets the standardized ID name of this jins.
The jins ID name
Gets the name of this jins.
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.
Array of note names
Gets the English-language comments for this jins.
English comments
Gets the Arabic-language comments for this jins.
Arabic comments
Gets the source page references for this jins.
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:
All note names available in the tuning system
True if all required note names are available, false otherwise
Creates a copy of this jins with new source page references.
New source page references to use
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:
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.
All pitch classes available in the tuning system
Jins interface instance with concrete pitches and intervals
Converts this JinsData to a plain object for JSON serialization.
Plain object representation suitable for JSON storage
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.