Sure thing.
-
Orc1
-
Events
-
Player - Player 1 (Red) types a chat message containing -orcmusic1 as An exact match
-
Player - Player 2 (Blue) types a chat message containing -orcmusic1 as An exact match
-
Player - Player 3 (Teal) types a chat message containing -orcmusic1 as An exact match
-
// etc... for all 12 players, or however many players you have playing in your map
-
Conditions
-
Actions
-
Custom script: if GetLocalPlayer() == GetTriggerPlayer() then
-
Sound - Play orcmusic1 <gen>
-
Custom script: endif
That would be a sample trigger. (note that it is made freehand, so I don't know if it is exactly the correct triggers)
However, you get the point. What it does is it first registers the event where the player types the message. The actions is a bit more complicated though. It checks if the person who is currently running the trigger on their computer (local player) is equal to the player who typed the message. By performing this check, it will perform the actions within the "if ... endif" block only for that specific player. In this case, it will only perform it for the player who typed the message.
However, it is a bit of an advanced subject, because it can sometimes be prone to desyncs. (where players get disconnected) I wrote a tutorial on it, but it may be best to learn JASS before toying with it too much. Or you can just ask in this forum whenever you wanna do something for only one player to see/have.
Now, as for the other music files, it depends on how you want to go about it. You can either have a trigger for each music file, or you can put the music into an array and then you can just check for the -orcmusic as a substring. Afterward you would turn the character after -orcmusic (example: -orcmusic2) from a string into an integer, and then play the music in the array of that index accordingly. It is a bit confusing to explain, I'm a bit short on time so I can't give an example. However, you can still do the first method where you do all the music manually if the other is a bit harder. Good luck.