logarithmic volume control
This commit is contained in:
parent
31e95e7125
commit
4933dd62cb
5 changed files with 19 additions and 9 deletions
1
English.lproj/MainMenu.nib/classes.nib
generated
1
English.lproj/MainMenu.nib/classes.nib
generated
|
@ -79,6 +79,7 @@
|
||||||
playlistView = PlaylistView;
|
playlistView = PlaylistView;
|
||||||
positionSlider = TrackingSlider;
|
positionSlider = TrackingSlider;
|
||||||
timeField = NSTextField;
|
timeField = NSTextField;
|
||||||
|
volumeSlider = NSSlider;
|
||||||
};
|
};
|
||||||
SUPERCLASS = NSObject;
|
SUPERCLASS = NSObject;
|
||||||
},
|
},
|
||||||
|
|
8
English.lproj/MainMenu.nib/info.nib
generated
8
English.lproj/MainMenu.nib/info.nib
generated
|
@ -3,7 +3,7 @@
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>IBDocumentLocation</key>
|
<key>IBDocumentLocation</key>
|
||||||
<string>19 350 617 240 0 0 1024 746 </string>
|
<string>-18 96 617 240 0 0 1024 746 </string>
|
||||||
<key>IBEditorPositions</key>
|
<key>IBEditorPositions</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>29</key>
|
<key>29</key>
|
||||||
|
@ -28,11 +28,11 @@
|
||||||
<integer>3</integer>
|
<integer>3</integer>
|
||||||
<key>IBOpenObjects</key>
|
<key>IBOpenObjects</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>21</integer>
|
|
||||||
<integer>823</integer>
|
|
||||||
<integer>463</integer>
|
|
||||||
<integer>513</integer>
|
<integer>513</integer>
|
||||||
|
<integer>463</integer>
|
||||||
|
<integer>823</integer>
|
||||||
<integer>29</integer>
|
<integer>29</integer>
|
||||||
|
<integer>21</integer>
|
||||||
</array>
|
</array>
|
||||||
<key>IBSystem Version</key>
|
<key>IBSystem Version</key>
|
||||||
<string>8I127</string>
|
<string>8I127</string>
|
||||||
|
|
BIN
English.lproj/MainMenu.nib/keyedobjects.nib
generated
BIN
English.lproj/MainMenu.nib/keyedobjects.nib
generated
Binary file not shown.
|
@ -14,6 +14,7 @@
|
||||||
IBOutlet PlaylistView *playlistView;
|
IBOutlet PlaylistView *playlistView;
|
||||||
|
|
||||||
IBOutlet TrackingSlider *positionSlider;
|
IBOutlet TrackingSlider *positionSlider;
|
||||||
|
IBOutlet NSSlider *volumeSlider;
|
||||||
IBOutlet NSTextField *timeField;
|
IBOutlet NSTextField *timeField;
|
||||||
IBOutlet NSTextField *lengthField;
|
IBOutlet NSTextField *lengthField;
|
||||||
IBOutlet NSTextField *bitrateField;
|
IBOutlet NSTextField *bitrateField;
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
- (void)awakeFromNib
|
- (void)awakeFromNib
|
||||||
{
|
{
|
||||||
currentVolume = 100.0;
|
currentVolume = 100.0;
|
||||||
|
[volumeSlider setDoubleValue:pow(10.0, log10(0.5)/4.0)*[volumeSlider maxValue]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -157,16 +158,23 @@
|
||||||
|
|
||||||
- (IBAction)changeVolume:(id)sender
|
- (IBAction)changeVolume:(id)sender
|
||||||
{
|
{
|
||||||
currentVolume = (float)[sender doubleValue];
|
float percent;
|
||||||
|
|
||||||
//gravitates at the halfway mark
|
//Approximated log
|
||||||
float v = ([sender frame].size.width/[sender maxValue])*(currentVolume-([sender maxValue]/2.0));
|
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)
|
if (fabs(v) < 10.0)
|
||||||
{
|
{
|
||||||
currentVolume = [sender maxValue]/2.0;
|
percent = 0.5;
|
||||||
[sender setDoubleValue:currentVolume];
|
v = pow(10.0, log10(percent)/4.0);
|
||||||
|
[sender setDoubleValue:v*[sender maxValue]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentVolume = percent * [sender maxValue];
|
||||||
|
|
||||||
[soundController setVolume:currentVolume];
|
[soundController setVolume:currentVolume];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue