As Matt said, sing is a social, not a command nor a communication channel. Without checking, it looks to me like a social that uses a qualifier. For instance, you sing to his elbow, his pencil or his sword. Because it's not a communications channel, adding hi does nothing for you. If you take that off, you'll probably see that you're singing to playername.

Since you're trying to write a command for sing, you may have to get rid of the social or find a way of moving the command up higher. Just being a command may automatically raise it above the social, I don't know that sort of thing.

On the other hand, you might want to rewrite the social to reflect the message. I don't know anything on how to do this either. Of course, the message won't go beyond the room.

Jump into aedit (action edit) and look over the sing social.
Socials can be targeted to bodyparts. I guess so you can do important things like poke someone in the eye...

When you type 'sing playername hi' the social treats it like this:
Jan wants to sing to playername's hi.
It thinks 'hi' is a bodypart, it doesn't treat it like a sentence.
To make sing a way of communicating you'd add it to do_spec_comm like ask/whispering - and remove the social.