Forum: PC-Programmierung Alsa Lautstärke einstellen


von Hans A. (fresh)


Lesenswert?

Hi
Ich hätte mal eine Frage bezüglich alsa und dem Setzen der Lautstärke. 
Ich kann zwar von der Commandline und auch von eine C Programm heraus 
die Lautstärke setzten aber immer nur in Prozent vom Dezibel Wert. Ich 
lese zuerst den Bereich der Lautstärke für das jeweilige Element aus und 
versuche danach die dazugehörigen Werte mit der Funktion 
snd_mixer_selem_ask_playback_dB_vol zu erhalten.
Als min-Wert bekomme ich 0 und max-Wert 76 aber bei den dazugehörigen 
Werten kommt immer 76 raus. Im alsamixer bekomme ich bei 0% folgende 
Nachricht „Speaker [dB gain: -76.00, -76.00]“. Vielleicht kennt einer ja 
dieses Problem und kann mir Helfen. Danke im Vorhinein!
1
  long value = 0, min_vol=0, max_vol=0;
2
  snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
3
  cout << "MIN == " << min << endl; // = 0
4
  cout << "MAX == " << max << endl; // = 76
5
  if (snd_mixer_selem_ask_playback_dB_vol(elem, min,1, &min_vol) != 0)
6
    cout << "ERROR" << endl;
7
  cout << "min_vol == " << min_vol <<endl; // = 76
8
  if (snd_mixer_selem_ask_playback_dB_vol(elem, max,1, &max_vol) != 0)
9
    cout << "ERROR" << endl;
10
  cout << "max_vol == " << max_vol <<endl; // = 76

von Clemens L. (c_l)


Lesenswert?

Die Funktion snd_mixer_selem_ask_playback_dB_vol() wandelt einen dB-Wert 
in einen Hardware-Wert um. In die andere Richtung geht es mit _vol_dB().

(Und Prozent von dB ist auch nicht sehr natürlich; siehe 
http://git.alsa-project.org/?p=alsa-utils.git;a=blob;f=alsamixer/volume_mapping.c;hb=HEAD)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.