Piano player


Now I just need the Flintstones theme, wish I could automate the notes but I tried the midi to sheet converter from GMT and that did not work out well.


Alright unitees.

Another update, this time adding more love for the drums!
You can add ‘½’ as a note to use the drum assigned to the spacebar.

Another new feature is keybinds. No longer will you need to tab in and out to play, or stop, a song. Only to change the notes or load a new one :wink:

I have been trying to make the program able to play the black keys all day. However, every attempt has been in vein so far. I will keep trying though!


Yet another update, unfortunately I couldn’t fix black keys in this update either :disappointed:


I have implemented a system that lets you add up to 16 different delays with complete customization of character and delay. This will be very helpful to make perfect timings. I hope 16 different delays will be enough :wink:

All delay settings will be saved when you save the song, so when you load a song that is using the new custom delays it will be as simple as load and play!

Old saves will work with this version, however, new saves will not work on older versions. Please load and save your saves when you use the new version to convert to the new system :slight_smile:

I am still trying to find a solution for the black keys, if anyone has any ideas, please feel free to enlighten me as this is the major issue with the program at this time.



How are you doing the key presses? Are you basically running an auto macro program? If so are you sure you doing “shift press” “key press” “shift unpress”
also try adding some delay inbwteen key presses and key unpresses as a too short delay can cause the program to ignore the second button press. If this is the issue, then the reason that it works on white keys, is because it only checks for key presses, not key lifts, meaning you can do several consecutive key presses without ever actually lifting the button.
(sorry if this is all obvious, i don’t code myself)


I tried this, but it just played them as normal notes. The weird thing is that my shift emulation worked for sprinting, but not for the piano :pensive:

The delays are all adjustable :slight_smile:


That’s weird, have you tried adding the delay to make sure it catches up with it?


The key was constantly pressed through a whole song. Not a single black key was hit.


that’s weird, are you using them as shadow presses or are you emulating an outside source


I am sending the keys to the game by emulating key presses. So it would work if the piano was case sensitive. It doesn’t appear to be as all the key sent through the program are upper case, which should, logically, trigger the black keys, but it doesn’t.


Hmm, i don’t know then, good luck tho :confused:
Try asking on a programming forum


The piano’s probably checking if Shift is being held down. When UE4 executes events based on key presses, it doesn’t check if the keys are uppercase or lowercase, so that’s the most logical conclusion for me, at least.


I tried to make the shift key appear held down though, but with no luck. It worked for sprinting, but the piano didn’t care ;_;


The weird thing is that the game recognizes the shift key being pressed. So the piano must use something else to see if the shift key is being held down. I think it would work if it was listening on “isRunning” or what they decided to call it. I just don’t know how they’re doing it for the piano.


Hello all Unitees,

I wanted to wait with this post till I could release an update, but I realize it’s been a while since I’ve updated you folks on anything.

I am currently in the process of rewriting the program to be much better code wise. If you’ve looked at the source code for the current version you will see that it’s a huge mess.

The new version, which is available on the experimental branch on GitHub btw., will focus on using the object oriented features of C# and I will focus much more on readable code and comments throughout the code. I am currently experimenting with new ways of sending the keys to the game, and the goal is to make it able to play those black keys. I’ve run into some problems with the notes currently which is delaying my progress right now.

I just wanted to update you folks and tell you that you can follow my progress on the experimental branch on GitHub right now. I hope the new focus on readability will make it more enjoyable to have a look at it :slight_smile:


Just to put my two cents into this issue, I’ve been attempting to get the black keys to work using the win32api in python, I’m getting the same issues even when attempting to emulate the shift key held down (AFAIK the keyboard event for the shift key properly emulates pressing shift rather than simply acting as a key modifier).

TL;DR: There is more than one person working on this problem.


Hey, just to be clear, I’m not a coder.
That being said, I’m still capable of understanding code and definitely good at searching for things.

I noticed for key input you’re using .NET framework namespaces.
What have you tried so far that hasn’t worked for calling shift as a modifier?


Nice to know I’m not the only one having the problem :slight_smile:
Let me know if you figure something out! And of cause, if I figure it out first I will make sure to announce it as well.

And I have also discovered that the emulation of shift IS working fine. But still the piano doesn’t seem to care :confused:

So far I’ve tried the SendKeys with the + identifier which should tell it to press shift with the key. I’ve tried to explicit tell it to press shift before the key is sent and then send it and release key. I’ve tried to use SendMessage and BroadcastMessage. No luck with that either.

Currently I’m trying to implement the interception c++ library with the C# wrapper interceptor. My problem so far is that if something goes wrong while testing it, it will lock my keyboard completely and a restart is required. Of cause I don’t want that to be the case for the users. Also, it requires the users to install a driver before using the program, which also is not a thing I want to have to force the user to do. So it’s not looking good so far unfortunately :frowning:


I’m wondering if the developers have done something funky with the shift key so that rather than reading an upper-case value, it adds another character to the front of the captured character to tell the piano code that a modified key was captured.
e.g. SHIFT+H becomes something like ~h.
It’d be nice to get their input on this topic @macdguy but I’m sure they have far more important things to do than help people make their music bots.


That is my suspicion as well.


Alright Unitees,

I present to you.

The new and improved Tower Unite Instrument Autoplayer!
This is a complete re-write of the program from scratch and offers a lot of improvements behind the scenes. The only thing you will notice as a user, is a slightly changed GUI and generally a more stable and reliable program.

However, behind the scenes there are a lot of changes, for the better!
You will notice a much easier to read code base with good documentation (in my opinion :wink:).
The program now works more like an API than the mess it was before. It consists of two parts. A core part, that is the program, and a GUI part that is what you interact with as the user.
This allow creative people to make their own custom GUIs that suits exactly their needs, granted the core supports it. The default GUI utilizes all implemented features of the core, but most of them are completely optional.

Read the OP for more information about how experimental (version 2.0+) differs from legacy (version 1.2.2), and to find the download.

I hope everyone will enjoy the new version :smile: