diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib index 5e47b0c04..61c68fb47 100644 --- a/English.lproj/MainMenu.nib/classes.nib +++ b/English.lproj/MainMenu.nib/classes.nib @@ -79,6 +79,7 @@ playlistView = PlaylistView; positionSlider = TrackingSlider; timeField = NSTextField; + volumeSlider = NSSlider; }; SUPERCLASS = NSObject; }, diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib index 78ca1df22..f68d4dc31 100644 --- a/English.lproj/MainMenu.nib/info.nib +++ b/English.lproj/MainMenu.nib/info.nib @@ -3,7 +3,7 @@ IBDocumentLocation - 19 350 617 240 0 0 1024 746 + -18 96 617 240 0 0 1024 746 IBEditorPositions 29 @@ -28,11 +28,11 @@ 3 IBOpenObjects - 21 - 823 - 463 513 + 463 + 823 29 + 21 IBSystem Version 8I127 diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index b9acc2e0b..b6defd838 100644 Binary files a/English.lproj/MainMenu.nib/keyedobjects.nib and b/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/PlaybackController.h b/PlaybackController.h index 71a82e939..6870f25d7 100644 --- a/PlaybackController.h +++ b/PlaybackController.h @@ -14,6 +14,7 @@ IBOutlet PlaylistView *playlistView; IBOutlet TrackingSlider *positionSlider; + IBOutlet NSSlider *volumeSlider; IBOutlet NSTextField *timeField; IBOutlet NSTextField *lengthField; IBOutlet NSTextField *bitrateField; diff --git a/PlaybackController.m b/PlaybackController.m index 4e6cf766c..b1e56fdc4 100644 --- a/PlaybackController.m +++ b/PlaybackController.m @@ -23,6 +23,7 @@ - (void)awakeFromNib { currentVolume = 100.0; + [volumeSlider setDoubleValue:pow(10.0, log10(0.5)/4.0)*[volumeSlider maxValue]]; } @@ -157,16 +158,23 @@ - (IBAction)changeVolume:(id)sender { - currentVolume = (float)[sender doubleValue]; + float percent; - //gravitates at the halfway mark - float v = ([sender frame].size.width/[sender maxValue])*(currentVolume-([sender maxValue]/2.0)); + //Approximated log + percent = (float)[sender doubleValue]/[sender maxValue]; + percent = percent * percent * percent * percent; + + //gravitates at the 100% mark + float v = [sender frame].size.width - ([sender frame].size.width*(percent*[sender maxValue])/100.0); if (fabs(v) < 10.0) { - currentVolume = [sender maxValue]/2.0; - [sender setDoubleValue:currentVolume]; + percent = 0.5; + v = pow(10.0, log10(percent)/4.0); + [sender setDoubleValue:v*[sender maxValue]]; } + currentVolume = percent * [sender maxValue]; + [soundController setVolume:currentVolume]; }