moment-of-symmetry
Version:
Moment of Symmetry (MOS) musical scale generation and analysis for Javascript
52 lines (51 loc) • 2.6 kB
TypeScript
import { Fraction } from 'xen-dev-utils';
import { MosInfo, ScaleInfo } from './info';
/**
* An array of fractions that convey information about a MOS scale.
* @param generatorPerPeriod Generator divided by period.
* @param maxSize Maximum size of a MOS pattern.
* @param maxLength Maximum length of the result.
* @returns An array of MOS forms.
*/
export declare function mosForms(generatorPerPeriod: number | Fraction, maxSize?: number, maxLength?: number): Fraction[];
/**
* An array of sizes of MOS patterns.
* @param generatorPerPeriod Generator divided by period.
* @param maxSize Maximum size of a MOS pattern.
* @param maxLength Maximum length of the result.
* @returns An array of MOS sizes.
*/
export declare function mosSizes(generatorPerPeriod: number | Fraction, maxSize?: number, maxLength?: number): number[];
/**
* Determine if a generator / period ratio is bright.
* @param generatorPerPeriod Generator divided by period.
* @param size Size of the scale.
* @returns `true` if the generator creates large intervals when stacked.
*/
export declare function isBright(generatorPerPeriod: number | Fraction, size: number): boolean;
/**
* Flip a generator / period ratio to a bright version if necessary.
* @param generatorPerPeriod Generator divided by period.
* @param size Size of the scale.
* @returns The first parameter. Flipped if it was dark.
*/
export declare function toBrightGeneratorPerPeriod(generatorPerPeriod: number, size: number): number;
export declare function toBrightGeneratorPerPeriod(generatorPerPeriod: Fraction, size: number): Fraction;
/**
* An array of information about the MOS patterns generated from a generator / period ratio.
* @param generatorPerPeriod Generator divided by period.
* @param numberOfPeriods Number of periods per octave.
* @param maxSize Maximum size of a MOS pattern.
* @param maxLength Maximum length of the result.
* @returns An array of MOS information.
*/
export declare function mosPatterns(generatorPerPeriod: number | Fraction, numberOfPeriods?: number, maxSize?: number, maxLength?: number): MosInfo[];
/**
* Information about the scale generated from a generator / period ratio of a given size.
* @param generatorPerPeriod Generator divided by period.
* @param numberOfPeriods Number of periods per octave.
* @param size Size of the scale.
* @param generatorsDown How many generators to go downwards.
* @returns Information about the scale.
*/
export declare function scaleInfo(generatorPerPeriod: number | Fraction, size: number, generatorsDown: number, numberOfPeriods?: number): ScaleInfo;