The Linux sound system is rather complicated partly due to historical reasons. It depends on how you construct you system, or which distribution you use. For example, if you wish to use a Firewire (IEEE 1394) sound device, the minimum requirement is: lilbraw1394, llibffado, libsndfile, jackd, and your application program, which you can write in one hundred lines or so in C.
Assuming you have installed ALSA in your system, you can find your sound devices and play sound as in the following manner:
Card 0 is the device on the motherboard, Card 1 is on the display with HDMI sound capability, Card 2 and Card 3 are USB sound devices on IC-7410 and Zoom G3, respectively. Two songs are played simultaneously using two different devices, namely Card 1 and Card 3.
This is a list of input devices. Card 1 does not appear here because it is an output only device.
user1@UNIX [10:36:01] [~/Music] % arecord -f cd --device=hw:2,0 IC7410.wav Recording WAVE 'IC7410.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo user1@UNIX [10:37:18] [~/Music] % aplay --device=hw:3,0 IC7410.wav Playing WAVE 'IC7410.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Record a sound from IC-7410 and play on Zoom G3, both via USB I/F.
user1@UNIX [10:38:21] [~/Music] % alsaloop --cdevice hw:2,0 --pdevice hw:3,0
This is a loopback between two devices.
In this configuration the sound from IC-7410 is distributed to both the display and Zoom G3.