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`] = ` [