Volume Control: Fix linear 100% range control

Range is now linear on 100%, like it should be.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
CQTexperiment
Christopher Snowhill 2022-01-30 00:18:07 -08:00
parent 476c88973b
commit 808710b881
3 changed files with 4 additions and 9 deletions

View File

@ -17,11 +17,11 @@
//Input/Output values are in percents. //Input/Output values are in percents.
double logarithmicToLinear(double logarithmic, double MAX_VOLUME) double logarithmicToLinear(double logarithmic, double MAX_VOLUME)
{ {
return pow((logarithmic/MAX_VOLUME), 0.25) * 100.0; return (MAX_VOLUME == 100.0) ? logarithmic : pow((logarithmic/MAX_VOLUME), 0.25) * 100.0;
} }
double linearToLogarithmic(double linear, double MAX_VOLUME) double linearToLogarithmic(double linear, double MAX_VOLUME)
{ {
return (linear/100.0) * (linear/100.0) * (linear/100.0) * (linear/100.0) * MAX_VOLUME; return (MAX_VOLUME == 100.0) ? linear : (linear/100.0) * (linear/100.0) * (linear/100.0) * (linear/100.0) * MAX_VOLUME;
} }
//End helper volume function thingies. ONWARDS TO GLORY! //End helper volume function thingies. ONWARDS TO GLORY!

View File

@ -2119,7 +2119,7 @@ Gw
<slider horizontalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1612" customClass="VolumeSlider"> <slider horizontalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1612" customClass="VolumeSlider">
<rect key="frame" x="6" y="2" width="20" height="164"/> <rect key="frame" x="6" y="2" width="20" height="164"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<sliderCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="10" maxValue="100" doubleValue="55" tickMarkPosition="left" sliderType="linear" id="1613"/> <sliderCell key="cell" controlSize="small" continuous="YES" alignment="left" maxValue="100" doubleValue="55" tickMarkPosition="left" sliderType="linear" id="1613"/>
<connections> <connections>
<action selector="changeVolume:" target="705" id="1614"/> <action selector="changeVolume:" target="705" id="1614"/>
</connections> </connections>

View File

@ -59,13 +59,8 @@
- (void)updateToolTip - (void)updateToolTip
{ {
double value = [self doubleValue]; double value = [self doubleValue];
BOOL volumeLimit = [[[NSUserDefaultsController sharedUserDefaultsController] defaults] boolForKey:@"volumeLimit"];
double volume; double volume;
if (volumeLimit) { volume = linearToLogarithmic(value, MAX_VOLUME);
volume = (value - self.minValue) * (MAX_VOLUME / (self.maxValue - self.minValue));
} else {
volume = linearToLogarithmic(value, MAX_VOLUME);
}
NSString *text = [NSString stringWithFormat:@"%0.lf%%", volume]; NSString *text = [NSString stringWithFormat:@"%0.lf%%", volume];