feat: support n for voicing scales
+ simplify voicing logic
This commit is contained in:
parent
36fa9d81fb
commit
d5c0309885
3 changed files with 31 additions and 9 deletions
|
|
@ -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: [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue