I think you could do that way : ***************************************************************** if (salsa_volume(hctl,"PCM Playback Volume",volume)) { salsa_close(hctl); return; } ***************************************************************** ***************************************************************** static int salsa_volume(snd_hctl_t * hctl,char * device,int vol) { int err; snd_ctl_elem_id_t *id; snd_ctl_elem_value_t *control; snd_ctl_elem_id_alloca(&id); snd_ctl_elem_id_set_name(id,device); snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER); snd_hctl_elem_t *elem = snd_hctl_find_elem(hctl, id); snd_ctl_elem_value_alloca(&control); snd_ctl_elem_value_set_id(control, id); if (vol>= 0 && vol<=31) { snd_ctl_elem_value_set_integer(control,1,vol); snd_ctl_elem_value_set_integer(control,0,vol); } else return -1; err = snd_hctl_elem_write(elem, control); if (err < 0) return -1; return 0; } ***************************************************************** Helped?? erumusele Odigie wrote: > Hi, > > I am new to programming with ALSA, and I would like to find out how to > change the gain (capture or playback) for my PCM device in my C code. > > I am aware I am supposed to use the mixer API, possibly functions like: > snd_mixer_selem_set_playback_volume() > > but I don't know how this function can be connected to my PCM > structure/device. > > Please whoever answers this should kindly attach some sample code, or a link > to sample code because I can't find any on line. > > Thanks a lot. > > Erumusele > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@xxxxxxxxxxxxxxxx > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel > > -- Fausto Carvalho TSE/STI/CSELE/SEVIN 61 3316-3527 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel