With all these configuration discussions, there's one more aspect I'd like to throw into the mix. We have a lot of global parameters that should really be configured by card, or by sink/source. In daemon.conf, we have these: ; default-sample-format = s16le ; default-sample-rate = 44100 ; alternate-sample-rate = 48000 ; default-sample-channels = 2 ; default-channel-map = front-left,front-right ; default-fragments = 4 ; default-fragment-size-msec = 25 ...all the above should be configurable per sink/source, rather than set globally. Maybe you can override some of them by loading a sink or source module manually, but then you lose the hotplug ability, so that's not a good option. And all the parameters to module-udev-detect: tsched=<enable system timer based scheduling mode?> tsched_buffer_size=<buffer size when using timer based scheduling> fixed_latency_range=<disable latency range changes on underrun?> ignore_dB=<ignore dB information from the device?> deferred_volume=<syncronize sw and hw volume changes in IO-thread?> use_ucm=<use ALSA UCM for card configuration?> All these are really per card or per sink/source [1]. The only reason we have these parameters in module-udev-detect, is because it's simpler to configure things from default.pa that way. That's a bit stupid IMO. When you're thinking about configuration interfaces and such, would it be possible to design in a solution to this too? :-) -- David Henningsson, Canonical Ltd. https://launchpad.net/~diwic [1] Possibly with the exception of deferred_volume, which IMO should be removed and always be enabled for ALSA. There is no real reason to turn it off, and the code would be less complex.