Borg Onion wrote:
Element used = 0, count = 7
Whenever I try to access the elements by their index though, I get errors.
It's hard to find out what you're talking about without the code, but this looks as if you've called snd_ctl_elem_list_get_used/count() and are now wondering why the other snd_ctl_elem_list_get_* functions don't work.
What's the meaning of "used" vs. "count"?
The count is the number of elements that the card has. "used" is the number of elements that you have in the list.
To actually get element IDs, you have to allocate space for them with snd_ctl_elem_list_alloc_space() (and then don't forget to call snd_ctl_elem_list_free_space() afterwards), and call snd_ctl_elem_list() again. (All this is quite undocumented.)
What are these elements used for?
Mixer controls.
How does one do device discovery?
snd_device_name_hint(), or functions like snd_ctl_pcm_next_device().
Regards, Clemens