UNPKG

note-to-frequency

Version:

🎼 converts a note (scientific pitch notation) to a frequency

28 lines (19 loc) • 606 B
// @flow import validateNote from 'validate-note'; import getPosition from './lib/getPosition'; type options = { base: number, maxOctave: number }; export default (note: string, {base = 440, maxOctave = 8}: options = {}): number => { const {letter, octave, signature} = validateNote(note, { flatToSharp: true, maxOctave, octave: true }); const pos: number = getPosition(letter, octave, signature); const basePos: number = getPosition(`A`, 4); const diff: number = pos - basePos; const a: number = 2 ** (1 / 12); return Math.round((base * (a ** diff)) * 100) / 100; };