Comment 123 for bug 963895

Revision history for this message
In , Colin Guthrie (launchpad-colin) wrote :

@diego: This is exactly how kmix's current PA integration works already! It will automatically detect PA and if it is not running, it will fall back to it's alsa mode. If PA is running it offers 90% of the functionality of pavucontol. You can adjust individual streams and even move streams from one device to another if you right click on them. You can control individual channels by splitting the channels. The two things you cannot do are: 1 change default device and 2. change profile/port configurations. For 1) I'll discuss that below, for 2) this is deliberate as such functionality is provided instead in the Audio Hardware Setup page in System Settings which is a more appropriate place than the "day to day" mixer IMHO.

While off-topic, there are also not one, but TWO command line utilities shipped with pulseaudio. One, pactl offers most of the functionality for day-to-day control (volume changes, device moves etc) and is a standard PA client. The second, pacmd, is more powerful and raw but is a very useful debugging tool. it can do more but is not a standard PA client and cannot be used over the network.

@Stephan: Not changing master when the default device in PA changes is somewhat deliberate. It's something that is fundamentally at odds with the category based defaults configurable in System Settings. There is no such thing as a "default". (i.e. Amarok and Dragon defaults could be different because the operate in different categories). So the "master" device is not an absolute. With regards to keyboard controls etc., wider questions have to be asked. If there is a stream playing should you be controlling the device that is in use rather than the "master". I've not quite worked out a universally good way of handling this, but one thing is for certain, the priority lists exposed in System Settings will be moved to PA core (they are currently implemented in a PA module) and when that happens the "default device" concept in PA itself will change too (the default is essentially implied. I've not 100% decided how I'll make the "default device" work in PA at that stage - it might become semi-intelligent: i.e. one logic could be: if nothing is playing then it's the highest priority device in the "default" priority list that becomes the "default device", if there is one stream playing then that device is default. If there are more than one stream playing and one of them is playing on the highest priory device in the "default" priority list, then it's default, but otherwise the highest priority stream's device is the default" This logic sounds more complex than it is, but I think you get my point about why I've not yet implemented some kind of trivial logic yet. I want to solve it properly.

Hope this explains things a little.