Always thought the piano on Paris was very cool, and that it should be possible to somehow play real music on it.
The idea of putting a midi file in the workshop was bugging me for some time this week, so I’ve finally spent an evening implementing it 
https://www.youtube.com/watch?v=jxz1YKyWP5Y
Cant embed videos 
It is spliced, since the instruction set is too big, but each piece is shared as a separate OW workshop code, they are in the vid’s description.
Hope you’ll enjoy :o
That’s awesome!
a project like this has been done before with this code: PWGQ1, but it broke for OW2. if you wanted to, you could try to add some of these features to your code
PWGQ1
1 Like
Oh this looks very sophisticated! Thanks for sharing!
I actually did borrow some ideas and it helped me optimize the code so that whole Sonata 3rd mov. fits into a single workshop code in my implementation aswell.
Storing notes in arrays is a good idea, so I did the same, but the encoding in that old MIDI implementation is waaay overcomplicated for what it does.
I have managed to simply store both time of the key press and actual key as a single integer by just multiplying and dividing by 100 in the code (i.e. if at 123.42
second key 57
should be pressed, I encode that as just 1234257
). Surely the timing precision is now only 2 decimal digits but that is good enough.
Since this makes decoding trivial, it is done while the music is playing, eliminating the need for separate decoding rules and load balancing waits.
Thanks again!
The updated Moonlight Sonata 3rd mov is under this code GP504
(And there is also Mozart - Rondo Alla Turca HKM7Q
)
I dont think my actual Python code is worth publishing though since its way too QnD and also it cant parse MIDI files, I dump them online and process manually in the text editor beforehand, automating it would take extra work that I am not currently willing to commit 
UPD:
Welp, I think I am done with this project 
It works so well with the optimizations described above that I just went nuts and made a bunch more songs, now that its possible to store quite a few minutes of playtime.
So this is the culmination:
https://www.youtube.com/watch?v=i0jBMR-pv98
Each song is ofc much longer than in the video.
Just in case, I’ll mirror workshop codes for them here too:
GP504
Beethoven - Moonlight Sonata 3rd mov
HKM7Q
Mozart - Rondo Alla Turca
SZ4QZ9
Queen - Bohemian Rhapsody
SAVJT
Queen - Dont Stop Me Now
MJ8GA
JoJo - Bloody Stream
4GHCHP
JoJo - Sono Chino Sadame
TTPGG
Max Coveri - Running in the 90s
ERTMY
Dave Rodgers - Deja Vu
GGQ4W
Niko - Night of Fire
21EES
The Simpsons theme
5PD5H
NGE - A Cruel Angel’s Thesis
DH7YY
Zelda BotW - Kass’s Theme
W0VF5
Cowboy Bebop - Tank