/** * Construct the diatonic scale degrees for a given key * @param {string} key - Key signature (e.g., 'C:maj', 'A:min') * @returns {Array} Array of chromatic degree indices (0-11) * * @example * key_to_degrees('C:maj') // [0, 2, 4, 5, 7, 9, 11] * key_to_degrees('A:min') // [9, 11, 0, 2, 4, 5, 7] */ export function key_to_degrees(key: string): Array; /** * List all 12 note names in the chromatic scale, as spelled according to a * given key. The returned * array is indexed by pitch class (0 == C), NOT rotated to the tonic, and the * sharp/flat choice follows the key's position on the circle of fifths * (explicit accidental in the tonic forces the side). Unknown keys THROW \u2014 * the legacy silent C:maj fallback is repaired. * * @param {string} key - Key signature (e.g., 'C:maj', 'Eb:min', 'F\u266F:maj') * @param {boolean} unicode - If true, use unicode symbols (\u266F/\uD834\uDD2A/\u266D/\uD834\uDD2B) * @returns {Array} List of 12 note names indexed by pitch class * * @example * key_to_notes('C:maj', false) // ['C','C#','D','D#','E','F','F#','G','G#','A','A#','B'] * key_to_notes('Eb:maj', false) // ['C','Db','D','Eb','E','F','Gb','G','Ab','A','Bb','B'] * key_to_notes('A:min', false) // same spelling as C:maj (relative keys share a signature) */ export function key_to_notes(key: string, unicode?: boolean): Array; /** * List melakarta ragas by name and index * @returns {Object} Dictionary mapping raga names to melakarta numbers (1-72) * * @example * const melas = list_mela(); * console.log(melas['kharaharapriya']); // 22 */ export function list_mela(): any; /** * List supported thaats by name * @returns {Array} List of thaat names * * @example * const thaats = list_thaat(); // ['bilaval', 'khamaj', 'kafi', ...] */ export function list_thaat(): Array; /** * Construct the svara indices (degrees) for a given melakarta raga * @param {string|number} mela - Melakarta raga name or number (1-72) * @returns {Array} Array of 7 svara degrees (0-11) * * @example * mela_to_degrees('kharaharapriya') // [0, 2, 3, 5, 7, 9, 10] * mela_to_degrees(22) // [0, 2, 3, 5, 7, 9, 10] */ export function mela_to_degrees(mela: string | number): Array; /** * Spell the Carnatic svara names for a given melakarta raga * @param {string|number} mela - Melakarta raga name or number (1-72) * @param {boolean} abbr - If true, use abbreviated svara names * @param {boolean} unicode - If true, use unicode symbols * @returns {Array} List of 7 svara names * * @example * mela_to_svara('kharaharapriya') // ['S', 'R₂', 'G₂', 'M₁', 'P', 'D₂', 'N₂'] * mela_to_svara(22, true, false) // ['S', 'R2', 'G2', 'M1', 'P', 'D2', 'N2'] * mela_to_svara(22, false, false) // ['Sa', 'Ri2', 'Ga2', 'Ma1', 'Pa', 'Dha2', 'Ni2'] */ export function mela_to_svara(mela: string | number, abbr?: boolean, unicode?: boolean): Array; /** * Construct the svara indices (degrees) for a given thaat * @param {string} thaat - Thaat name (e.g., 'bilaval', 'khamaj') * @returns {Array} Array of 7 svara degrees (0-11) * * @example * thaat_to_degrees('bilaval') // [0, 2, 4, 5, 7, 9, 11] * thaat_to_degrees('khamaj') // [0, 2, 4, 5, 7, 9, 10] */ export function thaat_to_degrees(thaat: string): Array; /** * Convert one or more frequencies (in Hz) to Functional Just System (FJS) notation * * FJS is a notation system for just intonation that extends conventional staff notation. * This function identifies the just intonation interval that best matches each frequency. * * @param {number|Array} frequencies - Frequency value(s) in Hz * @param {number} fmin - Reference frequency for unison (default: C1 = ~32.7 Hz) * @param {string} unison - Unison note name (default: 'C') * @param {boolean} unicode - Use unicode symbols for accidentals (default: true) * @returns {string|Array} FJS notation string(s) * * @example * hz_to_fjs(440) // 'A4' * hz_to_fjs(330, 440, 'A') // 'E5^5' (5:3 above A4) * hz_to_fjs([220, 330, 440]) // ['A3', 'E4^5', 'A4'] */ export function hz_to_fjs(frequencies: number | Array, fmin?: number, unison?: string, unicode?: boolean): string | Array; /** * Convert an interval to Functional Just System (FJS) notation * * Takes a frequency ratio and converts it to FJS interval notation. * * @param {number|Array} interval - Frequency ratio(s) * @param {string} unison - Unison note name (default: 'C') * @param {number} tolerance - Tolerance for ratio matching (default: 65/63 ≈ 1.0317) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} FJS interval notation * * @example * interval_to_fjs(3/2) // 'P5' (perfect fifth) * interval_to_fjs(5/4) // 'M3^5' (just major third) * interval_to_fjs([3/2, 5/4, 7/4]) // ['P5', 'M3^5', 'm7^7'] */ export function interval_to_fjs(interval: number | Array, unison?: string, tolerance?: number, unicode?: boolean): string | Array; /** * Convert frequencies (in Hz) to Carnatic svara notation within a melakarta raga * * @param {number|Array} frequencies - Frequency value(s) in Hz * @param {number} Sa - Reference frequency for Sa (tonic) in Hz * @param {string|number} mela - Melakarta raga name or number (1-72) * @param {boolean} abbr - Use abbreviated svara names (default: true) * @param {boolean} octave - Include octave notation (default: true) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} Carnatic svara notation * * @example * hz_to_svara_c(440, 261.63, 'kharaharapriya') // 'G3' (approximate) * hz_to_svara_c([261.63, 293.66, 329.63], 261.63, 22) // ['S', 'R2', 'G2'] */ export function hz_to_svara_c(frequencies: number | Array, Sa: number, mela: string | number, abbr?: boolean, octave?: boolean, unicode?: boolean): string | Array; /** * Convert frequencies (in Hz) to Hindustani svara notation * * @param {number|Array} frequencies - Frequency value(s) in Hz * @param {number} Sa - Reference frequency for Sa (tonic) in Hz * @param {boolean} abbr - Use abbreviated svara names (default: true) * @param {boolean} octave - Include octave notation (default: true) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} Hindustani svara notation * * @example * hz_to_svara_h(440, 261.63) // 'G' or 'Ga' (depending on abbr) * hz_to_svara_h([261.63, 293.66, 329.63], 261.63) // ['S', 'R', 'G'] */ export function hz_to_svara_h(frequencies: number | Array, Sa: number, abbr?: boolean, octave?: boolean, unicode?: boolean): string | Array; /** * Convert MIDI numbers to Carnatic svara within a melakarta raga * * @param {number|Array} midi - MIDI note number(s) * @param {number} Sa - MIDI number or frequency (Hz) for Sa (tonic) * @param {string|number} mela - Melakarta raga name or number (1-72) * @param {boolean} abbr - Use abbreviated svara names (default: true) * @param {boolean} octave - Include octave notation (default: true) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} Carnatic svara notation * * @example * midi_to_svara_c(60, 60, 'kharaharapriya') // 'S' * midi_to_svara_c([60, 62, 64], 60, 22) // ['S', 'R2', 'G2'] */ export function midi_to_svara_c(midi: number | Array, Sa: number, mela: string | number, abbr?: boolean, octave?: boolean, unicode?: boolean): string | Array; /** * Convert MIDI numbers to Hindustani svara * * @param {number|Array} midi - MIDI note number(s) * @param {number} Sa - MIDI number or frequency (Hz) for Sa (tonic) * @param {boolean} abbr - Use abbreviated svara names (default: true) * @param {boolean} octave - Include octave notation (default: true) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} Hindustani svara notation * * @example * midi_to_svara_h(60, 60) // 'S' * midi_to_svara_h([60, 62, 64], 60) // ['S', 'R', 'G'] */ export function midi_to_svara_h(midi: number | Array, Sa: number, abbr?: boolean, octave?: boolean, unicode?: boolean): string | Array; /** * Convert western note names to Carnatic svara within a melakarta raga * * @param {string|Array} notes - Note name(s) (e.g., 'C4', 'D#5') * @param {string} Sa - Note name for Sa (tonic) * @param {string|number} mela - Melakarta raga name or number (1-72) * @param {boolean} abbr - Use abbreviated svara names (default: true) * @param {boolean} octave - Include octave notation (default: true) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} Carnatic svara notation * * @example * note_to_svara_c('C4', 'C4', 'kharaharapriya') // 'S' * note_to_svara_c(['C4', 'D4', 'E4'], 'C4', 22) // ['S', 'R2', 'G2'] */ export function note_to_svara_c(notes: string | Array, Sa: string, mela: string | number, abbr?: boolean, octave?: boolean, unicode?: boolean): string | Array; /** * Convert western note names to Hindustani svara * * @param {string|Array} notes - Note name(s) (e.g., 'C4', 'D#5') * @param {string} Sa - Note name for Sa (tonic) * @param {boolean} abbr - Use abbreviated svara names (default: true) * @param {boolean} octave - Include octave notation (default: true) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string|Array} Hindustani svara notation * * @example * note_to_svara_h('C4', 'C4') // 'S' * note_to_svara_h(['C4', 'D4', 'E4'], 'C4') // ['S', 'R', 'G'] */ export function note_to_svara_h(notes: string | Array, Sa: string, abbr?: boolean, octave?: boolean, unicode?: boolean): string | Array; /** * Calculate the note name for a given number of perfect fifths * * Starting from a given unison note, computes the note name that is * `fifths` perfect fifths away. * * @param {string} unison - The starting note (e.g., 'C') * @param {number} fifths - Number of fifths (positive for up, negative for down) * @param {boolean} unicode - Use unicode symbols (default: true) * @returns {string} The resulting note name * * @example * fifths_to_note('C', 1) // 'G' (up one fifth) * fifths_to_note('C', -1) // 'F' (down one fifth) * fifths_to_note('C', 7, false) // 'C#' (7 fifths = one sharp on the tonic letter) * fifths_to_note('B', 1, false) // 'F#' (crossing the B→F♯ boundary adds the sharp) * fifths_to_note('G', -3, false)// 'Bb' (docstring golden) */ export function fifths_to_note(unison: string, fifths: number, unicode?: boolean): string;