Dear rushjet,
I’m really sorry for such a late response. At the same time, I hope you will appreciate what I have for you. I know the AnswerHub is not working like that and I should have posted it yesterday when only I had a solution. But I really got into it and I treated it as my personal training project.
This was my first decision to answer a question on AnswerHub ever, so I worked on it since yesterday morning. 
It was fun, I hope you will enjoy the results too!
Please, contact me on private message, I will send you the whole project to look into. Maybe I’m not so experienced in UE as some people here, and surely I could do some mistakes, but you will be able to pick up some good ideas of a code flow within UE for the future. I’ve made that sequence puzzle in a clean way I think, you can have more pianos, differ sequences as you like, connect specific walls to open and set everything together without any knowledge of a code (it’s always important to think about level designers you’re working with, for example). The only thing I’m totally not aware of is how it all should be designed to work in multiplayer and replication. My guess was you are doing single player anyway.
Here we go into our Piano class:
Above you can see a function Play Note which is called by UI widget connected to player’s viewport (screenshot no. 5). Now, let’s look at function Check Secret Sequence which is called after every note in Play Note:
This is just a function to call after a sequence was successful, you can do whatever you want here:
Here are showed dependencies within the Piano class, because you had a problem with this. I noted in the picture that I will add something, but I started to think over and I’m not sure so maybe it’s better to shut up.
And PianoInterface, UI Widget connected to player’s viewport. It is actually connecting and disconnecting every time it gains or looses interaction signal (player leaves overlap event area of a piano). That’s why it can get “fresh” Character reference every time from a Construct Event and turn off UI mouse mode at Destruction Event. I noticed that connecting and disconnecting automatically fires those events. I hope it’s a good practice.
I hope I described everything fitting your knowledge level. If you are more advanced than I assumed, I’m sorry. I’m not an expert, really. But I saw you have some basic problems (I had them too not so long ago) and decided you will need some help. Your assets looks interesting, I hope you will continue with programming. Most importantly, don’t give up! I’m slowly building my projects too, so I know the drill, good luck mate! 