From f2c16a06a1b6e633cdc72ff583c4a71784dde3ba Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Mon, 17 Jul 2023 23:10:13 +0200 Subject: [PATCH] fix: note2oct --- packages/core/util.mjs | 2 +- packages/tonal/test/tonleiter.test.mjs | 2 +- packages/tonal/tonleiter.mjs | 4 ++-- test/__snapshots__/tunes.test.mjs.snap | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/util.mjs b/packages/core/util.mjs index c2b1fcdb..695eaacf 100644 --- a/packages/core/util.mjs +++ b/packages/core/util.mjs @@ -11,7 +11,7 @@ export const tokenizeNote = (note) => { if (typeof note !== 'string') { return []; } - const [pc, acc = '', oct] = note.match(/^([a-gA-G])([#bsf]*)([0-9])?$/)?.slice(1) || []; + const [pc, acc = '', oct] = note.match(/^([a-gA-G])([#bsf]*)([0-9]*)$/)?.slice(1) || []; if (!pc) { return []; } diff --git a/packages/tonal/test/tonleiter.test.mjs b/packages/tonal/test/tonleiter.test.mjs index ecced7e7..6c28f37a 100644 --- a/packages/tonal/test/tonleiter.test.mjs +++ b/packages/tonal/test/tonleiter.test.mjs @@ -88,7 +88,7 @@ describe('tonleiter', () => { expect(note2oct('C5')).toBe(5); expect(note2oct('Bb3')).toBe(3); expect(note2oct('C7')).toBe(7); - //expect(note2oct('C10')).toBe(10); // <- 2 digits fail + expect(note2oct('C10')).toBe(10); }); test('midi2note', () => { expect(midi2note(60)).toBe('C4'); diff --git a/packages/tonal/tonleiter.mjs b/packages/tonal/tonleiter.mjs index d491a2d9..56c3e35b 100644 --- a/packages/tonal/tonleiter.mjs +++ b/packages/tonal/tonleiter.mjs @@ -1,4 +1,4 @@ -import { isNote, isNoteWithOctave, _mod, noteToMidi } from '@strudel.cycles/core'; +import { isNote, isNoteWithOctave, _mod, noteToMidi, tokenizeNote } from '@strudel.cycles/core'; import { Interval } from '@tonaljs/tonal'; // https://codesandbox.io/s/stateless-voicings-g2tmz0?file=/src/lib.js:0-2515 @@ -28,7 +28,7 @@ export function tokenizeChord(chord) { return match.slice(1); } export const note2pc = (note) => note.match(/^[A-G][#b]?/i)[0]; -export const note2oct = (note) => Number(note.slice(-1)); +export const note2oct = (note) => tokenizeNote(note)[2]; export const note2chroma = (note) => { return pc2chroma(note2pc(note)); diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap index 3c072ca2..3bf945e6 100644 --- a/test/__snapshots__/tunes.test.mjs.snap +++ b/test/__snapshots__/tunes.test.mjs.snap @@ -1,4 +1,4 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html +// Vitest Snapshot v1 exports[`renders tunes > tune: amensister 1`] = ` [