UNPKG

@temper.sh/pitch

Version:

Utilities for working with pitch in arbitrary equal temperament spaces

18 lines (16 loc) 662 B
import { interval as intervalFn } from '@/interval/interval' import type { Interval, IntervalClass, Pitch } from '@/types' import { modEdo } from '@/utils/modEdo' export function intervalClass(interval: Interval): IntervalClass export function intervalClass(startPitch: Pitch, endPitch: Pitch): IntervalClass export function intervalClass( intervalOrStartPitch: Interval | Pitch, endPitch?: Pitch, ): number { const interval = endPitch !== undefined ? intervalFn(intervalOrStartPitch, endPitch) : intervalOrStartPitch const normalizedInterval = modEdo(Math.abs(interval)) return Math.min(normalizedInterval, 12 - normalizedInterval) }