UNPKG

moment-of-symmetry

Version:

Moment of Symmetry (MOS) musical scale generation and analysis for Javascript

52 lines (51 loc) 2.6 kB
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;