for example, I use:
-rw-r--r-- 1 root root 1760 2010-03-12 11:32 /etc/modprobe.d/snd_usb_audio.conf
##
## NPM: force ALSA USB sound device id's s.t. cat /proc/asound/cards gives
## 0 [Headset ]: USB-Audio - Logitech USB Headset
## Logitech Logitech USB Headset at usb-0000:00:12.0-2, full speed
## 1 [SB ]: HDA-Intel - HDA ATI SB
## HDA ATI SB at 0xfb9f4000 irq 16
## 2 [M66 ]: ICE1712 - M Audio Delta 66
## M Audio Delta 66 at 0xe880, irq 21
## 3 [MT4 ]: USB-Audio - MT4
## Emagic MT4 at usb-0000:00:12.1-1, full speed
## 4 [BCD3000 ]: USB-Audio - BCD3000
## Behringer BCD3000 at usb-0000:00:13.1-2, full speed
## 5 [UM2 ]: USB-Audio - UM-2
## EDIROL UM-2 at usb-0000:00:12.1-3, full speed
## (see http://ccrma.stanford.edu/planetccrma/software/installplaneteleven.html )
## (see http://alsa.opensrc.org/index.php/MultipleUSBAudioDevices )
##
alias snd-card-0 snd-usb-audio ## --> Headset
## snd-card-1 ## --> SB
## snd-card-2 ## --> M66
alias snd-card-3 snd-usb-audio ## --> MT4
alias snd-card-4 snd-usb-audio ## --> BCD3000
alias snd-card-5 snd-usb-audio ## --> UM-2
alias snd-card-6 snd-usb-audio ## --> LPK25
##
## lsusb gives following devices w/ vid/pid's:
## Headset: Bus 003 Device 003: ID 046d:0a0c Logitech, Inc.
## MT4: Bus 004 Device 002: ID 086a:0003 Emagic Soft- und Hardware GmbH MT4
## UM-2: Bus 004 Device 005: ID 0582:0005 Roland Corp. Edirol UM-2 MIDI Adapter
## BCD3000: Bus 006 Device 005: ID 1397:00bf
## LPK25: Bus 005 Device 003: ID 09e8:0076 AKAI Professional M.I. Corp.
##
options snd-usb-audio index=0,3,4,5,6 vid=0x046d,0x086a,0x1397,0x0582,0x09e8 pid=0x0a0c,0x0003,0x00bf,0x0005,0x0076
I usually use qjackctl and have to keep changing the presets with settings which is annoying.
You can also use "Symbolic" names for ALSA devices which will make them not depend on a particular device number, e.g.
> aplay -l | grep M66
card 2: M66 [M Audio Delta 66], device 0: ICE1712 multi [ICE1712 multi]
So use "M66" as the ALSA name, for jack, e.g. '/usr/bin/jackd -dalsa -dhw:M66 ...'
Niels
PS: you may want to leave device 0 unreserved. That way when you plug in a new USB device (before you've added it to /etc/modprobe.d) it won't get assigned to card0 automatically. That's what would happen by default (a bug IMHO) and prevent whatever you had setup previously as card0 from iniitializing.
Then when jack or alsa attempts to use the card, it fails. In fact, plugging in a new unrecognized usb device, then starting up qjackctl can cause qjackctl to place some bad values in ~/.config/
rncbc.org/QjackCtl.conf and the next thing you know your audio is all horked up (even after removing the offending USB device and rebooting) until you delete the QjackCtl.conf and set it up from scratch.