Symmetra playing Moonlight Sonata 3rd mov

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 :smiley:

https://www.youtube.com/watch?v=jxz1YKyWP5Y
Cant embed videos :frowning:

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 :slight_smile: ). 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 :stuck_out_tongue: )

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 :smiley:

UPD:

Welp, I think I am done with this project :smiley:
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