|
1
|
1 #include "StdAfx.h"
|
|
|
2 #include "VolumeMap.h"
|
|
|
3
|
|
|
4 static constexpr double powval = 2.0;
|
|
|
5 static constexpr double silence = -100.0;
|
|
|
6
|
|
|
7 double VolumeMap::SliderToDB2(double slider) {
|
|
|
8 double v = SliderToDB(slider);
|
|
|
9 v = floor(v * 2.0 + 0.5) * 0.5;
|
|
|
10 return v;
|
|
|
11 }
|
|
|
12
|
|
|
13 double VolumeMap::SliderToDB(double slider) {
|
|
|
14 if (slider > 0) {
|
|
|
15 return pfc::max_t<double>(silence,10.0 * log(slider) / log(powval));
|
|
|
16 } else {
|
|
|
17 return silence;
|
|
|
18 }
|
|
|
19 }
|
|
|
20 double VolumeMap::DBToSlider(double volumeDB) {
|
|
|
21 return pfc::clip_t<double>(pow(powval,volumeDB / 10.0), 0, 1);
|
|
|
22 }
|