Unicode Piano Roll (UPR)

For more detailed documentation, see:

Scores

Unicode Piano Roll code example from the documentation
musical score rendered from that code

...wherein:

Performances

Unicode Piano Roll can also express performances of scores, where each note in the score is given a timestamp and an intensity value.

In addition to those precise numbers (encoded as hex of varints of deltas), a visual overview of the note intensities is included:

Unicode Piano roll example that includes performance intensities

This makes use of codepoints from the Block Elements block of Unicode, so:

You will also, optionally, be able to include a visualization of each note's delta between when it was predicted to be played and when it was actually played.

(predicted based on the score plus the context of the performance up to that point)

Performing a score

...with evenly-distributed note intensity in the chords:

Using any of:

...you can press any key on the left half of your MIDI keyboard to play the next chord that's tee'd up in the score for the left hand.

This means that as a novice, without having to worry about pressing the correct keys on the keyboard you can:

When you trigger the playing of a chord:

...with a non-uniform distribution of note intensity in the chords:

Instead of having the entire left half of the keyboard correspond to "play the next chord for the left hand", this is a little more complicated.

You can designate a specific list of MIDI keys on the left half of the keyboard (e.g. F♯ 1 G♯ 1 A♯ 1 C 2 ) to correspond, respectively, to the first, second, third, and fourth notes of whatever chord is being played.

As soon as you press each key, the program will play the corresponding note of the chord.

When you have played each note of the chord, the program is ready to advance to the next chord for the left hand of the score.