UNPKG

xen-dev-utils

Version:

Utility functions used by the Scale Workshop ecosystem

111 lines (110 loc) 4.01 kB
/** * Convert floating point ratio to cents. * ```ts * valueToCents(3/2) // 701.9550008653874 * ``` * @param value Musical interval in multiplicative representation. * @returns Musical interval in additive representation measured in cents. */ export declare function valueToCents(value: number): number; /** * Convert cents to floating point ratio. * ```ts * centsToValue(1200) // 2.0 * ``` * @param cents Musical interval in additive representation measured in cents. * @returns Musical interval in multiplicative representation. */ export declare function centsToValue(cents: number): number; /** * Convert musical frequency to pitch in cents by comparing it to a reference frequency. * ```ts * frequencyToCentOffset(220) // -1200.0 * ``` * @param frequency Musical frequency. * @param baseFrequency Reference frequency. * @returns Musical pitch in additive representation as a cents offset from reference. */ export declare function frequencyToCentOffset(frequency: number, baseFrequency?: number): number; /** * Convert pitch as cents offset from reference to frequency. * ```ts * centOffsetToFrequency(1200) // 880.0 * ``` * @param offset Musical pitch in additive representation as a cents offset from reference. * @param baseFrequency Reference frequency. * @returns Musical frequency. */ export declare function centOffsetToFrequency(offset: number, baseFrequency?: number): number; /** * Convert MIDI note number to frequency. * @param index MIDI note number or MTS value. * @returns Frequency in Hertz. */ export declare function mtof(index: number): number; /** * Convert frequency to MTS number (semitones with A440=69). * @param frequency Frequency in Hertz. * @returns MTS value */ export declare function ftomts(frequency: number, ignoreLimit?: boolean): number; /** * Convert frequency to MIDI note number and pitch offset measured in cents. * @param frequency Frequency in Hertz. * @returns [MIDI note number, pitch offset in cents] */ export declare function ftom(frequency: number): [number, number]; /** * Convert MTS pitch value to 3-byte representation * @param mtsValue MTS pitch value * @returns Uint8Array 3-byte of 7-bit MTS data */ export declare function mtsToMtsBytes(mtsValue: number): Uint8Array; /** * Convert frequency to 3-byte MTS value * @param frequency Frequency in Hertz. * @returns Uint8Array of length 3 */ export declare function frequencyToMtsBytes(frequency: number): Uint8Array; /** * Convert 3-byte MTS value to frequency * @param mtsBytes Uint8Array of 3-bytes of 7-bit MTS values * @returns frequency Frequency in Hertz */ export declare function mtsBytesToMts(mtsBytes: Uint8Array): number; /** * Convert 3-byte MTS value to frequency * @param mtsBytes Uint8Array of 3-bytes of 7-bit MTS values * @returns frequency Frequency in Hertz */ export declare function mtsBytesToFrequency(mtsBytes: Uint8Array): number; /** Convert MTS Data value into readable hex string * @param mtsBytes Uint8Array of 3-bytes of 7-bit MTS values * @returns String representation of MTS value in hexadecimal * can be used in MIDI messages */ export declare function mtsBytesToHex(mtsBytes: Uint8Array): String; /** * Convert cents to natural units. * @param cents Musical interval in cents. * @returns Musical interval in natural units. */ export declare function centsToNats(cents: number): number; /** * Convert natural units to cents. * @param nats Musical interval in natural units. * @returns Musical interval in cents. */ export declare function natsToCents(nats: number): number; /** * Convert semitones to natural units. * @param semitones Musical interval in semitones. * @returns Musical interval in natural units. */ export declare function semitonesToNats(semitones: number): number; /** * Convert natural units to cents. * @param nats Musical interval in natural units. * @returns Musical interval in semitones. */ export declare function natsToSemitones(nats: number): number;