Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VoicingDictionary should enable mapping multiple chord symbols to one set of intervals #227

Open
felixroos opened this issue Nov 15, 2020 · 2 comments

Comments

@felixroos
Copy link
Contributor

Copied from #224 (comment)

This should be done before publish to avoid a breaking change (if we decide to do it)

Before:

export const lefthand: VoicingDictionary = {
  m7: ["3m 5P 7m 9M", "7m 9M 10m 12P"],
  /* more symbols */
}

after:

const lefthand = [
  [['m7','m9'], ["3m 5P 7m 9M", "7m 9M 10m 12P"]],
  /* more symbols */
];

This format allows mapping more than one symbol to a set of intervals. This resembles how many chord symbols are sometimes used synonymously. For example, in a jazz leadsheet, a "m7" is mostly played with a 9 (like above). If the sheet contains a "m9" instead, it is played exactly the same.

Additionally, this makes it possible to define the same symbol multiple times, which could be useful for some scenarios. VoicingDictionary.lookup should therefore filter all dictionary items by the given symbol and concat all sets that match.

@felixroos
Copy link
Contributor Author

defining shell voicings would be much shorter with this:

const shell = [
  [["m7", "m9", "m11", "m13", /* many many more*/], ["3m 7m", "7m 10m"]],
  /* more symbols */
];

@danigb
Copy link
Collaborator

danigb commented Nov 15, 2020

I think we should not export the data directly. See #230

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants