annotate foosdk/sdk/foobar2000/helpers/VolumeMap.cpp @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "StdAfx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "VolumeMap.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 static constexpr double powval = 2.0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 static constexpr double silence = -100.0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 double VolumeMap::SliderToDB2(double slider) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 double v = SliderToDB(slider);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 v = floor(v * 2.0 + 0.5) * 0.5;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 return v;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 double VolumeMap::SliderToDB(double slider) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 if (slider > 0) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 return pfc::max_t<double>(silence,10.0 * log(slider) / log(powval));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 return silence;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 double VolumeMap::DBToSlider(double volumeDB) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 return pfc::clip_t<double>(pow(powval,volumeDB / 10.0), 0, 1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 }