Doctoror Drive is correct, this can be done pretty simply with pulseaudio, but if you are using ALSA exclusively, it will be a much more difficult task.
With pulse, there are a variety of options. Both `pacmd` and `pactl` are capable of this, but it may seem overly complicated because of the significant number of options. Alternatively, you could use a community-contributed tool called `ponymix` (which is now in [community]) to very simply control both individual application streams and the system-wide server settings.
With pure ALSA, however, I am unsure if this is even possible.