Mix it up
Hot on the heels of my Phonon PulseAudio integration, here is another set of patches for kdemultimedia that adds PulseAudio support to KMix \o/
Quick screenie before a more detailed description:
What does this mean?
Well it means you will typically get three or four tabs in KMix that represent (in order), "Playback Devices", "Capture Devices", "Playback Stream" and "Capture Streams".
All the physical (and virtual) cards' output "sinks" will appear under "Playback Devices". I'm sure the names are pretty obvious so I wont explain further!
The functionality is close to pavucontrol, but with three important exceptions:
- There is no equiv of the "Configuration" tab to change "Profile" for a given card.
- There is no way to change "Ports" for a given Sink/Source (not all sound hardware supports this and it is intended to make this automatic in some cases - i.e. Headphone Jack Sensing - once it becomes reliable upstream in ALSA, but sometimes it will still be user choice (e.g. Amplified vs. Non-Amplified))
- There is no way to move an given application from one output to another.
For 1 and 2 I intend to (eventually) provide a KCM to go alongside the Multimedia tab. For 3 you can move "categories" of applications to different devices via the Phonon settings in System Settings -> Multimedia already thanks to my previous patches.
Where can I get it?
It's already in Mandriva Cooker or you can grab it from my Git repo here: http://colin.guthr.ie/git/kdemultimedia/log/?h=pulse
The master branch is upstream svn. The pulse branch is my changes. Do a clone then issue:
git diff master..pulse >mypatch.patch
or just build it directly.
Hopefully it'll be committed to trunk soon and if all goes well it can be easily backported to Mandriva 2010 too.
Caveats
Every time a new slider appears it is added to the "Shortcuts" system. This is OK for hardware devices, but for every application it can get a bit much.... I'll try and find a way to disable this (see "What's Left" below).
PulseAudio supports a pretty crazy limit on the number of channels a device or stream can have. Kmix only has support for a fairly standard set of elements. In come cases not all channels of a given device/stream may be shown in kmix due to this limitation. Stereo -> 5.1 setups should work fine tho'.
You Suck, I use PA but I want a Real Man's ALSA mixer!
Whatever floats your boat baby!
$Β KMIX_PULSEAUDIO_DISABLE=1 kmix
Knock yourself out!
What's Left?
I have two remaining issues that I do not think are show stoppers:
- Everytime a new device shows up a new Global Shortcut dialog appears. I don't think this is any different to ALSA but as I now have per-app volume control, this dialog is also shown everytime a new application plays sound. It only happens the first time a given application plays a sound, but it could still be considered annoying by some.
- If there are no capture streams running at startup the tab for that will never be displayed - likewise if the stream restore module in PA is not loaded (unlikely) the "Playback Streams" tab will never be displayed.
- There are various things that could be more efficient (e.g. refreshing the GUI for a new device or application current redraws all tabs, not just the one that has changed when a new application appears or disappears)
- Make KMix dumber! KMix is pretty clever and it tries to do some smart things like saving and restoring volume for you. But when PA is used, it knows better, so I need to ensure that KMix does not do any saving/restoring of actual volume values.
- Use application icons for per-application streams. Just for eye candy, it would be nice to use the applications own icon in the GUI.










Pingback: uberVU - social comments()
Pingback: Links 7/1/2010: GNU/Linux Gains Among Key OEMs | Boycott Novell()
Pingback: Links 7/1/2010: GNU/Linux Gains Among Key OEMs | Boycott Novell()
Pingback: Mix it some more « Colin.Guthr.ie()
Pingback: Frederik's Blog » Blog Archive » Noteworthy changes 1 January – 17 January 2010 - Random thoughts of a Linux sysadmin()
Pingback: kmix have pulseaudio support? - openSUSE Forums()