Die Lautstärkenregelung basiert auf logarithmischen Ansatz, weil der Mensch die Schallstärke logaritmisch wahrnimmt. Im Folgenden wird eine Eingabe zwischen 0 und 100 auf einen Verstärkungswert zwischen 0 und 2 skaliert.
Bei beliebigem Maximalwert der Verstärkung kann die Gleichung kann als
(1)
gestellt werden.
Implementierung
Berechnung der Verstärkung
Der Verstärkungsfaktor ergibt sich aus der erwünschten Lautstärke. Diese Routine wird nach jedem Lautstärkenupdate durchgeführt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/*Calculate gain out of volume */ void c_volume::set_volume(float *v){ if(*v>1){ gain=pregain*(fastPow(10,(double)*v*0.01)-1); }else{ //Absolute silence gain=0; } printf("Volume:%f \t Gain: %f\n",*v,gain); } /* Main process */ float c_volume::process(float x){ return x*gain; } |
Schreibe einen Kommentar