For your second thought, I'm not really sure I understand the point.
Since this is a library, it can power any application that needs to understand or generate these abstractions. So to expand on some options I gave above:
- You can create a program that generates a piece in the style of a Bach cantata for example, using this library as the backbone.
- If a teacher wanted to create a tool to educate kids about scales for example, it can use this library as a backbone.
Well, this library provides the core functions for classical, Western music theory (scales, keys, intervals, etc.). So any ideas that needs to understand or generate these structures could use them. Some examples off the top of my head:
- Music theory education tools
- Music generation (and the outputs could be transformed to MIDI format for example)
- Piano chord finder
Ah yes, that is by design. This is because it supports more than a double sharp / double flat (eg triple sharp, quad sharp, etc). The enums are there just for the most common values so it's easier to read.
As for second, that's a good point! Would definitely make readability better, thanks.
For your second thought, I'm not really sure I understand the point.
Since this is a library, it can power any application that needs to understand or generate these abstractions. So to expand on some options I gave above:
- You can create a program that generates a piece in the style of a Bach cantata for example, using this library as the backbone.
- If a teacher wanted to create a tool to educate kids about scales for example, it can use this library as a backbone.