Open jmorag opened 6 years ago
Work on this is somewhat underway
This is (hopefully) the final time that I'm going to refactor chords, at least for a while. In order to disallow chords with different note lengths, we are going to catch this at the syntax level.
Note attributes should be divided into core pitch and auxiliary attributes. Chords will have 2, 3, or 4 tuples of pitch attributes, but just one auxiliary attribute, which captures length, articulation, grace note status and tempo. The fingering datatype should also allow for 1-4 tuples of fingers and strings.
It's quite possible that we won't even implement slurs, since I doubt that they are super vital to fingerings, but the current type
:+:
constructor that they have in the overallMusic
type is not to my liking anyway.We should instead augment the
Prim
type to have adoesTheBowChangeDirectionHere
parameter (obviously with a less ridiculous name).Also, chords need not have a special
:=:
constructor. This is good for HSoM's parallel composition, as they support arbitrary polyphony, but for our purposes, we want to collapse things into chords, which could be as simple as