From 14508e91a9522ac59cf79827311bca0315b25792 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 2 Mar 2023 20:39:06 +0100 Subject: [PATCH 1/3] can now use _ as a replacement for space in scales --- packages/tonal/tonal.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/tonal/tonal.mjs b/packages/tonal/tonal.mjs index 206ea840..d2b59b39 100644 --- a/packages/tonal/tonal.mjs +++ b/packages/tonal/tonal.mjs @@ -146,6 +146,7 @@ export const scale = register('scale', function (scale /* : string */, pat) { let note = isObject ? hap.value.n : hap.value; const asNumber = Number(note); if (!isNaN(asNumber)) { + scale = scale.replaceAll('_', ' '); let [tonic, scaleName] = Scale.tokenize(scale); const { pc, oct = 3 } = Note.get(tonic); note = scaleOffset(pc + ' ' + scaleName, asNumber, pc + oct); From a50bd6375d479668d992c0343b4db3c62e419b9d Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 3 Mar 2023 12:37:25 +0100 Subject: [PATCH 2/3] use : instead of _ --- packages/tonal/tonal.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tonal/tonal.mjs b/packages/tonal/tonal.mjs index d2b59b39..9a6c16bb 100644 --- a/packages/tonal/tonal.mjs +++ b/packages/tonal/tonal.mjs @@ -146,7 +146,7 @@ export const scale = register('scale', function (scale /* : string */, pat) { let note = isObject ? hap.value.n : hap.value; const asNumber = Number(note); if (!isNaN(asNumber)) { - scale = scale.replaceAll('_', ' '); + scale = scale.replaceAll(':', ' '); let [tonic, scaleName] = Scale.tokenize(scale); const { pc, oct = 3 } = Note.get(tonic); note = scaleOffset(pc + ' ' + scaleName, asNumber, pc + oct); From 9a4d8036a6a91832d90e5cb236769e4a0e0daa40 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 3 Mar 2023 12:38:11 +0100 Subject: [PATCH 3/3] add test --- packages/tonal/test/tonal.test.mjs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/tonal/test/tonal.test.mjs b/packages/tonal/test/tonal.test.mjs index 7459ce3d..0db68404 100644 --- a/packages/tonal/test/tonal.test.mjs +++ b/packages/tonal/test/tonal.test.mjs @@ -30,4 +30,11 @@ describe('tonal', () => { .firstCycleValues.map((h) => h.note), ).toEqual(['C3', 'D3', 'E3']); }); + it('scale with colon', () => { + expect( + n(0, 1, 2) + .scale('C:major') + .firstCycleValues.map((h) => h.note), + ).toEqual(['C3', 'D3', 'E3']); + }); });