Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Recently, I have realized that pickup measures are difficult to handle in the current input representation for this algorithm. Then, I thought that the RomanText notation, which is already included with music21, can help mitigating this problem in the long run.
The RomanText is a notation introduced in 2019 for dealing with Roman Numeral Analysis.
It is currently integrated with music21 and it allows to parse a file like this:
into a music21 stream like this:
and a score like this one:
More specifically, it can provide a mechanism to enter
Which are the same parameters used for this project. The advantage is that a stream parsed from a RomanText file provides other parameters, such as pickup measures and time offsets for each
RomanNumeral
object.The file format is well documented, it is super easy to parse using music21, and it ensures that certain things work without extra effort (e.g.,
len(durations) == len(chord_progression)
). Also, there is a good collection of scores in this format, which would be immediately available to try out with this algorithm.This PR just adds a superficial compatibility at the entry point. If you get on board with the idea, I can suggest some ways to make it work in a nicer way (but requiring more changes).