← Back to context

Comment by davidajackson

1 day ago

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...)

If the attribute describes the current note, I would first try adding it as another field/head on the note event. For example:

  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.