This was a design discussion early on. As simple as that would be to implement, along with most global settings, 'global' is great right up until the time you don't want it to be (even if, 'global' is at the profile level). When something is global like that, you have to *constantly* create interfaces for exceptions. You've already hit upon a couple of them... Some would want the action to be performed BEFORE the actual command and not after. Some would want to exclude certain commands, some would want it to run asynchronously and others synchronously. Some would want a particular sound in particular instances. It just goes on and on. So, in this case, the onus is on the user to make that happen. What you'll want to do is first create a command that plays a sound. Then, create a dummy command with an, 'execute other command' at the top that executes that sound. Instead of hitting, 'New Command', you just duplicate the dummy command. Since the sound is in it's own command, you can change it in one place and it will be changed everywhere.
Hope that helps!