The USB specification defines three synchronization modes for isochronous endpoints: synchronous, asynchronous, and adaptive.
Nobody uses synchronous.
For playback endpoints, adapative means that the device runs at exactly the speed at which the PC decides to sends data; asynchronous means that the device tells the PC how fast it should send data (this is done through a second endpoint in the other direction).
An asynchronous device typically has three isochronous endpoints: one asynchronous output endpoint for playback samples, one input endpoint for playback frequency feedback data, and one asynchronous input endpoint for capture samples.
It might also have interrupt and bulk endpoints for mixer control, MIDI, and vendor-specific stuff.
The USB audio driver prefers an adaptive endpoint over an asynchronous endpoint, if possible. (But I don't know of any current device that actually has different endpoint types for the same output; the C-Media CM66xx chips certainly don't.)
So if you want to run multiple devices at the same speed, you cannot affect anything with software configuration; you must use devices that you know support adaptive mode.
You don't configure PulseAudio to use the ALSA default device. Instead, you configure ALSA to use pulse
as the default device:
pcm.!default pulse
ctl.!default pulse
In that way, ALSA applications that are not aware of PulseAudio will use PulseAudio via that indirection layer.
The reason you need to do this is that PulseAudio always uses ALSA as backend, and on startup opens all ALSA devices, and since most ALSA devices can't be opened multiple times, this will cause all ALSA applications that try to use an ALSA device directly when PulseAudio is running to fail.
If you have a legacy application that for some reason doesn't work, you can use pasuspender
to temporary suspend PulseAudio to run this particular application.
I was actually in a similar situation like you are now, I used ALSA for a long time, and was happy, and was then forced to switch to PulseAudio. PulseAudio has in principle a nicer, more general structure than ALSA (streams and sources/sinks), and though sometimes it has warts, one can live with it.
You can debug problems by starting pulseaudio manually and adding -v
flags, like pulseaudio -vv start
etc. Log messages go to the syslog. If you want to switch devices, pavucontrol
is an easy-to-use GUI, and if you want more direct control, you can use pacmd
or pactl
(I never figured out why there are two programs) as a commandline CLI. Use the help
argument for more details. If you prefer files, everything easily scriptable.
I also recommend to have a look at the available modules.
Best Answer
PS Off-topic: Stackexchange is broken. It won't post the one-liner answer citing "Please check the error above. But there's no error. Oh, there it is, on the side, wrapped in a ribbon, dissolving into all the static on right-hand column. Dear SE, I'm sure you can afford to test your UI a bit more."