If you have multiple soundcards (like an onboard and an external one), you might have had the problem that the wrong one is the default soundcard. This is because the kernel module for the "wrong" card is loaded first, and if no option is passed when loading the module it gets the first available card number (0).
If they both use a different kernel module you can easily make sure the right one is the default card.
Find out what module is being used for your soundcards:
On my computer this could give
This means that the card that's currently the default soundcard (card 0) uses the snd_usb_audio module.
This is my EMI M4U, a device that's just capable of sending and receiving midi signals, not audio. So when I try to play sound I get an error. So I want the other one to be default.
You can't "reserve" card 0 for a particular module, because the options for a module are only passed when the module is loaded, and the whole problem was that the wrong module is loaded first. So, to make sure the right soundcard is default, we have to make sure the other one becomes card 1 when the module for it is loaded. This can be done by adding 1 simple line to /etc/modprobe.d/sound:
options name_of_offending_module index=1
So, in my case this would be
options snd_usb_audio index=1
Reboot and try!