xen-dev-utils
Version:
Utility functions used by the Scale Workshop ecosystem
111 lines (110 loc) • 4.01 kB
TypeScript
/**
* 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;