You are on page 1of 1

<?

php

class VolumeHandler
{
var $curvature = 2.9396385;
var $buzz_default_value = 0xA000;
var $buzz_max_value = 0xFFFE;

function ShowPatternToAmp()
{
echo "Buzz\tFactor\n\n";
for ($slider = 0; $slider <= $this->buzz_max_value; $slider += 1024)
{
$factor = $this->PatternToAmp($slider);
printf("%04X\t%.4f\n", $slider, $factor);
}
}

function ShowAmpToPattern()
{
echo "\n\nFactor\tSlider (going backward)\n\n";
for ($slider = 0; $slider <= $this->buzz_max_value; $slider += 1024)
{
$factor = $this->PatternToAmp($slider);
$slider_from_factor = $this->AmpToPattern($factor);
printf("%.4f\t%04X\n", $factor, $slider_from_factor);
}
}

function PatternToAmp($pattern_value)
{
return pow($pattern_value / $this->buzz_default_value, $this-
>curvature);
}

function AmpToPattern($factor)
{
return pow($factor, 1/$this->curvature) * $this->buzz_default_value;
}
}

header('Content-Type: text/plain');
$vol = new VolumeHandler();
printf("The minimum is at %04X\n", 0);
$zeropoint = round($vol->AmpToPattern(1.000));
$maximum = $vol->PatternToAmp($vol->buzz_max_value);
printf("The 0 dB point is approximately at %04X (%.12f)\n", $zeropoint, $vol-
>PatternToAmp($zeropoint));
printf("The maximum is factor %.7f (%+.7f dB)\n\n\n", $maximum, 20 *
log10($maximum));

$vol->ShowPatternToAmp();
$vol->ShowAmpToPattern();

?>

You might also like