feat: support n for voicing scales

+ simplify voicing logic
This commit is contained in:
Felix Roos 2023-07-09 22:11:40 +02:00
parent 36fa9d81fb
commit d5c0309885
3 changed files with 31 additions and 9 deletions

View file

@ -18,6 +18,7 @@ import {
note2midi,
midi2note,
voiceBelow,
scaleStep,
} from '../tonleiter.mjs';
describe('tonleiter', () => {
@ -102,6 +103,17 @@ describe('tonleiter', () => {
expect(midi2note(61)).toBe('Db4');
expect(midi2note(61, true)).toBe('C#4');
});
test('scaleStep', () => {
expect(scaleStep([60, 63, 67], 0)).toBe(60);
expect(scaleStep([60, 63, 67], 1)).toBe(63);
expect(scaleStep([60, 63, 67], 2)).toBe(67);
expect(scaleStep([60, 63, 67], 3)).toBe(72);
expect(scaleStep([60, 63, 67], 4)).toBe(75);
expect(scaleStep([60, 63, 67], -1)).toBe(55);
expect(scaleStep([60, 63, 67], -2)).toBe(51);
expect(scaleStep([60, 63, 67], -3)).toBe(48);
expect(scaleStep([60, 63, 67], -4)).toBe(43);
});
test('voiceBelow', () => {
const voicingDictionary = {
m7: [