diff --git a/packages/core/test/solmization.test.js b/packages/core/test/solmization.test.js index 28528aef..0c04a190 100644 --- a/packages/core/test/solmization.test.js +++ b/packages/core/test/solmization.test.js @@ -1,4 +1,3 @@ - /*test for issue 302 support alternative solmization types */ import { midi2note } from '../util.mjs'; diff --git a/packages/core/util.mjs b/packages/core/util.mjs index 6c20cbd7..1e6d9a7b 100644 --- a/packages/core/util.mjs +++ b/packages/core/util.mjs @@ -73,18 +73,53 @@ export const getFreq = (noteOrMidi) => { */ /* added code from here to solve issue 302*/ -export const midi2note = (n,notation = 'letters') => { - const solfeggio = ['Do','Reb','Re', 'Mib','Mi','Fa', 'Solb','Sol', 'Lab', 'La', 'Sib','Si']; /*solffegio notes*/ - const indian = ['Sa', 'Re', 'Ga', 'Ma', 'Pa', 'Dha', 'Ni']; /*indian musical notes, seems like they do not use flats or sharps*/ - const german = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A','Hb','H']; /*german & dutch musical notes*/ - const byzantine = ['Ni', 'Pab', 'Pa', 'Voub', 'Vou', 'Ga', 'Dib', 'Di', 'Keb', 'Ke', 'Zob','Zo']; /*byzantine musical notes*/ - const japanese = [ 'I', 'Ro', 'Ha', 'Ni' , 'Ho' , 'He', 'To']; /*traditional japanese musical notes, seems like they do not use falts or sharps*/ - const pc = notation === 'solfeggio' ? solfeggio : /*check if its is any of the following*/ - notation === 'indian' ? indian : - notation === 'german' ? german : - notation === 'byzantine' ? byzantine : - notation === 'japanese' ? japanese : - ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B']; /*if not use standard version*/ +export const midi2note = (n, notation = 'letters') => { + const solfeggio = ['Do', 'Reb', 'Re', 'Mib', 'Mi', 'Fa', 'Solb', 'Sol', 'Lab', 'La', 'Sib', 'Si']; /*solffegio notes*/ + const indian = [ + 'Sa', + 'Re', + 'Ga', + 'Ma', + 'Pa', + 'Dha', + 'Ni', + ]; /*indian musical notes, seems like they do not use flats or sharps*/ + const german = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Hb', 'H']; /*german & dutch musical notes*/ + const byzantine = [ + 'Ni', + 'Pab', + 'Pa', + 'Voub', + 'Vou', + 'Ga', + 'Dib', + 'Di', + 'Keb', + 'Ke', + 'Zob', + 'Zo', + ]; /*byzantine musical notes*/ + const japanese = [ + 'I', + 'Ro', + 'Ha', + 'Ni', + 'Ho', + 'He', + 'To', + ]; /*traditional japanese musical notes, seems like they do not use falts or sharps*/ + const pc = + notation === 'solfeggio' + ? solfeggio /*check if its is any of the following*/ + : notation === 'indian' + ? indian + : notation === 'german' + ? german + : notation === 'byzantine' + ? byzantine + : notation === 'japanese' + ? japanese + : ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B']; /*if not use standard version*/ const note = pc[n % 12]; /*calculating the midi value to the note*/ const oct = Math.floor(n / 12) - 1; return note + oct;