fix: duck mode with n

+ detect chord obj in rootNotes
This commit is contained in:
Felix Roos 2023-07-13 12:52:57 +02:00
parent 0fd9ac6da3
commit bbb29ebd7c
2 changed files with 8 additions and 6 deletions

View File

@ -119,12 +119,13 @@ export function renderVoicing({ chord, dictionary, offset = 0, n, mode = 'below'
const voicingMidi = voicing.map((v) => anchorMidi - targetStep + v);
let notes = voicingMidi.map((n) => midi2note(n));
if (mode === 'duck') {
notes = notes.filter((_, i) => voicingMidi[i] !== noteToMidi(anchor));
}
if (n !== undefined) {
return [scaleStep(notes, n)];
}
if (mode === 'duck') {
notes = notes.filter((n) => x2midi(n) !== noteToMidi(anchor));
}
return notes;
}

View File

@ -159,9 +159,10 @@ export const voicings = register('voicings', function (dictionary, pat) {
*/
export const rootNotes = register('rootNotes', function (octave, pat) {
return pat.fmap((value) => {
value = value.chord || value;
const root = value.match(/^([a-gA-G][b#]?).*$/)[1];
return root + octave;
const chord = value.chord || value;
const root = chord.match(/^([a-gA-G][b#]?).*$/)[1];
const note = root + octave;
return value.chord ? { note } : note;
});
});