note-to-frequency
Version:
🎼 converts a note (scientific pitch notation) to a frequency
39 lines (28 loc) • 1.2 kB
JavaScript
;
exports.__esModule = true;
var _validateNote2 = require('validate-note');
var _validateNote3 = _interopRequireDefault(_validateNote2);
var _getPosition = require('./lib/getPosition');
var _getPosition2 = _interopRequireDefault(_getPosition);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (note) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$base = _ref.base,
base = _ref$base === undefined ? 440 : _ref$base,
_ref$maxOctave = _ref.maxOctave,
maxOctave = _ref$maxOctave === undefined ? 8 : _ref$maxOctave;
var _validateNote = (0, _validateNote3.default)(note, {
flatToSharp: true,
maxOctave: maxOctave,
octave: true
}),
letter = _validateNote.letter,
octave = _validateNote.octave,
signature = _validateNote.signature;
var pos = (0, _getPosition2.default)(letter, octave, signature);
var basePos = (0, _getPosition2.default)('A', 4);
var diff = pos - basePos;
var a = Math.pow(2, 1 / 12);
return Math.round(base * Math.pow(a, diff) * 100) / 100;
};
module.exports = exports['default'];