view 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
line wrap: on
line source

#include "StdAfx.h"
#include "VolumeMap.h"

static constexpr double powval = 2.0;
static constexpr double silence = -100.0;

double VolumeMap::SliderToDB2(double slider) {
	double v = SliderToDB(slider);
	v = floor(v * 2.0 + 0.5) * 0.5;
	return v;
}

double VolumeMap::SliderToDB(double slider) {
	if (slider > 0) {
		return pfc::max_t<double>(silence,10.0 * log(slider) / log(powval));
	} else {
		return silence;
	}
}
double VolumeMap::DBToSlider(double volumeDB) {
	return pfc::clip_t<double>(pow(powval,volumeDB / 10.0), 0, 1);
}