I am currently developing a package to play theatrical sound effects, which has two play channels that I want to be able to attach to two different ALSA devices. To allow the users, who are theatre directors and are *not* technical to do this I am trying to provide a drop-down list of play devices. I can get the raw devices by parsing either the output from aplay -L, or from /proc/asound. The problem comes with devices defined in .asoundrc. I have this in .asoundrc on the development system:
pcm.speakers { type pulse device alsa_output.pci-0000_02_06.0.analog-stereo }
ctl.speakers { type pulse device alsa_output.pci-0000_02_06.0.analog-stereo }
pcm.cans { type pulse device alsa_output.pci-0000_00_1f.5.analog-stereo }
ctl.cans { type pulse device alsa_output.pci-0000_00_1f.5.analog-stereo }
This works and it is possible to play to the devices "cans" or "speakers" to get output on headphones and speakers respectively, but these names don't appear in the output from aplay.
What I need is some clean way of getting a list of the aliases. This package will have to be capable of being installed on any Linux system without needing to edit configuration files manually. However if some tool or some part of the installation process has edited a configuration file I want the aliases to appear in my list of devices.
What is the right way to do this?