- Remove obsolete Growl framework

- Update BASS and friends to latest versions
- Remove unused unmo3 library
- Add entitlements to Hardened Runtime for unsigned plugins (for
  AU MIDI playback), and for executable memory use (for the USF
  recompiler)

- TODO: Replace Growl branding with generic notification icon
CQTexperiment
Christopher Snowhill 2019-10-10 15:47:46 -07:00
parent 14c6ce431a
commit 9a47c0ebe9
18 changed files with 273 additions and 185 deletions

View File

@ -7,13 +7,12 @@
// //
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import <Growl/GrowlApplicationBridge.h>
#import "PlaybackController.h" #import "PlaybackController.h"
#import "PlaylistEntry.h" #import "PlaylistEntry.h"
@class AudioScrobbler; @class AudioScrobbler;
@interface PlaybackEventController : NSObject <NSUserNotificationCenterDelegate, GrowlApplicationBridgeDelegate> { @interface PlaybackEventController : NSObject <NSUserNotificationCenterDelegate> {
NSOperationQueue *queue; NSOperationQueue *queue;
PlaylistEntry *entry; PlaylistEntry *entry;

View File

@ -38,7 +38,6 @@ typedef enum
[NSNumber numberWithBool:YES], @"enableAudioScrobbler", [NSNumber numberWithBool:YES], @"enableAudioScrobbler",
[NSNumber numberWithBool:NO], @"automaticallyLaunchLastFM", [NSNumber numberWithBool:NO], @"automaticallyLaunchLastFM",
[NSNumber numberWithBool:YES], @"notifications.enable", [NSNumber numberWithBool:YES], @"notifications.enable",
[NSNumber numberWithBool:NO], @"notifications.use-growl",
[NSNumber numberWithBool:YES], @"notifications.itunes-style", [NSNumber numberWithBool:YES], @"notifications.itunes-style",
[NSNumber numberWithBool:YES], @"notifications.show-album-art", [NSNumber numberWithBool:YES], @"notifications.show-album-art",
nil]; nil];
@ -58,7 +57,6 @@ typedef enum
scrobbler = [[AudioScrobbler alloc] init]; scrobbler = [[AudioScrobbler alloc] init];
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
[GrowlApplicationBridge setGrowlDelegate:self];
entry = nil; entry = nil;
} }
@ -108,17 +106,7 @@ typedef enum
if ([AudioScrobbler isRunning]) return; if ([AudioScrobbler isRunning]) return;
} }
if ([defaults boolForKey:@"notifications.use-growl"]) { {
// Note: We don't want to send a growl notification on resume.
[GrowlApplicationBridge notifyWithTitle:[pe title]
description:[pe artist]
notificationName:@"Stream Changed"
iconData:[pe albumArtInternal]
priority:0
isSticky:NO
clickContext:nil];
}
else {
NSUserNotification *notif = [[NSUserNotification alloc] init]; NSUserNotification *notif = [[NSUserNotification alloc] init];
notif.title = [pe title]; notif.title = [pe title];
@ -194,16 +182,6 @@ typedef enum
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidPause:) name:CogPlaybackDidPauseNotficiation object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidPause:) name:CogPlaybackDidPauseNotficiation object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidResume:) name:CogPlaybackDidResumeNotficiation object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidResume:) name:CogPlaybackDidResumeNotficiation object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidStop:) name:CogPlaybackDidStopNotficiation object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidStop:) name:CogPlaybackDidStopNotficiation object:nil];
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.enableGrowlMist" options:0 context:nil];
[self toggleGrowlMist];
}
- (void) toggleGrowlMist
{
BOOL enableMist = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableGrowlMist"];
[GrowlApplicationBridge setShouldUseBuiltInNotifications:enableMist];
} }
- (void) observeValueForKeyPath:(NSString *)keyPath - (void) observeValueForKeyPath:(NSString *)keyPath
@ -211,9 +189,6 @@ typedef enum
change:(NSDictionary *)change change:(NSDictionary *)change
context:(void *)context context:(void *)context
{ {
if ([keyPath isEqualToString:@"values.enableGrowlMist"]) {
[self toggleGrowlMist];
}
} }
- (void)playbackDidBegin:(NSNotification *)notification - (void)playbackDidBegin:(NSNotification *)notification
@ -240,17 +215,6 @@ typedef enum
[queue addOperation:op]; [queue addOperation:op];
} }
- (NSDictionary *) registrationDictionaryForGrowl
{
NSArray *notifications = [NSArray arrayWithObjects:@"Stream Changed", nil];
return [NSDictionary dictionaryWithObjectsAndKeys:
@"Cog", GROWL_APP_NAME,
notifications, GROWL_NOTIFICATIONS_ALL,
notifications, GROWL_NOTIFICATIONS_DEFAULT,
nil];
}
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification - (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
{ {
switch (notification.activationType) switch (notification.activationType)

10
Cog.entitlements Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

View File

@ -9,8 +9,6 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
07D971E60ED1DAA800E7602E /* TagEditorController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D971E50ED1DAA800E7602E /* TagEditorController.m */; }; 07D971E60ED1DAA800E7602E /* TagEditorController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D971E50ED1DAA800E7602E /* TagEditorController.m */; };
07E18DF30D62B38400BB0E11 /* NSArray+ShuffleUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 07E18DF20D62B38400BB0E11 /* NSArray+ShuffleUtils.m */; }; 07E18DF30D62B38400BB0E11 /* NSArray+ShuffleUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 07E18DF20D62B38400BB0E11 /* NSArray+ShuffleUtils.m */; };
170680630B950158006BA573 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 170680620B950158006BA573 /* Growl.framework */; };
170680840B950164006BA573 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 170680620B950158006BA573 /* Growl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
170B55940D6E5E7B006B9E92 /* StatusImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 170B55930D6E5E7B006B9E92 /* StatusImageTransformer.m */; }; 170B55940D6E5E7B006B9E92 /* StatusImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 170B55930D6E5E7B006B9E92 /* StatusImageTransformer.m */; };
171B57DD0C091F2B00F6AFAF /* flac.icns in Resources */ = {isa = PBXBuildFile; fileRef = 171B57D90C091F2B00F6AFAF /* flac.icns */; }; 171B57DD0C091F2B00F6AFAF /* flac.icns in Resources */ = {isa = PBXBuildFile; fileRef = 171B57D90C091F2B00F6AFAF /* flac.icns */; };
171B57DE0C091F2B00F6AFAF /* m4a.icns in Resources */ = {isa = PBXBuildFile; fileRef = 171B57DA0C091F2B00F6AFAF /* m4a.icns */; }; 171B57DE0C091F2B00F6AFAF /* m4a.icns in Resources */ = {isa = PBXBuildFile; fileRef = 171B57DA0C091F2B00F6AFAF /* m4a.icns */; };
@ -753,7 +751,6 @@
83E6B7621816136F00D4576D /* Sparkle.framework in CopyFiles */, 83E6B7621816136F00D4576D /* Sparkle.framework in CopyFiles */,
838491881808593200E7332D /* NDHotKey.framework in CopyFiles */, 838491881808593200E7332D /* NDHotKey.framework in CopyFiles */,
17F561400C3BD4F30019975C /* CogAudio.framework in CopyFiles */, 17F561400C3BD4F30019975C /* CogAudio.framework in CopyFiles */,
170680840B950164006BA573 /* Growl.framework in CopyFiles */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -1004,6 +1001,7 @@
83849170180843B200E7332D /* playDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playDockBadgeColorful.png; path = Images/playDockBadgeColorful.png; sourceTree = "<group>"; }; 83849170180843B200E7332D /* playDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playDockBadgeColorful.png; path = Images/playDockBadgeColorful.png; sourceTree = "<group>"; };
83849171180843B200E7332D /* stopDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopDockBadgeColorful.png; path = Images/stopDockBadgeColorful.png; sourceTree = "<group>"; }; 83849171180843B200E7332D /* stopDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopDockBadgeColorful.png; path = Images/stopDockBadgeColorful.png; sourceTree = "<group>"; };
838491791808585C00E7332D /* NDHotKey.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NDHotKey.xcodeproj; path = Frameworks/NDHotKey/NDHotKey.xcodeproj; sourceTree = "<group>"; }; 838491791808585C00E7332D /* NDHotKey.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NDHotKey.xcodeproj; path = Frameworks/NDHotKey/NDHotKey.xcodeproj; sourceTree = "<group>"; };
83859520234FEB35004E9946 /* Cog.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Cog.entitlements; sourceTree = "<group>"; };
8399D4E01805A55000B503B1 /* XmlContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XmlContainer.m; sourceTree = "<group>"; }; 8399D4E01805A55000B503B1 /* XmlContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XmlContainer.m; sourceTree = "<group>"; };
8399D4E11805A55000B503B1 /* XmlContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XmlContainer.h; sourceTree = "<group>"; }; 8399D4E11805A55000B503B1 /* XmlContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XmlContainer.h; sourceTree = "<group>"; };
83B0669C180D5668008E3612 /* MIDI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MIDI.xcodeproj; path = Plugins/MIDI/MIDI.xcodeproj; sourceTree = "<group>"; }; 83B0669C180D5668008E3612 /* MIDI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MIDI.xcodeproj; path = Plugins/MIDI/MIDI.xcodeproj; sourceTree = "<group>"; };
@ -1079,7 +1077,6 @@
17BB5CFA0B8A86350009ACB1 /* CoreAudio.framework in Frameworks */, 17BB5CFA0B8A86350009ACB1 /* CoreAudio.framework in Frameworks */,
17BB5CFB0B8A86350009ACB1 /* CoreAudioKit.framework in Frameworks */, 17BB5CFB0B8A86350009ACB1 /* CoreAudioKit.framework in Frameworks */,
17BB5EA60B8A87850009ACB1 /* IOKit.framework in Frameworks */, 17BB5EA60B8A87850009ACB1 /* IOKit.framework in Frameworks */,
170680630B950158006BA573 /* Growl.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -1510,6 +1507,7 @@
29B97314FDCFA39411CA2CEA /* Cog */ = { 29B97314FDCFA39411CA2CEA /* Cog */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
83859520234FEB35004E9946 /* Cog.entitlements */,
080E96DDFE201D6D7F000001 /* Classes */, 080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */, 29B97317FDCFA39411CA2CEA /* Resources */,
@ -2482,7 +2480,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PROJECT_DIR}/Scripts/genversion.sh\"\nif [ \"${EXPANDED_CODE_SIGN_IDENTITY_NAME}\" != \"\" ]; then codesign --verbose --force --deep -o runtime --sign \"${EXPANDED_CODE_SIGN_IDENTITY_NAME}\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}\"; fi\n"; shellScript = "\"${PROJECT_DIR}/Scripts/genversion.sh\"\nif [ \"${EXPANDED_CODE_SIGN_IDENTITY_NAME}\" != \"\" ]; then codesign --verbose --force --deep -o runtime --sign \"${EXPANDED_CODE_SIGN_IDENTITY_NAME}\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/AutoUpdate.app\"; fi\n";
}; };
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
@ -2823,13 +2821,17 @@
C01FCF4B08A954540054247B /* Debug */ = { C01FCF4B08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = Cog.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = ThirdParty/Frameworks; FRAMEWORK_SEARCH_PATHS = (
ThirdParty/Frameworks,
"$(PROJECT_DIR)/ThirdParty/Frameworks",
);
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
@ -2860,12 +2862,16 @@
C01FCF4C08A954540054247B /* Release */ = { C01FCF4C08A954540054247B /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = Cog.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = ThirdParty/Frameworks; FRAMEWORK_SEARCH_PATHS = (
ThirdParty/Frameworks,
"$(PROJECT_DIR)/ThirdParty/Frameworks",
);
GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_ENABLE_OBJC_EXCEPTIONS = YES;
INFOPLIST_FILE = Info.plist; INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15400" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15400"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -33,11 +33,11 @@
<rect key="frame" x="0.0" y="0.0" width="500" height="131"/> <rect key="frame" x="0.0" y="0.0" width="500" height="131"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" id="28" customClass="HotKeyControl"> <textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="28" customClass="HotKeyControl">
<rect key="frame" x="91" y="42" width="82" height="19"/> <rect key="frame" x="91" y="42" width="82" height="19"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="202"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="202">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="label" size="11"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
@ -45,11 +45,11 @@
<action selector="hotKeyChanged:" target="6" id="38"/> <action selector="hotKeyChanged:" target="6" id="38"/>
</connections> </connections>
</textField> </textField>
<textField verticalHuggingPriority="750" id="2Eh-AY-mzV" customClass="HotKeyControl"> <textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2Eh-AY-mzV" customClass="HotKeyControl">
<rect key="frame" x="91" y="17" width="82" height="19"/> <rect key="frame" x="91" y="17" width="82" height="19"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="A8w-Tx-TAd"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="A8w-Tx-TAd">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="label" size="11"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
@ -57,11 +57,11 @@
<action selector="hotKeyChanged:" target="6" id="WrA-Jp-1SV"/> <action selector="hotKeyChanged:" target="6" id="WrA-Jp-1SV"/>
</connections> </connections>
</textField> </textField>
<textField verticalHuggingPriority="750" id="27" customClass="HotKeyControl"> <textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="27" customClass="HotKeyControl">
<rect key="frame" x="91" y="67" width="82" height="19"/> <rect key="frame" x="91" y="67" width="82" height="19"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="201"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="201">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="label" size="11"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
@ -69,7 +69,7 @@
<action selector="hotKeyChanged:" target="6" id="37"/> <action selector="hotKeyChanged:" target="6" id="37"/>
</connections> </connections>
</textField> </textField>
<textField verticalHuggingPriority="750" id="26"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="26">
<rect key="frame" x="42" y="44" width="44" height="17"/> <rect key="frame" x="42" y="44" width="44" height="17"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Next:" id="200"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Next:" id="200">
@ -78,7 +78,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" id="25"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="25">
<rect key="frame" x="17" y="69" width="69" height="17"/> <rect key="frame" x="17" y="69" width="69" height="17"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Previous:" id="199"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Previous:" id="199">
@ -87,7 +87,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" id="24"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="24">
<rect key="frame" x="47" y="94" width="39" height="17"/> <rect key="frame" x="47" y="94" width="39" height="17"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Play:" id="198"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Play:" id="198">
@ -96,11 +96,11 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" id="16" customClass="HotKeyControl"> <textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="16" customClass="HotKeyControl">
<rect key="frame" x="91" y="92" width="82" height="19"/> <rect key="frame" x="91" y="92" width="82" height="19"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="196"> <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="196">
<font key="font" metaFont="smallSystem"/> <font key="font" metaFont="label" size="11"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
@ -108,7 +108,7 @@
<action selector="hotKeyChanged:" target="6" id="20"/> <action selector="hotKeyChanged:" target="6" id="20"/>
</connections> </connections>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="eid-M4-6Cs"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="eid-M4-6Cs">
<rect key="frame" x="24" y="19" width="62" height="17"/> <rect key="frame" x="24" y="19" width="62" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Spam:" id="SMd-GA-jrH"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Spam:" id="SMd-GA-jrH">
@ -118,12 +118,13 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
</subviews> </subviews>
<point key="canvasLocation" x="123" y="139"/>
</customView> </customView>
<customView id="50" userLabel="UpdatesView"> <customView id="50" userLabel="UpdatesView">
<rect key="frame" x="0.0" y="0.0" width="500" height="82"/> <rect key="frame" x="0.0" y="0.0" width="500" height="82"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" id="111"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="111">
<rect key="frame" x="17" y="23" width="92" height="17"/> <rect key="frame" x="17" y="23" width="92" height="17"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Update Feed:" id="209"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Update Feed:" id="209">
@ -132,12 +133,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" id="106"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="106">
<rect key="frame" x="111" y="16" width="207" height="26"/> <rect key="frame" x="111" y="16" width="207" height="26"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" id="208"> <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" id="208">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="107"> <menu key="menu" title="OtherViews" id="107">
<items> <items>
<menuItem title="Stable" id="108"/> <menuItem title="Stable" id="108"/>
@ -153,7 +154,7 @@
<binding destination="52" name="selectedObject" keyPath="values.SUFeedURL" previousBinding="145" id="147"/> <binding destination="52" name="selectedObject" keyPath="values.SUFeedURL" previousBinding="145" id="147"/>
</connections> </connections>
</popUpButton> </popUpButton>
<button id="51"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="51">
<rect key="frame" x="18" y="46" width="299" height="18"/> <rect key="frame" x="18" y="46" width="299" height="18"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Automatically check for updates on startup" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="207"> <buttonCell key="cell" type="check" title="Automatically check for updates on startup" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="207">
@ -177,7 +178,7 @@
<rect key="frame" x="0.0" y="0.0" width="500" height="103"/> <rect key="frame" x="0.0" y="0.0" width="500" height="103"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<textField verticalHuggingPriority="750" id="65"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="65">
<rect key="frame" x="17" y="66" width="103" height="17"/> <rect key="frame" x="17" y="66" width="103" height="17"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Output Device: " id="211"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Output Device: " id="211">
@ -186,12 +187,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" id="60"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60">
<rect key="frame" x="122" y="60" width="252" height="26"/> <rect key="frame" x="122" y="60" width="252" height="26"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<popUpButtonCell key="cell" type="push" title="Item1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="62" id="210"> <popUpButtonCell key="cell" type="push" title="Item1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="62" id="210">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="61"> <menu key="menu" title="OtherViews" id="61">
<items> <items>
<menuItem title="Item1" state="on" id="62"/> <menuItem title="Item1" state="on" id="62"/>
@ -207,7 +208,7 @@
<binding destination="59" name="selectedIndex" keyPath="selectionIndex" previousBinding="71" id="72"/> <binding destination="59" name="selectedIndex" keyPath="selectionIndex" previousBinding="71" id="72"/>
</connections> </connections>
</popUpButton> </popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="zkP-2E-1Kc"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zkP-2E-1Kc">
<rect key="frame" x="17" y="29" width="103" height="17"/> <rect key="frame" x="17" y="29" width="103" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Volume Level:" id="wK4-EF-8Wa"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Volume Level:" id="wK4-EF-8Wa">
@ -216,12 +217,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" id="2v7-Ef-ekr"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2v7-Ef-ekr">
<rect key="frame" x="123" y="24" width="251" height="26"/> <rect key="frame" x="123" y="24" width="251" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="vmS-eb-zen"> <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="vmS-eb-zen">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="V8o-Xy-HUW"> <menu key="menu" title="OtherViews" id="V8o-Xy-HUW">
<items> <items>
<menuItem title="Item 1" id="oWh-lD-mFH"/> <menuItem title="Item 1" id="oWh-lD-mFH"/>
@ -274,7 +275,7 @@
<rect key="frame" x="0.0" y="0.0" width="500" height="94"/> <rect key="frame" x="0.0" y="0.0" width="500" height="94"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<button id="3gi-0d-78Z"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3gi-0d-78Z">
<rect key="frame" x="18" y="38" width="396" height="18"/> <rect key="frame" x="18" y="38" width="396" height="18"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Automatically launch Last.fm client" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="ze8-9p-SeX"> <buttonCell key="cell" type="check" title="Automatically launch Last.fm client" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="ze8-9p-SeX">
@ -285,7 +286,7 @@
<binding destination="52" name="value" keyPath="values.automaticallyLaunchLastFM" id="Ere-1R-mgh"/> <binding destination="52" name="value" keyPath="values.automaticallyLaunchLastFM" id="Ere-1R-mgh"/>
</connections> </connections>
</button> </button>
<button id="ABj-cO-MaV"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ABj-cO-MaV">
<rect key="frame" x="18" y="58" width="396" height="18"/> <rect key="frame" x="18" y="58" width="396" height="18"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Enable Last.fm support (Last.fm client must be installed)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="2N5-DH-IO6"> <buttonCell key="cell" type="check" title="Enable Last.fm support (Last.fm client must be installed)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="2N5-DH-IO6">
@ -296,7 +297,7 @@
<binding destination="52" name="value" keyPath="values.enableAudioScrobbler" id="R2p-gP-5oR"/> <binding destination="52" name="value" keyPath="values.enableAudioScrobbler" id="R2p-gP-5oR"/>
</connections> </connections>
</button> </button>
<button id="Hi4-pa-uDu"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hi4-pa-uDu">
<rect key="frame" x="18" y="18" width="389" height="18"/> <rect key="frame" x="18" y="18" width="389" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Allow Last.fm client to control media keys" bezelStyle="regularSquare" imagePosition="left" inset="2" id="4Yi-67-ivc"> <buttonCell key="cell" type="check" title="Allow Last.fm client to control media keys" bezelStyle="regularSquare" imagePosition="left" inset="2" id="4Yi-67-ivc">
@ -309,11 +310,11 @@
</button> </button>
</subviews> </subviews>
</customView> </customView>
<customView misplaced="YES" id="231" userLabel="PlaylistView"> <customView id="231" userLabel="PlaylistView">
<rect key="frame" x="0.0" y="0.0" width="500" height="139"/> <rect key="frame" x="0.0" y="0.0" width="500" height="139"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<button id="310"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="310">
<rect key="frame" x="18" y="35" width="395" height="18"/> <rect key="frame" x="18" y="35" width="395" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Read CUE sheets when adding folders to playlist" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="311"> <buttonCell key="cell" type="check" title="Read CUE sheets when adding folders to playlist" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="311">
@ -324,7 +325,7 @@
<binding destination="52" name="value" keyPath="values.readCueSheetsInFolders" id="328"/> <binding destination="52" name="value" keyPath="values.readCueSheetsInFolders" id="328"/>
</connections> </connections>
</button> </button>
<textField verticalHuggingPriority="750" id="261"> <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="261">
<rect key="frame" x="17" y="59" width="138" height="35"/> <rect key="frame" x="17" y="59" width="138" height="35"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="When opening file with ⇧ or ⌃⌘ held:" id="262"> <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="When opening file with ⇧ or ⌃⌘ held:" id="262">
@ -333,7 +334,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" id="259"> <textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="259">
<rect key="frame" x="17" y="102" width="129" height="17"/> <rect key="frame" x="17" y="102" width="129" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="When opening files:" id="260"> <textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="When opening files:" id="260">
@ -342,12 +343,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" id="253"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="253">
<rect key="frame" x="157" y="63" width="257" height="26"/> <rect key="frame" x="157" y="63" width="257" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" id="254"> <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" id="254">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="255"> <menu key="menu" title="OtherViews" id="255">
<items> <items>
<menuItem title="Item 1" id="256"/> <menuItem title="Item 1" id="256"/>
@ -363,12 +364,12 @@
<binding destination="52" name="selectedObject" keyPath="values.openingFilesAlteredBehavior" previousBinding="308" id="309"/> <binding destination="52" name="selectedObject" keyPath="values.openingFilesAlteredBehavior" previousBinding="308" id="309"/>
</connections> </connections>
</popUpButton> </popUpButton>
<popUpButton verticalHuggingPriority="750" id="247"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="247">
<rect key="frame" x="157" y="95" width="257" height="26"/> <rect key="frame" x="157" y="95" width="257" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" selectedItem="250" id="248"> <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" selectedItem="250" id="248">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="249"> <menu key="menu" title="OtherViews" id="249">
<items> <items>
<menuItem title="Item 1" state="on" id="250"/> <menuItem title="Item 1" state="on" id="250"/>
@ -384,7 +385,7 @@
<binding destination="52" name="selectedObject" keyPath="values.openingFilesBehavior" previousBinding="305" id="306"/> <binding destination="52" name="selectedObject" keyPath="values.openingFilesBehavior" previousBinding="305" id="306"/>
</connections> </connections>
</popUpButton> </popUpButton>
<button misplaced="YES" id="6QS-GF-Vnc"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6QS-GF-Vnc">
<rect key="frame" x="18" y="15" width="388" height="18"/> <rect key="frame" x="18" y="15" width="388" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Resume playback on startup" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fUg-Cg-gXa"> <buttonCell key="cell" type="check" title="Resume playback on startup" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fUg-Cg-gXa">
@ -399,10 +400,10 @@
<point key="canvasLocation" x="-78" y="-31.5"/> <point key="canvasLocation" x="-78" y="-31.5"/>
</customView> </customView>
<customView id="U4w-jw-ca5" userLabel="GrowlView"> <customView id="U4w-jw-ca5" userLabel="GrowlView">
<rect key="frame" x="0.0" y="-5" width="500" height="114"/> <rect key="frame" x="0.0" y="0.0" width="500" height="114"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<button id="njn-Xl-9k9"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="njn-Xl-9k9">
<rect key="frame" x="18" y="78" width="158" height="18"/> <rect key="frame" x="18" y="78" width="158" height="18"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Enable notifications" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="hqT-nY-NoU"> <buttonCell key="cell" type="check" title="Enable notifications" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="hqT-nY-NoU">
@ -413,8 +414,8 @@
<binding destination="52" name="value" keyPath="values.notifications.enable" id="toQ-Hx-kYp"/> <binding destination="52" name="value" keyPath="values.notifications.enable" id="toQ-Hx-kYp"/>
</connections> </connections>
</button> </button>
<button id="AIz-WH-Wqk"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="AIz-WH-Wqk">
<rect key="frame" x="18" y="38" width="131" height="18"/> <rect key="frame" x="18" y="58" width="131" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Use iTunes style" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="cOb-hQ-7K8"> <buttonCell key="cell" type="check" title="Use iTunes style" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="cOb-hQ-7K8">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -424,8 +425,8 @@
<binding destination="52" name="value" keyPath="values.notifications.itunes-style" id="jmN-ov-rRF"/> <binding destination="52" name="value" keyPath="values.notifications.itunes-style" id="jmN-ov-rRF"/>
</connections> </connections>
</button> </button>
<button id="LLn-jv-hmj"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LLn-jv-hmj">
<rect key="frame" x="18" y="18" width="131" height="18"/> <rect key="frame" x="18" y="38" width="131" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Show album art" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RGf-4D-3NW"> <buttonCell key="cell" type="check" title="Show album art" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="RGf-4D-3NW">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -435,17 +436,6 @@
<binding destination="52" name="value" keyPath="values.notifications.show-album-art" id="nrZ-bM-zQX"/> <binding destination="52" name="value" keyPath="values.notifications.show-album-art" id="nrZ-bM-zQX"/>
</connections> </connections>
</button> </button>
<button id="iyk-MU-PT8">
<rect key="frame" x="18" y="58" width="150" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Use Growl" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="GbM-Kf-xzx">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="52" name="value" keyPath="values.notifications.use-growl" id="ihr-Z4-e0x"/>
</connections>
</button>
</subviews> </subviews>
<point key="canvasLocation" x="348" y="132"/> <point key="canvasLocation" x="348" y="132"/>
</customView> </customView>
@ -453,7 +443,7 @@
<rect key="frame" x="0.0" y="0.0" width="500" height="54"/> <rect key="frame" x="0.0" y="0.0" width="500" height="54"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<button id="haX-dq-OIe"> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="haX-dq-OIe">
<rect key="frame" x="18" y="18" width="329" height="18"/> <rect key="frame" x="18" y="18" width="329" height="18"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Colorful dock icons" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="GdX-5e-NeU"> <buttonCell key="cell" type="check" title="Colorful dock icons" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="GdX-5e-NeU">
@ -470,7 +460,7 @@
<rect key="frame" x="0.0" y="0.0" width="500" height="137"/> <rect key="frame" x="0.0" y="0.0" width="500" height="137"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<button verticalHuggingPriority="750" id="SBO-WF-DVS" userLabel="Push Button - Select a SoundFont"> <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SBO-WF-DVS" userLabel="Push Button - Select a SoundFont">
<rect key="frame" x="14" y="93" width="160" height="32"/> <rect key="frame" x="14" y="93" width="160" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Select a SoundFont" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="yeL-9c-lFq" userLabel="Button Cell - Select a SoundFont"> <buttonCell key="cell" type="push" title="Select a SoundFont" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="yeL-9c-lFq" userLabel="Button Cell - Select a SoundFont">
@ -481,7 +471,7 @@
<action selector="setSoundFont:" target="i5B-ga-Atm" id="b2t-MX-dua"/> <action selector="setSoundFont:" target="i5B-ga-Atm" id="b2t-MX-dua"/>
</connections> </connections>
</button> </button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="FRC-Dh-BS2" userLabel="Text Field - Selected:"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FRC-Dh-BS2" userLabel="Text Field - Selected:">
<rect key="frame" x="173" y="102" width="61" height="17"/> <rect key="frame" x="173" y="102" width="61" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Selected:" id="KJz-qS-IcO" userLabel="Text Field Cell - Selected"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Selected:" id="KJz-qS-IcO" userLabel="Text Field Cell - Selected">
@ -490,7 +480,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="cZr-2d-6cv"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cZr-2d-6cv">
<rect key="frame" x="236" y="102" width="220" height="17"/> <rect key="frame" x="236" y="102" width="220" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label" id="ECB-P0-pve"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label" id="ECB-P0-pve">
@ -507,7 +497,7 @@
</connections> </connections>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="G86-18-hiK"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="G86-18-hiK">
<rect key="frame" x="32" y="48" width="138" height="17"/> <rect key="frame" x="32" y="48" width="138" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Resampling Quality:" id="eX0-PC-iVo"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Resampling Quality:" id="eX0-PC-iVo">
@ -516,7 +506,7 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="4uG-vW-B64"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4uG-vW-B64">
<rect key="frame" x="79" y="75" width="91" height="17"/> <rect key="frame" x="79" y="75" width="91" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="MIDI Plugin:" id="n5F-dq-NZh"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="MIDI Plugin:" id="n5F-dq-NZh">
@ -525,12 +515,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" id="8Nj-G4-5ag"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Nj-G4-5ag">
<rect key="frame" x="173" y="70" width="164" height="26"/> <rect key="frame" x="173" y="70" width="164" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="vaQ-pZ-jXy" id="xcv-1b-kTI"> <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="vaQ-pZ-jXy" id="xcv-1b-kTI">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" id="pRc-b6-sMR"> <menu key="menu" id="pRc-b6-sMR">
<items> <items>
<menuItem title="Item 1" state="on" id="vaQ-pZ-jXy"/> <menuItem title="Item 1" state="on" id="vaQ-pZ-jXy"/>
@ -546,7 +536,7 @@
<binding destination="52" name="selectedObject" keyPath="values.midi.plugin" previousBinding="6JE-ba-47Z" id="n1u-ie-870"/> <binding destination="52" name="selectedObject" keyPath="values.midi.plugin" previousBinding="6JE-ba-47Z" id="n1u-ie-870"/>
</connections> </connections>
</popUpButton> </popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="K5c-km-7Qa"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="K5c-km-7Qa">
<rect key="frame" x="50" y="23" width="120" height="17"/> <rect key="frame" x="50" y="23" width="120" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="MIDI Flavor:" id="FQF-vJ-hBx"> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="MIDI Flavor:" id="FQF-vJ-hBx">
@ -555,12 +545,12 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<popUpButton verticalHuggingPriority="750" id="1Yw-25-Gbs"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Yw-25-Gbs">
<rect key="frame" x="173" y="17" width="164" height="26"/> <rect key="frame" x="173" y="17" width="164" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" enabled="NO" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" altersStateOfSelectedItem="NO" selectedItem="XzK-h2-vIT" id="qzt-Ox-taI"> <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" enabled="NO" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" altersStateOfSelectedItem="NO" selectedItem="XzK-h2-vIT" id="qzt-Ox-taI">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" autoenablesItems="NO" id="q1g-E5-NwQ"> <menu key="menu" autoenablesItems="NO" id="q1g-E5-NwQ">
<items> <items>
<menuItem title="Item 1" id="XzK-h2-vIT"/> <menuItem title="Item 1" id="XzK-h2-vIT"/>
@ -581,12 +571,12 @@
</binding> </binding>
</connections> </connections>
</popUpButton> </popUpButton>
<popUpButton verticalHuggingPriority="750" id="E1D-Bo-ZVf"> <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="E1D-Bo-ZVf">
<rect key="frame" x="173" y="43" width="164" height="26"/> <rect key="frame" x="173" y="43" width="164" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="3Gx-cs-3B0" id="5q7-83-7V6"> <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="3Gx-cs-3B0" id="5q7-83-7V6">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/> <font key="font" metaFont="system"/>
<menu key="menu" title="OtherViews" id="HKM-FW-dhH"> <menu key="menu" title="OtherViews" id="HKM-FW-dhH">
<items> <items>
<menuItem title="Item 1" state="on" id="3Gx-cs-3B0"/> <menuItem title="Item 1" state="on" id="3Gx-cs-3B0"/>

View File

@ -354,7 +354,7 @@
TargetAttributes = { TargetAttributes = {
8D5B49AC048680CD000E48DA = { 8D5B49AC048680CD000E48DA = {
DevelopmentTeam = N6E749HJ2X; DevelopmentTeam = N6E749HJ2X;
ProvisioningStyle = Manual; ProvisioningStyle = Automatic;
}; };
}; };
}; };
@ -496,8 +496,11 @@
1DEB913B08733D840010E9CD /* Debug */ = { 1DEB913B08733D840010E9CD /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = "";
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_MODEL_TUNING = G5; GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
@ -507,6 +510,7 @@
INSTALL_PATH = "$(HOME)/Library/Bundles"; INSTALL_PATH = "$(HOME)/Library/Bundles";
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog.preferences; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog.preferences;
PRODUCT_NAME = General; PRODUCT_NAME = General;
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
WRAPPER_EXTENSION = preferencePane; WRAPPER_EXTENSION = preferencePane;
ZERO_LINK = YES; ZERO_LINK = YES;
@ -516,7 +520,10 @@
1DEB913C08733D840010E9CD /* Release */ = { 1DEB913C08733D840010E9CD /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
GCC_MODEL_TUNING = G5; GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = General_Prefix.pch; GCC_PREFIX_HEADER = General_Prefix.pch;
@ -524,6 +531,7 @@
INSTALL_PATH = "$(HOME)/Library/Bundles"; INSTALL_PATH = "$(HOME)/Library/Bundles";
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog.preferences; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog.preferences;
PRODUCT_NAME = General; PRODUCT_NAME = General;
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
WRAPPER_EXTENSION = preferencePane; WRAPPER_EXTENSION = preferencePane;
}; };

View File

@ -101,9 +101,6 @@
/* Class = "NSTextFieldCell"; title = "MIDI Flavor:"; ObjectID = "FQF-vJ-hBx"; */ /* Class = "NSTextFieldCell"; title = "MIDI Flavor:"; ObjectID = "FQF-vJ-hBx"; */
"FQF-vJ-hBx.title" = "MIDI Flavor:"; "FQF-vJ-hBx.title" = "MIDI Flavor:";
/* Class = "NSButtonCell"; title = "Use Growl"; ObjectID = "GbM-Kf-xzx"; */
"GbM-Kf-xzx.title" = "Use Growl";
/* Class = "NSButtonCell"; title = "Colorful dock icons"; ObjectID = "GdX-5e-NeU"; */ /* Class = "NSButtonCell"; title = "Colorful dock icons"; ObjectID = "GdX-5e-NeU"; */
"GdX-5e-NeU.title" = "Colorful dock icons"; "GdX-5e-NeU.title" = "Colorful dock icons";

View File

@ -101,9 +101,6 @@
/* Class = "NSTextFieldCell"; title = "MIDI Flavor:"; ObjectID = "FQF-vJ-hBx"; */ /* Class = "NSTextFieldCell"; title = "MIDI Flavor:"; ObjectID = "FQF-vJ-hBx"; */
"FQF-vJ-hBx.title" = "MIDI Flavor:"; "FQF-vJ-hBx.title" = "MIDI Flavor:";
/* Class = "NSButtonCell"; title = "Use Growl"; ObjectID = "GbM-Kf-xzx"; */
"GbM-Kf-xzx.title" = "Use Growl";
/* Class = "NSButtonCell"; title = "Colorful dock icons"; ObjectID = "GdX-5e-NeU"; */ /* Class = "NSButtonCell"; title = "Colorful dock icons"; ObjectID = "GdX-5e-NeU"; */
"GdX-5e-NeU.title" = "Colorful dock icons"; "GdX-5e-NeU.title" = "Colorful dock icons";

171
ThirdParty/BASS/bass.h vendored
View File

@ -1,6 +1,6 @@
/* /*
BASS 2.4 C/C++ header file BASS 2.4 C/C++ header file
Copyright (c) 1999-2014 Un4seen Developments Ltd. Copyright (c) 1999-2019 Un4seen Developments Ltd.
See the BASS.CHM file for more detailed documentation See the BASS.CHM file for more detailed documentation
*/ */
@ -84,7 +84,7 @@ typedef DWORD HPLUGIN; // Plugin handle
#define BASS_ERROR_NONET 32 // no internet connection could be opened #define BASS_ERROR_NONET 32 // no internet connection could be opened
#define BASS_ERROR_CREATE 33 // couldn't create the file #define BASS_ERROR_CREATE 33 // couldn't create the file
#define BASS_ERROR_NOFX 34 // effects are not available #define BASS_ERROR_NOFX 34 // effects are not available
#define BASS_ERROR_NOTAVAIL 37 // requested data is not available #define BASS_ERROR_NOTAVAIL 37 // requested data/action is not available
#define BASS_ERROR_DECODE 38 // the channel is/isn't a "decoding channel" #define BASS_ERROR_DECODE 38 // the channel is/isn't a "decoding channel"
#define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed #define BASS_ERROR_DX 39 // a sufficient DirectX version is not installed
#define BASS_ERROR_TIMEOUT 40 // connection timedout #define BASS_ERROR_TIMEOUT 40 // connection timedout
@ -117,6 +117,7 @@ typedef DWORD HPLUGIN; // Plugin handle
#define BASS_CONFIG_VERIFY 23 #define BASS_CONFIG_VERIFY 23
#define BASS_CONFIG_UPDATETHREADS 24 #define BASS_CONFIG_UPDATETHREADS 24
#define BASS_CONFIG_DEV_BUFFER 27 #define BASS_CONFIG_DEV_BUFFER 27
#define BASS_CONFIG_REC_LOOPBACK 28
#define BASS_CONFIG_VISTA_TRUEPOS 30 #define BASS_CONFIG_VISTA_TRUEPOS 30
#define BASS_CONFIG_IOS_MIXAUDIO 34 #define BASS_CONFIG_IOS_MIXAUDIO 34
#define BASS_CONFIG_DEV_DEFAULT 36 #define BASS_CONFIG_DEV_DEFAULT 36
@ -135,22 +136,36 @@ typedef DWORD HPLUGIN; // Plugin handle
#define BASS_CONFIG_DEV_NONSTOP 50 #define BASS_CONFIG_DEV_NONSTOP 50
#define BASS_CONFIG_IOS_NOCATEGORY 51 #define BASS_CONFIG_IOS_NOCATEGORY 51
#define BASS_CONFIG_VERIFY_NET 52 #define BASS_CONFIG_VERIFY_NET 52
#define BASS_CONFIG_DEV_PERIOD 53
#define BASS_CONFIG_FLOAT 54
#define BASS_CONFIG_NET_SEEK 56
#define BASS_CONFIG_AM_DISABLE 58
#define BASS_CONFIG_NET_PLAYLIST_DEPTH 59
#define BASS_CONFIG_NET_PREBUF_WAIT 60
#define BASS_CONFIG_WASAPI_PERSIST 65
#define BASS_CONFIG_REC_WASAPI 66
// BASS_SetConfigPtr options // BASS_SetConfigPtr options
#define BASS_CONFIG_NET_AGENT 16 #define BASS_CONFIG_NET_AGENT 16
#define BASS_CONFIG_NET_PROXY 17 #define BASS_CONFIG_NET_PROXY 17
#define BASS_CONFIG_IOS_NOTIFY 46 #define BASS_CONFIG_IOS_NOTIFY 46
#define BASS_CONFIG_LIBSSL 64
// BASS_Init flags // BASS_Init flags
#define BASS_DEVICE_8BITS 1 // 8 bit resolution, else 16 bit #define BASS_DEVICE_8BITS 1 // 8 bit
#define BASS_DEVICE_MONO 2 // mono, else stereo #define BASS_DEVICE_MONO 2 // mono
#define BASS_DEVICE_3D 4 // enable 3D functionality #define BASS_DEVICE_3D 4 // enable 3D functionality
#define BASS_DEVICE_16BITS 8 // limit output to 16 bit
#define BASS_DEVICE_LATENCY 0x100 // calculate device latency (BASS_INFO struct) #define BASS_DEVICE_LATENCY 0x100 // calculate device latency (BASS_INFO struct)
#define BASS_DEVICE_CPSPEAKERS 0x400 // detect speakers via Windows control panel #define BASS_DEVICE_CPSPEAKERS 0x400 // detect speakers via Windows control panel
#define BASS_DEVICE_SPEAKERS 0x800 // force enabling of speaker assignment #define BASS_DEVICE_SPEAKERS 0x800 // force enabling of speaker assignment
#define BASS_DEVICE_NOSPEAKER 0x1000 // ignore speaker arrangement #define BASS_DEVICE_NOSPEAKER 0x1000 // ignore speaker arrangement
#define BASS_DEVICE_DMIX 0x2000 // use ALSA "dmix" plugin #define BASS_DEVICE_DMIX 0x2000 // use ALSA "dmix" plugin
#define BASS_DEVICE_FREQ 0x4000 // set device sample rate #define BASS_DEVICE_FREQ 0x4000 // set device sample rate
#define BASS_DEVICE_STEREO 0x8000 // limit output to stereo
#define BASS_DEVICE_HOG 0x10000 // hog/exclusive mode
#define BASS_DEVICE_AUDIOTRACK 0x20000 // use AudioTrack output
#define BASS_DEVICE_DSOUND 0x40000 // use DirectSound output
// DirectSound interfaces (for use with BASS_GetDSoundObject) // DirectSound interfaces (for use with BASS_GetDSoundObject)
#define BASS_OBJECT_DS 1 // IDirectSound #define BASS_OBJECT_DS 1 // IDirectSound
@ -172,6 +187,7 @@ typedef struct {
#define BASS_DEVICE_ENABLED 1 #define BASS_DEVICE_ENABLED 1
#define BASS_DEVICE_DEFAULT 2 #define BASS_DEVICE_DEFAULT 2
#define BASS_DEVICE_INIT 4 #define BASS_DEVICE_INIT 4
#define BASS_DEVICE_LOOPBACK 8
#define BASS_DEVICE_TYPE_MASK 0xff000000 #define BASS_DEVICE_TYPE_MASK 0xff000000
#define BASS_DEVICE_TYPE_NETWORK 0x01000000 #define BASS_DEVICE_TYPE_NETWORK 0x01000000
@ -252,7 +268,7 @@ typedef struct {
DWORD flags; // BASS_SAMPLE_xxx flags DWORD flags; // BASS_SAMPLE_xxx flags
DWORD length; // length (in bytes) DWORD length; // length (in bytes)
DWORD max; // maximum simultaneous playbacks DWORD max; // maximum simultaneous playbacks
DWORD origres; // original resolution bits DWORD origres; // original resolution
DWORD chans; // number of channels DWORD chans; // number of channels
DWORD mingap; // minimum gap (ms) between creating channels DWORD mingap; // minimum gap (ms) between creating channels
DWORD mode3d; // BASS_3DMODE_xxx mode DWORD mode3d; // BASS_3DMODE_xxx mode
@ -266,7 +282,7 @@ typedef struct {
} BASS_SAMPLE; } BASS_SAMPLE;
#define BASS_SAMPLE_8BITS 1 // 8 bit #define BASS_SAMPLE_8BITS 1 // 8 bit
#define BASS_SAMPLE_FLOAT 256 // 32-bit floating-point #define BASS_SAMPLE_FLOAT 256 // 32 bit floating-point
#define BASS_SAMPLE_MONO 2 // mono #define BASS_SAMPLE_MONO 2 // mono
#define BASS_SAMPLE_LOOP 4 // looped #define BASS_SAMPLE_LOOP 4 // looped
#define BASS_SAMPLE_3D 8 // 3D functionality #define BASS_SAMPLE_3D 8 // 3D functionality
@ -279,13 +295,15 @@ typedef struct {
#define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only) #define BASS_SAMPLE_OVER_DIST 0x30000 // override furthest from listener (3D only)
#define BASS_STREAM_PRESCAN 0x20000 // enable pin-point seeking/length (MP3/MP2/MP1) #define BASS_STREAM_PRESCAN 0x20000 // enable pin-point seeking/length (MP3/MP2/MP1)
#define BASS_MP3_SETPOS BASS_STREAM_PRESCAN
#define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stop/ends #define BASS_STREAM_AUTOFREE 0x40000 // automatically free the stream when it stop/ends
#define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file streams #define BASS_STREAM_RESTRATE 0x80000 // restrict the download rate of internet file streams
#define BASS_STREAM_BLOCK 0x100000 // download/play internet file stream in small blocks #define BASS_STREAM_BLOCK 0x100000 // download/play internet file stream in small blocks
#define BASS_STREAM_DECODE 0x200000 // don't play the stream, only decode (BASS_ChannelGetData) #define BASS_STREAM_DECODE 0x200000 // don't play the stream, only decode (BASS_ChannelGetData)
#define BASS_STREAM_STATUS 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC #define BASS_STREAM_STATUS 0x800000 // give server status info (HTTP/ICY tags) in DOWNLOADPROC
#define BASS_MP3_IGNOREDELAY 0x200 // ignore LAME/Xing/VBRI/iTunes delay & padding info
#define BASS_MP3_SETPOS BASS_STREAM_PRESCAN
#define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT #define BASS_MUSIC_FLOAT BASS_SAMPLE_FLOAT
#define BASS_MUSIC_MONO BASS_SAMPLE_MONO #define BASS_MUSIC_MONO BASS_SAMPLE_MONO
#define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP #define BASS_MUSIC_LOOP BASS_SAMPLE_LOOP
@ -299,6 +317,7 @@ typedef struct {
#define BASS_MUSIC_RAMPS 0x400 // sensitive ramping #define BASS_MUSIC_RAMPS 0x400 // sensitive ramping
#define BASS_MUSIC_SURROUND 0x800 // surround sound #define BASS_MUSIC_SURROUND 0x800 // surround sound
#define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2) #define BASS_MUSIC_SURROUND2 0x1000 // surround sound (mode 2)
#define BASS_MUSIC_FT2PAN 0x2000 // apply FastTracker 2 panning to XM files
#define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does #define BASS_MUSIC_FT2MOD 0x2000 // play .MOD as FastTracker 2 does
#define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does #define BASS_MUSIC_PT1MOD 0x4000 // play .MOD as ProTracker 1 does
#define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing #define BASS_MUSIC_NONINTER 0x10000 // non-interpolated sample mixing
@ -351,6 +370,8 @@ typedef struct {
const char *filename; // filename const char *filename; // filename
} BASS_CHANNELINFO; } BASS_CHANNELINFO;
#define BASS_ORIGRES_FLOAT 0x10000
// BASS_CHANNELINFO types // BASS_CHANNELINFO types
#define BASS_CTYPE_SAMPLE 1 #define BASS_CTYPE_SAMPLE 1
#define BASS_CTYPE_RECORD 2 #define BASS_CTYPE_RECORD 2
@ -362,6 +383,9 @@ typedef struct {
#define BASS_CTYPE_STREAM_AIFF 0x10006 #define BASS_CTYPE_STREAM_AIFF 0x10006
#define BASS_CTYPE_STREAM_CA 0x10007 #define BASS_CTYPE_STREAM_CA 0x10007
#define BASS_CTYPE_STREAM_MF 0x10008 #define BASS_CTYPE_STREAM_MF 0x10008
#define BASS_CTYPE_STREAM_AM 0x10009
#define BASS_CTYPE_STREAM_DUMMY 0x18000
#define BASS_CTYPE_STREAM_DEVICE 0x18001
#define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec #define BASS_CTYPE_STREAM_WAV 0x40000 // WAVE flag, LOWORD=codec
#define BASS_CTYPE_STREAM_WAV_PCM 0x50001 #define BASS_CTYPE_STREAM_WAV_PCM 0x50001
#define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003 #define BASS_CTYPE_STREAM_WAV_FLOAT 0x50003
@ -479,14 +503,15 @@ handle : The stream that needs writing
buffer : Buffer to write the samples in buffer : Buffer to write the samples in
length : Number of bytes to write length : Number of bytes to write
user : The 'user' parameter value given when calling BASS_StreamCreate user : The 'user' parameter value given when calling BASS_StreamCreate
RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end the stream. */
the stream. */
#define BASS_STREAMPROC_END 0x80000000 // end of user stream flag #define BASS_STREAMPROC_END 0x80000000 // end of user stream flag
// special STREAMPROCs // special STREAMPROCs
#define STREAMPROC_DUMMY (STREAMPROC*)0 // "dummy" stream #define STREAMPROC_DUMMY (STREAMPROC*)0 // "dummy" stream
#define STREAMPROC_PUSH (STREAMPROC*)-1 // push stream #define STREAMPROC_PUSH (STREAMPROC*)-1 // push stream
#define STREAMPROC_DEVICE (STREAMPROC*)-2 // device mix stream
#define STREAMPROC_DEVICE_3D (STREAMPROC*)-3 // device 3D mix stream
// BASS_StreamCreateFileUser file systems // BASS_StreamCreateFileUser file systems
#define STREAMFILE_NOBUFFER 0 #define STREAMFILE_NOBUFFER 0
@ -520,6 +545,7 @@ typedef struct {
#define BASS_FILEPOS_SOCKET 6 #define BASS_FILEPOS_SOCKET 6
#define BASS_FILEPOS_ASYNCBUF 7 #define BASS_FILEPOS_ASYNCBUF 7
#define BASS_FILEPOS_SIZE 8 #define BASS_FILEPOS_SIZE 8
#define BASS_FILEPOS_BUFFERING 9
typedef void (CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, void *user); typedef void (CALLBACK DOWNLOADPROC)(const void *buffer, DWORD length, void *user);
/* Internet stream download callback function. /* Internet stream download callback function.
@ -540,8 +566,10 @@ user : The 'user' parameter value given when calling BASS_StreamCreateURL */
#define BASS_SYNC_MUSICINST 1 #define BASS_SYNC_MUSICINST 1
#define BASS_SYNC_MUSICFX 3 #define BASS_SYNC_MUSICFX 3
#define BASS_SYNC_OGG_CHANGE 12 #define BASS_SYNC_OGG_CHANGE 12
#define BASS_SYNC_MIXTIME 0x40000000 // FLAG: sync at mixtime, else at playtime #define BASS_SYNC_DEV_FAIL 14
#define BASS_SYNC_ONETIME 0x80000000 // FLAG: sync only once, else continuously #define BASS_SYNC_DEV_FORMAT 15
#define BASS_SYNC_MIXTIME 0x40000000 // flag: sync at mixtime, else at playtime
#define BASS_SYNC_ONETIME 0x80000000 // flag: sync only once, else continuously
typedef void (CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void *user); typedef void (CALLBACK SYNCPROC)(HSYNC handle, DWORD channel, DWORD data, void *user);
/* Sync callback function. NOTE: a sync callback function should be very /* Sync callback function. NOTE: a sync callback function should be very
@ -572,10 +600,11 @@ user : The 'user' parameter value given when calling BASS_RecordStart
RETURN : TRUE = continue recording, FALSE = stop */ RETURN : TRUE = continue recording, FALSE = stop */
// BASS_ChannelIsActive return values // BASS_ChannelIsActive return values
#define BASS_ACTIVE_STOPPED 0 #define BASS_ACTIVE_STOPPED 0
#define BASS_ACTIVE_PLAYING 1 #define BASS_ACTIVE_PLAYING 1
#define BASS_ACTIVE_STALLED 2 #define BASS_ACTIVE_STALLED 2
#define BASS_ACTIVE_PAUSED 3 #define BASS_ACTIVE_PAUSED 3
#define BASS_ACTIVE_PAUSED_DEVICE 4
// Channel attributes // Channel attributes
#define BASS_ATTRIB_FREQ 1 #define BASS_ATTRIB_FREQ 1
@ -588,6 +617,9 @@ RETURN : TRUE = continue recording, FALSE = stop */
#define BASS_ATTRIB_SRC 8 #define BASS_ATTRIB_SRC 8
#define BASS_ATTRIB_NET_RESUME 9 #define BASS_ATTRIB_NET_RESUME 9
#define BASS_ATTRIB_SCANINFO 10 #define BASS_ATTRIB_SCANINFO 10
#define BASS_ATTRIB_NORAMP 11
#define BASS_ATTRIB_BITRATE 12
#define BASS_ATTRIB_BUFFER 13
#define BASS_ATTRIB_MUSIC_AMPLIFY 0x100 #define BASS_ATTRIB_MUSIC_AMPLIFY 0x100
#define BASS_ATTRIB_MUSIC_PANSEP 0x101 #define BASS_ATTRIB_MUSIC_PANSEP 0x101
#define BASS_ATTRIB_MUSIC_PSCALER 0x102 #define BASS_ATTRIB_MUSIC_PSCALER 0x102
@ -598,6 +630,9 @@ RETURN : TRUE = continue recording, FALSE = stop */
#define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel # #define BASS_ATTRIB_MUSIC_VOL_CHAN 0x200 // + channel #
#define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument # #define BASS_ATTRIB_MUSIC_VOL_INST 0x300 // + instrument #
// BASS_ChannelSlideAttribute flags
#define BASS_SLIDE_LOG 0x1000000
// BASS_ChannelGetData flags // BASS_ChannelGetData flags
#define BASS_DATA_AVAILABLE 0 // query how much data is buffered #define BASS_DATA_AVAILABLE 0 // query how much data is buffered
#define BASS_DATA_FIXED 0x20000000 // flag: return 8.24 fixed-point data #define BASS_DATA_FIXED 0x20000000 // flag: return 8.24 fixed-point data
@ -609,15 +644,18 @@ RETURN : TRUE = continue recording, FALSE = stop */
#define BASS_DATA_FFT4096 0x80000004 // 4096 FFT #define BASS_DATA_FFT4096 0x80000004 // 4096 FFT
#define BASS_DATA_FFT8192 0x80000005 // 8192 FFT #define BASS_DATA_FFT8192 0x80000005 // 8192 FFT
#define BASS_DATA_FFT16384 0x80000006 // 16384 FFT #define BASS_DATA_FFT16384 0x80000006 // 16384 FFT
#define BASS_DATA_FFT32768 0x80000007 // 32768 FFT
#define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined #define BASS_DATA_FFT_INDIVIDUAL 0x10 // FFT flag: FFT for each channel, else all combined
#define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window #define BASS_DATA_FFT_NOWINDOW 0x20 // FFT flag: no Hanning window
#define BASS_DATA_FFT_REMOVEDC 0x40 // FFT flag: pre-remove DC bias #define BASS_DATA_FFT_REMOVEDC 0x40 // FFT flag: pre-remove DC bias
#define BASS_DATA_FFT_COMPLEX 0x80 // FFT flag: return complex data #define BASS_DATA_FFT_COMPLEX 0x80 // FFT flag: return complex data
#define BASS_DATA_FFT_NYQUIST 0x100 // FFT flag: return extra Nyquist value
// BASS_ChannelGetLevelEx flags // BASS_ChannelGetLevelEx flags
#define BASS_LEVEL_MONO 1 #define BASS_LEVEL_MONO 1
#define BASS_LEVEL_STEREO 2 #define BASS_LEVEL_STEREO 2
#define BASS_LEVEL_RMS 4 #define BASS_LEVEL_RMS 4
#define BASS_LEVEL_VOLPAN 8
// BASS_ChannelGetTags types : what's returned // BASS_ChannelGetTags types : what's returned
#define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure #define BASS_TAG_ID3 0 // ID3v1 tags : TAG_ID3 structure
@ -628,19 +666,25 @@ RETURN : TRUE = continue recording, FALSE = stop */
#define BASS_TAG_META 5 // ICY metadata : ANSI string #define BASS_TAG_META 5 // ICY metadata : ANSI string
#define BASS_TAG_APE 6 // APE tags : series of null-terminated UTF-8 strings #define BASS_TAG_APE 6 // APE tags : series of null-terminated UTF-8 strings
#define BASS_TAG_MP4 7 // MP4/iTunes metadata : series of null-terminated UTF-8 strings #define BASS_TAG_MP4 7 // MP4/iTunes metadata : series of null-terminated UTF-8 strings
#define BASS_TAG_WMA 8 // WMA tags : series of null-terminated UTF-8 strings
#define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string #define BASS_TAG_VENDOR 9 // OGG encoder : UTF-8 string
#define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string #define BASS_TAG_LYRICS3 10 // Lyric3v2 tag : ASCII string
#define BASS_TAG_CA_CODEC 11 // CoreAudio codec info : TAG_CA_CODEC structure #define BASS_TAG_CA_CODEC 11 // CoreAudio codec info : TAG_CA_CODEC structure
#define BASS_TAG_MF 13 // Media Foundation tags : series of null-terminated UTF-8 strings #define BASS_TAG_MF 13 // Media Foundation tags : series of null-terminated UTF-8 strings
#define BASS_TAG_WAVEFORMAT 14 // WAVE format : WAVEFORMATEEX structure #define BASS_TAG_WAVEFORMAT 14 // WAVE format : WAVEFORMATEEX structure
#define BASS_TAG_AM_MIME 15 // Android Media MIME type : ASCII string
#define BASS_TAG_AM_NAME 16 // Android Media codec name : ASCII string
#define BASS_TAG_RIFF_INFO 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings #define BASS_TAG_RIFF_INFO 0x100 // RIFF "INFO" tags : series of null-terminated ANSI strings
#define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF "bext" tags : TAG_BEXT structure #define BASS_TAG_RIFF_BEXT 0x101 // RIFF/BWF "bext" tags : TAG_BEXT structure
#define BASS_TAG_RIFF_CART 0x102 // RIFF/BWF "cart" tags : TAG_CART structure #define BASS_TAG_RIFF_CART 0x102 // RIFF/BWF "cart" tags : TAG_CART structure
#define BASS_TAG_RIFF_DISP 0x103 // RIFF "DISP" text tag : ANSI string #define BASS_TAG_RIFF_DISP 0x103 // RIFF "DISP" text tag : ANSI string
#define BASS_TAG_RIFF_CUE 0x104 // RIFF "cue " chunk : TAG_CUE structure
#define BASS_TAG_RIFF_SMPL 0x105 // RIFF "smpl" chunk : TAG_SMPL structure
#define BASS_TAG_APE_BINARY 0x1000 // + index #, binary APE tag : TAG_APE_BINARY structure #define BASS_TAG_APE_BINARY 0x1000 // + index #, binary APE tag : TAG_APE_BINARY structure
#define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string #define BASS_TAG_MUSIC_NAME 0x10000 // MOD music name : ANSI string
#define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string #define BASS_TAG_MUSIC_MESSAGE 0x10001 // MOD message : ANSI string
#define BASS_TAG_MUSIC_ORDERS 0x10002 // MOD order list : BYTE array of pattern numbers #define BASS_TAG_MUSIC_ORDERS 0x10002 // MOD order list : BYTE array of pattern numbers
#define BASS_TAG_MUSIC_AUTH 0x10003 // MOD author : UTF-8 string
#define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string #define BASS_TAG_MUSIC_INST 0x10100 // + instrument #, MOD instrument name : ANSI string
#define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string #define BASS_TAG_MUSIC_SAMPLE 0x10300 // + sample #, MOD sample name : ANSI string
@ -724,6 +768,60 @@ typedef struct
char TagText[1]; // free form text for scripts or tags char TagText[1]; // free form text for scripts or tags
#endif #endif
} TAG_CART; } TAG_CART;
// RIFF "cue " tag structures
typedef struct
{
DWORD dwName;
DWORD dwPosition;
DWORD fccChunk;
DWORD dwChunkStart;
DWORD dwBlockStart;
DWORD dwSampleOffset;
} TAG_CUE_POINT;
typedef struct
{
DWORD dwCuePoints;
#if defined(__GNUC__) && __GNUC__<3
TAG_CUE_POINT CuePoints[0];
#elif 1 // change to 0 if compiler fails the following line
TAG_CUE_POINT CuePoints[];
#else
TAG_CUE_POINT CuePoints[1];
#endif
} TAG_CUE;
// RIFF "smpl" tag structures
typedef struct
{
DWORD dwIdentifier;
DWORD dwType;
DWORD dwStart;
DWORD dwEnd;
DWORD dwFraction;
DWORD dwPlayCount;
} TAG_SMPL_LOOP;
typedef struct
{
DWORD dwManufacturer;
DWORD dwProduct;
DWORD dwSamplePeriod;
DWORD dwMIDIUnityNote;
DWORD dwMIDIPitchFraction;
DWORD dwSMPTEFormat;
DWORD dwSMPTEOffset;
DWORD cSampleLoops;
DWORD cbSamplerData;
#if defined(__GNUC__) && __GNUC__<3
TAG_SMPL_LOOP SampleLoops[0];
#elif 1 // change to 0 if compiler fails the following line
TAG_SMPL_LOOP SampleLoops[];
#else
TAG_SMPL_LOOP SampleLoops[1];
#endif
} TAG_SMPL;
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(pop) #pragma warning(pop)
#endif #endif
@ -756,11 +854,16 @@ typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
#define BASS_POS_BYTE 0 // byte position #define BASS_POS_BYTE 0 // byte position
#define BASS_POS_MUSIC_ORDER 1 // order.row position, MAKELONG(order,row) #define BASS_POS_MUSIC_ORDER 1 // order.row position, MAKELONG(order,row)
#define BASS_POS_OGG 3 // OGG bitstream number #define BASS_POS_OGG 3 // OGG bitstream number
#define BASS_POS_RESET 0x2000000 // flag: reset user file buffers
#define BASS_POS_RELATIVE 0x4000000 // flag: seek relative to the current position
#define BASS_POS_INEXACT 0x8000000 // flag: allow seeking to inexact position #define BASS_POS_INEXACT 0x8000000 // flag: allow seeking to inexact position
#define BASS_POS_DECODE 0x10000000 // flag: get the decoding (not playing) position #define BASS_POS_DECODE 0x10000000 // flag: get the decoding (not playing) position
#define BASS_POS_DECODETO 0x20000000 // flag: decode to the position instead of seeking #define BASS_POS_DECODETO 0x20000000 // flag: decode to the position instead of seeking
#define BASS_POS_SCAN 0x40000000 // flag: scan to the position #define BASS_POS_SCAN 0x40000000 // flag: scan to the position
// BASS_ChannelSetDevice/GetDevice option
#define BASS_NODEVICE 0x20000
// BASS_RecordSetInput flags // BASS_RecordSetInput flags
#define BASS_INPUT_OFF 0x10000 #define BASS_INPUT_OFF 0x10000
#define BASS_INPUT_ON 0x20000 #define BASS_INPUT_ON 0x20000
@ -778,19 +881,17 @@ typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
#define BASS_INPUT_TYPE_AUX 0x09000000 #define BASS_INPUT_TYPE_AUX 0x09000000
#define BASS_INPUT_TYPE_ANALOG 0x0a000000 #define BASS_INPUT_TYPE_ANALOG 0x0a000000
// DX8 effect types, use with BASS_ChannelSetFX // BASS_ChannelSetFX effect types
enum #define BASS_FX_DX8_CHORUS 0
{ #define BASS_FX_DX8_COMPRESSOR 1
BASS_FX_DX8_CHORUS, #define BASS_FX_DX8_DISTORTION 2
BASS_FX_DX8_COMPRESSOR, #define BASS_FX_DX8_ECHO 3
BASS_FX_DX8_DISTORTION, #define BASS_FX_DX8_FLANGER 4
BASS_FX_DX8_ECHO, #define BASS_FX_DX8_GARGLE 5
BASS_FX_DX8_FLANGER, #define BASS_FX_DX8_I3DL2REVERB 6
BASS_FX_DX8_GARGLE, #define BASS_FX_DX8_PARAMEQ 7
BASS_FX_DX8_I3DL2REVERB, #define BASS_FX_DX8_REVERB 8
BASS_FX_DX8_PARAMEQ, #define BASS_FX_VOLUME 9
BASS_FX_DX8_REVERB
};
typedef struct { typedef struct {
float fWetDryMix; float fWetDryMix;
@ -876,6 +977,13 @@ typedef struct {
#define BASS_DX8_PHASE_90 3 #define BASS_DX8_PHASE_90 3
#define BASS_DX8_PHASE_180 4 #define BASS_DX8_PHASE_180 4
typedef struct {
float fTarget;
float fCurrent;
float fTime;
DWORD lCurve;
} BASS_FX_VOLUME_PARAM;
typedef void (CALLBACK IOSNOTIFYPROC)(DWORD status); typedef void (CALLBACK IOSNOTIFYPROC)(DWORD status);
/* iOS notification callback function. /* iOS notification callback function.
status : The notification (BASS_IOSNOTIFY_xxx) */ status : The notification (BASS_IOSNOTIFY_xxx) */
@ -907,6 +1015,7 @@ float BASSDEF(BASS_GetCPU)();
BOOL BASSDEF(BASS_Start)(); BOOL BASSDEF(BASS_Start)();
BOOL BASSDEF(BASS_Stop)(); BOOL BASSDEF(BASS_Stop)();
BOOL BASSDEF(BASS_Pause)(); BOOL BASSDEF(BASS_Pause)();
BOOL BASSDEF(BASS_IsStarted)();
BOOL BASSDEF(BASS_SetVolume)(float volume); BOOL BASSDEF(BASS_SetVolume)(float volume);
float BASSDEF(BASS_GetVolume)(); float BASSDEF(BASS_GetVolume)();
@ -999,6 +1108,7 @@ BOOL BASSDEF(BASS_ChannelRemoveFX)(DWORD handle, HFX fx);
BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *params); BOOL BASSDEF(BASS_FXSetParameters)(HFX handle, const void *params);
BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *params); BOOL BASSDEF(BASS_FXGetParameters)(HFX handle, void *params);
BOOL BASSDEF(BASS_FXReset)(HFX handle); BOOL BASSDEF(BASS_FXReset)(HFX handle);
BOOL BASSDEF(BASS_FXSetPriority)(HFX handle, int priority);
#ifdef __cplusplus #ifdef __cplusplus
} }
@ -1028,6 +1138,11 @@ static inline HSTREAM BASS_StreamCreateURL(const WCHAR *url, DWORD offset, DWORD
{ {
return BASS_StreamCreateURL((const char*)url, offset, flags|BASS_UNICODE, proc, user); return BASS_StreamCreateURL((const char*)url, offset, flags|BASS_UNICODE, proc, user);
} }
static inline BOOL BASS_SetConfigPtr(DWORD option, const WCHAR *value)
{
return BASS_SetConfigPtr(option|BASS_UNICODE, (const void*)value);
}
#endif #endif
#endif #endif

View File

@ -1,6 +1,6 @@
/* /*
BASSMIDI 2.4 C/C++ header file BASSMIDI 2.4 C/C++ header file
Copyright (c) 2006-2014 Un4seen Developments Ltd. Copyright (c) 2006-2018 Un4seen Developments Ltd.
See the BASSMIDI.CHM file for more detailed documentation See the BASSMIDI.CHM file for more detailed documentation
*/ */
@ -24,6 +24,9 @@ extern "C" {
typedef DWORD HSOUNDFONT; // soundfont handle typedef DWORD HSOUNDFONT; // soundfont handle
// Additional error codes returned by BASS_ErrorGetCode
#define BASS_ERROR_MIDI_INCLUDE 7000 // SFZ include file could not be opened
// Additional BASS_SetConfig options // Additional BASS_SetConfig options
#define BASS_CONFIG_MIDI_COMPACT 0x10400 #define BASS_CONFIG_MIDI_COMPACT 0x10400
#define BASS_CONFIG_MIDI_VOICES 0x10401 #define BASS_CONFIG_MIDI_VOICES 0x10401
@ -57,6 +60,8 @@ typedef DWORD HSOUNDFONT; // soundfont handle
#define BASS_MIDI_FONT_MEM 0x10000 #define BASS_MIDI_FONT_MEM 0x10000
#define BASS_MIDI_FONT_MMAP 0x20000 #define BASS_MIDI_FONT_MMAP 0x20000
#define BASS_MIDI_FONT_XGDRUMS 0x40000 #define BASS_MIDI_FONT_XGDRUMS 0x40000
#define BASS_MIDI_FONT_NOFX 0x80000
#define BASS_MIDI_FONT_LINATTMOD 0x100000
typedef struct { typedef struct {
HSOUNDFONT font; // soundfont HSOUNDFONT font; // soundfont
@ -102,7 +107,8 @@ typedef struct {
#define BASS_MIDI_MARK_COPY 6 // copyright notice #define BASS_MIDI_MARK_COPY 6 // copyright notice
#define BASS_MIDI_MARK_TRACK 7 // track name #define BASS_MIDI_MARK_TRACK 7 // track name
#define BASS_MIDI_MARK_INST 8 // instrument name #define BASS_MIDI_MARK_INST 8 // instrument name
#define BASS_MIDI_MARK_TICK 0x10000 // FLAG: get position in ticks (otherwise bytes) #define BASS_MIDI_MARK_TRACKSTART 9 // track start (SMF2)
#define BASS_MIDI_MARK_TICK 0x10000 // flag: get position in ticks (otherwise bytes)
// MIDI events // MIDI events
#define MIDI_EVENT_NOTE 1 #define MIDI_EVENT_NOTE 1
@ -169,6 +175,7 @@ typedef struct {
#define MIDI_EVENT_CHANPRES_PITCH 66 #define MIDI_EVENT_CHANPRES_PITCH 66
#define MIDI_EVENT_CHANPRES_FILTER 67 #define MIDI_EVENT_CHANPRES_FILTER 67
#define MIDI_EVENT_CHANPRES_VOLUME 68 #define MIDI_EVENT_CHANPRES_VOLUME 68
#define MIDI_EVENT_MOD_VIBRATO 69
#define MIDI_EVENT_MODRANGE 69 #define MIDI_EVENT_MODRANGE 69
#define MIDI_EVENT_BANK_LSB 70 #define MIDI_EVENT_BANK_LSB 70
#define MIDI_EVENT_KEYPRES 71 #define MIDI_EVENT_KEYPRES 71
@ -176,13 +183,21 @@ typedef struct {
#define MIDI_EVENT_KEYPRES_PITCH 73 #define MIDI_EVENT_KEYPRES_PITCH 73
#define MIDI_EVENT_KEYPRES_FILTER 74 #define MIDI_EVENT_KEYPRES_FILTER 74
#define MIDI_EVENT_KEYPRES_VOLUME 75 #define MIDI_EVENT_KEYPRES_VOLUME 75
#define MIDI_EVENT_SOSTENUTO 76
#define MIDI_EVENT_MOD_PITCH 77
#define MIDI_EVENT_MOD_FILTER 78
#define MIDI_EVENT_MOD_VOLUME 79
#define MIDI_EVENT_MIXLEVEL 0x10000 #define MIDI_EVENT_MIXLEVEL 0x10000
#define MIDI_EVENT_TRANSPOSE 0x10001 #define MIDI_EVENT_TRANSPOSE 0x10001
#define MIDI_EVENT_SYSTEMEX 0x10002 #define MIDI_EVENT_SYSTEMEX 0x10002
#define MIDI_EVENT_SPEED 0x10004
#define MIDI_EVENT_END 0 #define MIDI_EVENT_END 0
#define MIDI_EVENT_END_TRACK 0x10003 #define MIDI_EVENT_END_TRACK 0x10003
#define MIDI_EVENT_NOTES 0x20000
#define MIDI_EVENT_VOICES 0x20001
#define MIDI_SYSTEM_DEFAULT 0 #define MIDI_SYSTEM_DEFAULT 0
#define MIDI_SYSTEM_GM1 1 #define MIDI_SYSTEM_GM1 1
#define MIDI_SYSTEM_GM2 2 #define MIDI_SYSTEM_GM2 2
@ -200,8 +215,11 @@ typedef struct {
// BASS_MIDI_StreamEvents modes // BASS_MIDI_StreamEvents modes
#define BASS_MIDI_EVENTS_STRUCT 0 // BASS_MIDI_EVENT structures #define BASS_MIDI_EVENTS_STRUCT 0 // BASS_MIDI_EVENT structures
#define BASS_MIDI_EVENTS_RAW 0x10000 // raw MIDI event data #define BASS_MIDI_EVENTS_RAW 0x10000 // raw MIDI event data
#define BASS_MIDI_EVENTS_SYNC 0x1000000 // FLAG: trigger event syncs #define BASS_MIDI_EVENTS_SYNC 0x1000000 // flag: trigger event syncs
#define BASS_MIDI_EVENTS_NORSTATUS 0x2000000 // FLAG: no running status #define BASS_MIDI_EVENTS_NORSTATUS 0x2000000 // flag: no running status
#define BASS_MIDI_EVENTS_CANCEL 0x4000000 // flag: cancel pending events
#define BASS_MIDI_EVENTS_TIME 0x8000000 // flag: delta-time info is present
#define BASS_MIDI_EVENTS_ABSTIME 0x10000000 // flag: absolute time info is present
// BASS_MIDI_StreamGetChannel special channels // BASS_MIDI_StreamGetChannel special channels
#define BASS_MIDI_CHAN_CHORUS (DWORD)-1 #define BASS_MIDI_CHAN_CHORUS (DWORD)-1
@ -217,6 +235,9 @@ typedef struct {
#define BASS_ATTRIB_MIDI_CHANS 0x12002 #define BASS_ATTRIB_MIDI_CHANS 0x12002
#define BASS_ATTRIB_MIDI_VOICES 0x12003 #define BASS_ATTRIB_MIDI_VOICES 0x12003
#define BASS_ATTRIB_MIDI_VOICES_ACTIVE 0x12004 #define BASS_ATTRIB_MIDI_VOICES_ACTIVE 0x12004
#define BASS_ATTRIB_MIDI_STATE 0x12005
#define BASS_ATTRIB_MIDI_SRC 0x12006
#define BASS_ATTRIB_MIDI_KILL 0x12007
#define BASS_ATTRIB_MIDI_TRACK_VOL 0x12100 // + track # #define BASS_ATTRIB_MIDI_TRACK_VOL 0x12100 // + track #
// Additional tag type // Additional tag type
@ -225,6 +246,15 @@ typedef struct {
// BASS_ChannelGetLength/GetPosition/SetPosition mode // BASS_ChannelGetLength/GetPosition/SetPosition mode
#define BASS_POS_MIDI_TICK 2 // tick position #define BASS_POS_MIDI_TICK 2 // tick position
typedef BOOL (CALLBACK MIDIFILTERPROC)(HSTREAM handle, DWORD track, BASS_MIDI_EVENT *event, BOOL seeking, void *user);
/* Event filtering callback function.
handle : MIDI stream handle
track : Track containing the event
event : The event
seeking: TRUE = the event is being processed while seeking, FALSE = it is being played
user : The 'user' parameter value given when calling BASS_MIDI_StreamSetFilter
RETURN : TRUE = process the event, FALSE = drop the event */
// BASS_MIDI_FontPack flags // BASS_MIDI_FontPack flags
#define BASS_MIDI_PACK_NOHEAD 1 // don't send a WAV header to the encoder #define BASS_MIDI_PACK_NOHEAD 1 // don't send a WAV header to the encoder
#define BASS_MIDI_PACK_16BIT 2 // discard low 8 bits of 24-bit sample data #define BASS_MIDI_PACK_16BIT 2 // discard low 8 bits of 24-bit sample data
@ -236,7 +266,7 @@ typedef struct {
} BASS_MIDI_DEVICEINFO; } BASS_MIDI_DEVICEINFO;
typedef void (CALLBACK MIDIINPROC)(DWORD device, double time, const BYTE *buffer, DWORD length, void *user); typedef void (CALLBACK MIDIINPROC)(DWORD device, double time, const BYTE *buffer, DWORD length, void *user);
/* User MIDI input callback function. /* MIDI input callback function.
device : MIDI input device device : MIDI input device
time : Timestamp time : Timestamp
buffer : Buffer containing MIDI data buffer : Buffer containing MIDI data
@ -257,7 +287,10 @@ BOOL BASSMIDIDEF(BASS_MIDI_StreamEvent)(HSTREAM handle, DWORD chan, DWORD event,
DWORD BASSMIDIDEF(BASS_MIDI_StreamEvents)(HSTREAM handle, DWORD mode, const void *events, DWORD length); DWORD BASSMIDIDEF(BASS_MIDI_StreamEvents)(HSTREAM handle, DWORD mode, const void *events, DWORD length);
DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEvent)(HSTREAM handle, DWORD chan, DWORD event); DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEvent)(HSTREAM handle, DWORD chan, DWORD event);
DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEvents)(HSTREAM handle, int track, DWORD filter, BASS_MIDI_EVENT *events); DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEvents)(HSTREAM handle, int track, DWORD filter, BASS_MIDI_EVENT *events);
DWORD BASSMIDIDEF(BASS_MIDI_StreamGetEventsEx)(HSTREAM handle, int track, DWORD filter, BASS_MIDI_EVENT *events, DWORD start, DWORD count);
BOOL BASSMIDIDEF(BASS_MIDI_StreamGetPreset)(HSTREAM handle, DWORD chan, BASS_MIDI_FONT *font);
HSTREAM BASSMIDIDEF(BASS_MIDI_StreamGetChannel)(HSTREAM handle, DWORD chan); HSTREAM BASSMIDIDEF(BASS_MIDI_StreamGetChannel)(HSTREAM handle, DWORD chan);
BOOL BASSMIDIDEF(BASS_MIDI_StreamSetFilter)(HSTREAM handle, BOOL seeking, MIDIFILTERPROC *proc, void *user);
HSOUNDFONT BASSMIDIDEF(BASS_MIDI_FontInit)(const void *file, DWORD flags); HSOUNDFONT BASSMIDIDEF(BASS_MIDI_FontInit)(const void *file, DWORD flags);
HSOUNDFONT BASSMIDIDEF(BASS_MIDI_FontInitUser)(const BASS_FILEPROCS *procs, void *user, DWORD flags); HSOUNDFONT BASSMIDIDEF(BASS_MIDI_FontInitUser)(const BASS_FILEPROCS *procs, void *user, DWORD flags);
@ -273,6 +306,8 @@ BOOL BASSMIDIDEF(BASS_MIDI_FontUnpack)(HSOUNDFONT handle, const void *outfile, D
BOOL BASSMIDIDEF(BASS_MIDI_FontSetVolume)(HSOUNDFONT handle, float volume); BOOL BASSMIDIDEF(BASS_MIDI_FontSetVolume)(HSOUNDFONT handle, float volume);
float BASSMIDIDEF(BASS_MIDI_FontGetVolume)(HSOUNDFONT handle); float BASSMIDIDEF(BASS_MIDI_FontGetVolume)(HSOUNDFONT handle);
DWORD BASSMIDIDEF(BASS_MIDI_ConvertEvents)(const BYTE *data, DWORD length, BASS_MIDI_EVENT *events, DWORD count, DWORD flags);
BOOL BASSMIDIDEF(BASS_MIDI_InGetDeviceInfo)(DWORD device, BASS_MIDI_DEVICEINFO *info); BOOL BASSMIDIDEF(BASS_MIDI_InGetDeviceInfo)(DWORD device, BASS_MIDI_DEVICEINFO *info);
BOOL BASSMIDIDEF(BASS_MIDI_InInit)(DWORD device, MIDIINPROC *proc, void *user); BOOL BASSMIDIDEF(BASS_MIDI_InInit)(DWORD device, MIDIINPROC *proc, void *user);
BOOL BASSMIDIDEF(BASS_MIDI_InFree)(DWORD device); BOOL BASSMIDIDEF(BASS_MIDI_InFree)(DWORD device);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,33 +0,0 @@
/*
UNMO3 library C/C++ header file
Copyright (c) 2010-2013 Un4seen Developments Ltd.
Free for non-commercial use
*/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _WIN32
#define WINAPI
#endif
// Get the UNMO3 library version
unsigned WINAPI UNMO3_GetVersion();
// Decode a MO3 file
// in: data/len = MO3 data/len
// out: data/len = decoded data/len (if successful)
// return: 0 = Success, 2 = It isn't a MO3 file, 3 = There was a problem decoding the MO3 file
int WINAPI UNMO3_Decode(void **data, unsigned *len, unsigned flags);
// UNMO3_Decode flags
#define UNMO3_DECODE_NOSAMPLES 1 // don't process sample data
// Free the data returned by UNMO3_Decode
void WINAPI UNMO3_Free(void *data);
#ifdef __cplusplus
}
#endif