From fd61001b4d12c20327754ee08ffdff92254f4f18 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 28 Jul 2022 23:55:17 +0200 Subject: [PATCH] getFreq + midi2note helpers --- packages/core/util.mjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/core/util.mjs b/packages/core/util.mjs index 0a4866d0..6a96be87 100644 --- a/packages/core/util.mjs +++ b/packages/core/util.mjs @@ -31,6 +31,19 @@ export const fromMidi = (n) => { return Math.pow(2, (n - 69) / 12) * 440; }; +export const getFreq = (noteOrMidi) => { + if (typeof noteOrMidi === 'number') { + return fromMidi(noteOrMidi); + } + return fromMidi(toMidi(noteOrMidi)); +}; + +export const midi2note = (n) => { + const oct = Math.floor(n / 12) - 1; + const pc = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B'][n % 12]; + return pc + oct; +}; + // modulo that works with negative numbers e.g. mod(-1, 3) = 2 // const mod = (n: number, m: number): number => (n < 0 ? mod(n + m, m) : n % m); export const mod = (n, m) => ((n % m) + m) % m;