Hey James,
I am an alsa developer, what exactly is the problem? For normal stereo playback use: "plug:front" For 5.1 playback use: "plug:surround51" For stereo capture (record) use: "plug:front" For mixer control interface use: "hw"
Robert has tweaked the code so that the user can specify what device name to use for Playback or for Capture; the default value is "plug:hw" (and he then iterates over multiple cards, adding a :n where n is the device number). He does a snd_pcm_open with STREAM_PLAYBACK on the playback device, and a STREAM_CAPTURE on the capture device.
To manage volume, I've got it using an snd_hctl_open, using the same device name as that used by either Playback or Capture (the old behavior was to always use a device of "hw").
It sounds like the volume control should just always use hw:n, where n is the device number. Does that sound right?
Cheers,
Jeremy