The underlying problem here is that system components (in this case some sound library) should not be playing "Wheel of Fortune" to figure out what hardware is available. "Can I have an R? Can I have a B?" That's what the config file is doing. But if it *does* play that game, "sorry no S" should not be an error; at most it should be an info-level log message. But it shouldn't be playing that game at all: a central database of available hardware should just list the appropriate available devices. This is how block devices work, with /dev/block/ and /dev/disk/by-*/. There are a variety of system components in a good position to handle this.
But however this is managed, it is crazy for the caller of the sound library to have to worry it. This is exactly the sort of low-level concern that the sound library should be shielding the caller from.

