How would you expand this to support elements like attack ("velocity of the key-down" in piano speak), grace notes, timing etc. Would each of those be part of this model or another model? How would you model an arbitrary element (pedal, duration, etc...)
NOTE(
pitch,
delta_onset,
duration,
attack_velocity,
release_velocity,
...
)
More global things might be better modelled as a control event: NOTE(...)
| CONTROL_SUSTAIN(delta_onset, value)
| CONTROL_TEMPO(delta_onset, bpm)
| CONTROL_PROGRAM(delta_onset, instrument)
The harder part might actually be finding enough good training data with all of those attributes represented consistently.