note-to-frequency
Version:
🎼 converts a note (scientific pitch notation) to a frequency
28 lines (19 loc) • 606 B
JavaScript
// @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;
};