- Change MIDI overrides to support 'default (auto)' mode

- Change MIDI flavor default to 'default (auto)'
- Fix MIDI preference page to correctly enable the flavor option only where applicable
- Fix SCVA player to reset existing instances reliably
CQTexperiment
Christopher Snowhill 2016-11-29 15:46:38 -08:00
parent af69cd53c3
commit ebfcd03c5d
13 changed files with 106 additions and 31 deletions

View File

@ -374,7 +374,7 @@
[userDefaultsValuesDict setObject:@"dls appl" forKey:@"midi.plugin"]; [userDefaultsValuesDict setObject:@"dls appl" forKey:@"midi.plugin"];
[userDefaultsValuesDict setObject:@"sc55" forKey:@"midi.flavor"]; [userDefaultsValuesDict setObject:@"default" forKey:@"midi.flavor"];
//Register and sync defaults //Register and sync defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict]; [[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict];

View File

@ -208,7 +208,9 @@ static OSType getOSType(const char * in_)
SCPlayer::sc_mode mode = SCPlayer::sc_sc55; SCPlayer::sc_mode mode = SCPlayer::sc_sc55;
NSString * flavor = [[NSUserDefaults standardUserDefaults] stringForKey:@"midi.flavor"]; NSString * flavor = [[NSUserDefaults standardUserDefaults] stringForKey:@"midi.flavor"];
if ([flavor isEqualToString:@"gm"]) if ([flavor isEqualToString:@"default"])
mode = SCPlayer::sc_default;
else if ([flavor isEqualToString:@"gm"])
mode = SCPlayer::sc_gm; mode = SCPlayer::sc_gm;
else if ([flavor isEqualToString:@"gm2"]) else if ([flavor isEqualToString:@"gm2"])
mode = SCPlayer::sc_gm2; mode = SCPlayer::sc_gm2;

View File

@ -74,7 +74,7 @@ static bool syx_is_reset(const uint8_t * data)
void SCPlayer::send_sysex(uint32_t port, const uint8_t * data) void SCPlayer::send_sysex(uint32_t port, const uint8_t * data)
{ {
sampler[port].TG_LongMidiIn( data, 0 ); sampler[port].TG_LongMidiIn( data, 0 );
if (syx_is_reset(data)) if (syx_is_reset(data) && mode != sc_default)
{ {
reset(port); reset(port);
} }
@ -117,6 +117,7 @@ void SCPlayer::reset_sc(uint32_t port)
break; break;
case sc_sc8850: case sc_sc8850:
case sc_default:
message[8] = 4; message[8] = 4;
break; break;
} }
@ -153,6 +154,7 @@ void SCPlayer::reset(uint32_t port)
case sc_sc88: case sc_sc88:
case sc_sc88pro: case sc_sc88pro:
case sc_sc8850: case sc_sc8850:
case sc_default:
sampler[port].TG_LongMidiIn( syx_reset_gs, 0 ); sampler[port].TG_LongMidiIn( syx_reset_gs, 0 );
reset_sc(port); reset_sc(port);
break; break;
@ -162,6 +164,26 @@ void SCPlayer::reset(uint32_t port)
sampler[port].TG_ShortMidiIn( 0x7F00B9, 0 ); // fix drum channel sampler[port].TG_ShortMidiIn( 0x7F00B9, 0 ); // fix drum channel
break; break;
} }
{
unsigned int i;
for (i = 0; i < 16; ++i)
{
sampler[port].TG_ShortMidiIn( 0x78B0 + i, 0 );
sampler[port].TG_ShortMidiIn( 0x79B0 + i, 0 );
}
}
{
float temp[1024];
unsigned long i, j;
for (i = 0, j = (uSampleRate / 1536 + 1); i < j; ++i)
{
memset(temp, 0, sizeof(temp));
sampler[port].TG_setInterruptThreadIdAtThisTime();
sampler[port].TG_Process(temp, temp, 1024);
}
}
} }
} }

View File

@ -18,14 +18,14 @@ public:
typedef enum typedef enum
{ {
sc_gm = 0, sc_default = 0,
sc_gm,
sc_gm2, sc_gm2,
sc_sc55, sc_sc55,
sc_sc88, sc_sc88,
sc_sc88pro, sc_sc88pro,
sc_sc8850, sc_sc8850,
sc_xg, sc_xg
sc_default = sc_sc55
} }
sc_mode; sc_mode;

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11129.15" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="16B2657" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<development version="7000" identifier="xcode"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11129.15"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="GeneralPreferencesPlugin"> <customObject id="-2" userLabel="File's Owner" customClass="GeneralPreferencesPlugin">
@ -454,7 +454,7 @@
</button> </button>
</subviews> </subviews>
</customView> </customView>
<customView id="JXu-ar-J3Y" userLabel="MIDIView"> <customView wantsLayer="YES" id="JXu-ar-J3Y" userLabel="MIDIView">
<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>
@ -528,7 +528,6 @@
</menu> </menu>
</popUpButtonCell> </popUpButtonCell>
<connections> <connections>
<action selector="setMidiPlugin:" target="i5B-ga-Atm" id="8Nt-Z0-LvI"/>
<binding destination="czk-eG-6QG" name="content" keyPath="arrangedObjects" id="Mzg-yr-6mv"/> <binding destination="czk-eG-6QG" name="content" keyPath="arrangedObjects" id="Mzg-yr-6mv"/>
<binding destination="czk-eG-6QG" name="contentValues" keyPath="arrangedObjects.name" previousBinding="NFp-di-hMf" id="6JE-ba-47Z"/> <binding destination="czk-eG-6QG" name="contentValues" keyPath="arrangedObjects.name" previousBinding="NFp-di-hMf" id="6JE-ba-47Z"/>
<binding destination="czk-eG-6QG" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Mzg-yr-6mv" id="NFp-di-hMf"/> <binding destination="czk-eG-6QG" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Mzg-yr-6mv" id="NFp-di-hMf"/>
@ -547,12 +546,12 @@
<popUpButton verticalHuggingPriority="750" id="1Yw-25-Gbs"> <popUpButton verticalHuggingPriority="750" 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" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" 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="menu"/>
<menu key="menu" id="q1g-E5-NwQ"> <menu key="menu" autoenablesItems="NO" id="q1g-E5-NwQ">
<items> <items>
<menuItem title="Item 1" state="on" id="XzK-h2-vIT"/> <menuItem title="Item 1" id="XzK-h2-vIT"/>
<menuItem title="Item 2" id="nzS-3F-jPX"/> <menuItem title="Item 2" id="nzS-3F-jPX"/>
<menuItem title="Item 3" id="jLL-zc-kYf"/> <menuItem title="Item 3" id="jLL-zc-kYf"/>
</items> </items>
@ -562,6 +561,11 @@
<binding destination="KAn-H1-QH6" name="content" keyPath="arrangedObjects" id="Zvj-Wf-Bum"/> <binding destination="KAn-H1-QH6" name="content" keyPath="arrangedObjects" id="Zvj-Wf-Bum"/>
<binding destination="KAn-H1-QH6" name="contentValues" keyPath="arrangedObjects.name" previousBinding="WGj-w1-erz" id="Rvq-46-YeR"/> <binding destination="KAn-H1-QH6" name="contentValues" keyPath="arrangedObjects.name" previousBinding="WGj-w1-erz" id="Rvq-46-YeR"/>
<binding destination="KAn-H1-QH6" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Zvj-Wf-Bum" id="WGj-w1-erz"/> <binding destination="KAn-H1-QH6" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Zvj-Wf-Bum" id="WGj-w1-erz"/>
<binding destination="52" name="enabled" keyPath="values.midi.plugin" id="GlZ-Ch-oua">
<dictionary key="options">
<string key="NSValueTransformerName">MIDIPluginFlavorTransformer</string>
</dictionary>
</binding>
<binding destination="52" name="selectedObject" keyPath="values.midi.flavor" previousBinding="Rvq-46-YeR" id="zC1-3J-frL"/> <binding destination="52" name="selectedObject" keyPath="values.midi.flavor" previousBinding="Rvq-46-YeR" id="zC1-3J-frL"/>
</connections> </connections>
</popUpButton> </popUpButton>

View File

@ -28,6 +28,7 @@
83B0672B180D8B39008E3612 /* midi.png in Resources */ = {isa = PBXBuildFile; fileRef = 83B0672A180D8B39008E3612 /* midi.png */; }; 83B0672B180D8B39008E3612 /* midi.png in Resources */ = {isa = PBXBuildFile; fileRef = 83B0672A180D8B39008E3612 /* midi.png */; };
83DFEA0B1CBC94DE00BCC565 /* MIDIFlavorBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83DFEA0A1CBC94DE00BCC565 /* MIDIFlavorBehaviorArrayController.m */; }; 83DFEA0B1CBC94DE00BCC565 /* MIDIFlavorBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83DFEA0A1CBC94DE00BCC565 /* MIDIFlavorBehaviorArrayController.m */; };
83EF495F17FBC96A00642E3C /* VolumeBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83EF495E17FBC96A00642E3C /* VolumeBehaviorArrayController.m */; }; 83EF495F17FBC96A00642E3C /* VolumeBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83EF495E17FBC96A00642E3C /* VolumeBehaviorArrayController.m */; };
83F127AA1DEE47E90010CB8F /* MIDIPluginFlavorTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83F127A81DEE47E90010CB8F /* MIDIPluginFlavorTransformer.m */; };
83F27E6B1810DD3A00CEF538 /* appearance@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 83F27E651810DD3A00CEF538 /* appearance@2x.png */; }; 83F27E6B1810DD3A00CEF538 /* appearance@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 83F27E651810DD3A00CEF538 /* appearance@2x.png */; };
83F27E6C1810DD3A00CEF538 /* growl@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 83F27E661810DD3A00CEF538 /* growl@2x.png */; }; 83F27E6C1810DD3A00CEF538 /* growl@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 83F27E661810DD3A00CEF538 /* growl@2x.png */; };
83F27E6D1810DD3A00CEF538 /* lastfm@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 83F27E671810DD3A00CEF538 /* lastfm@2x.png */; }; 83F27E6D1810DD3A00CEF538 /* lastfm@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 83F27E671810DD3A00CEF538 /* lastfm@2x.png */; };
@ -115,6 +116,8 @@
83DFEA0A1CBC94DE00BCC565 /* MIDIFlavorBehaviorArrayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MIDIFlavorBehaviorArrayController.m; sourceTree = "<group>"; }; 83DFEA0A1CBC94DE00BCC565 /* MIDIFlavorBehaviorArrayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MIDIFlavorBehaviorArrayController.m; sourceTree = "<group>"; };
83EF495D17FBC96A00642E3C /* VolumeBehaviorArrayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VolumeBehaviorArrayController.h; sourceTree = "<group>"; }; 83EF495D17FBC96A00642E3C /* VolumeBehaviorArrayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VolumeBehaviorArrayController.h; sourceTree = "<group>"; };
83EF495E17FBC96A00642E3C /* VolumeBehaviorArrayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VolumeBehaviorArrayController.m; sourceTree = "<group>"; }; 83EF495E17FBC96A00642E3C /* VolumeBehaviorArrayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VolumeBehaviorArrayController.m; sourceTree = "<group>"; };
83F127A81DEE47E90010CB8F /* MIDIPluginFlavorTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MIDIPluginFlavorTransformer.m; sourceTree = "<group>"; };
83F127A91DEE47E90010CB8F /* MIDIPluginFlavorTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIDIPluginFlavorTransformer.h; sourceTree = "<group>"; };
83F27E651810DD3A00CEF538 /* appearance@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appearance@2x.png"; path = "Icons/appearance@2x.png"; sourceTree = "<group>"; }; 83F27E651810DD3A00CEF538 /* appearance@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appearance@2x.png"; path = "Icons/appearance@2x.png"; sourceTree = "<group>"; };
83F27E661810DD3A00CEF538 /* growl@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "growl@2x.png"; path = "Icons/growl@2x.png"; sourceTree = "<group>"; }; 83F27E661810DD3A00CEF538 /* growl@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "growl@2x.png"; path = "Icons/growl@2x.png"; sourceTree = "<group>"; };
83F27E671810DD3A00CEF538 /* lastfm@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "lastfm@2x.png"; path = "Icons/lastfm@2x.png"; sourceTree = "<group>"; }; 83F27E671810DD3A00CEF538 /* lastfm@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "lastfm@2x.png"; path = "Icons/lastfm@2x.png"; sourceTree = "<group>"; };
@ -286,6 +289,8 @@
83F27E711810E41A00CEF538 /* Transformers */ = { 83F27E711810E41A00CEF538 /* Transformers */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
83F127A81DEE47E90010CB8F /* MIDIPluginFlavorTransformer.m */,
83F127A91DEE47E90010CB8F /* MIDIPluginFlavorTransformer.h */,
83F27E721810E45D00CEF538 /* PathToFileTransformer.h */, 83F27E721810E45D00CEF538 /* PathToFileTransformer.h */,
83F27E731810E45D00CEF538 /* PathToFileTransformer.m */, 83F27E731810E45D00CEF538 /* PathToFileTransformer.m */,
); );
@ -437,6 +442,7 @@
17C643380B8A77CC00C53518 /* OutputsArrayController.m in Sources */, 17C643380B8A77CC00C53518 /* OutputsArrayController.m in Sources */,
837C0D401C50954000CAE18F /* MIDIPluginBehaviorArrayController.m in Sources */, 837C0D401C50954000CAE18F /* MIDIPluginBehaviorArrayController.m in Sources */,
17C6433F0B8A783F00C53518 /* OutputPane.m in Sources */, 17C6433F0B8A783F00C53518 /* OutputPane.m in Sources */,
83F127AA1DEE47E90010CB8F /* MIDIPluginFlavorTransformer.m in Sources */,
170744AD0BFF3938002475C9 /* AppcastArrayController.m in Sources */, 170744AD0BFF3938002475C9 /* AppcastArrayController.m in Sources */,
99F1813F0DE01D7A00FD5FFB /* PlaylistBehaviorArrayController.m in Sources */, 99F1813F0DE01D7A00FD5FFB /* PlaylistBehaviorArrayController.m in Sources */,
8372053718E3DEAF007EFAD4 /* ResamplerBehaviorArrayController.m in Sources */, 8372053718E3DEAF007EFAD4 /* ResamplerBehaviorArrayController.m in Sources */,

View File

@ -8,6 +8,7 @@
#import "GeneralPreferencesPlugin.h" #import "GeneralPreferencesPlugin.h"
#import "PathToFileTransformer.h" #import "PathToFileTransformer.h"
#import "MIDIPluginFlavorTransformer.h"
@implementation GeneralPreferencesPlugin @implementation GeneralPreferencesPlugin
@ -16,6 +17,9 @@
NSValueTransformer *pathToFileTransformer = [[PathToFileTransformer alloc] init]; NSValueTransformer *pathToFileTransformer = [[PathToFileTransformer alloc] init];
[NSValueTransformer setValueTransformer:pathToFileTransformer [NSValueTransformer setValueTransformer:pathToFileTransformer
forName:@"PathToFileTransformer"]; forName:@"PathToFileTransformer"];
NSValueTransformer *midiPluginFlavorTransformer = [[MIDIPluginFlavorTransformer alloc] init];
[NSValueTransformer setValueTransformer:midiPluginFlavorTransformer
forName:@"MIDIPluginFlavorTransformer"];
} }
+ (NSArray *)preferencePanes + (NSArray *)preferencePanes

View File

@ -13,6 +13,10 @@
{ {
[self removeObjects:[self arrangedObjects]]; [self removeObjects:[self arrangedObjects]];
[self addObject:
[NSDictionary dictionaryWithObjectsAndKeys:
@"Default (auto)", @"name", @"default", @"preference", nil]];
[self addObject: [self addObject:
[NSDictionary dictionaryWithObjectsAndKeys: [NSDictionary dictionaryWithObjectsAndKeys:
@"General MIDI", @"name", @"gm", @"preference", nil]]; @"General MIDI", @"name", @"gm", @"preference", nil]];

View File

@ -14,6 +14,5 @@
} }
- (IBAction)setSoundFont:(id)sender; - (IBAction)setSoundFont:(id)sender;
- (IBAction)setMidiPlugin:(id)sender;
@end @end

View File

@ -10,12 +10,6 @@
@implementation MIDIPane @implementation MIDIPane
- (void)awakeFromNib
{
if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"midi.plugin"] isEqualToString:@"Sc55rolD"])
[midiFlavorControl setEnabled:YES];
}
- (NSString *)title - (NSString *)title
{ {
return NSLocalizedStringFromTableInBundle(@"Synthesis", nil, [NSBundle bundleForClass:[self class]], @""); return NSLocalizedStringFromTableInBundle(@"Synthesis", nil, [NSBundle bundleForClass:[self class]], @"");

View File

@ -0,0 +1,13 @@
//
// PathToFileTransformer.h
// General
//
// Created by Christopher Snowhill on 11/29/16.
//
//
#import <Foundation/Foundation.h>
@interface MIDIPluginFlavorTransformer : NSValueTransformer
@end

View File

@ -0,0 +1,22 @@
//
// PathToFileTransformer.m
// General
//
// Created by Christopher Snowhill on 11/29/16.
//
//
#import "MIDIPluginFlavorTransformer.h"
@implementation MIDIPluginFlavorTransformer
+ (Class)transformedValueClass { return [NSNumber class]; }
+ (BOOL)allowsReverseTransformation { return NO; }
// Convert from string to NSURL
- (id)transformedValue:(id)value {
if (value == nil) return nil;
return [NSNumber numberWithBool:[value isEqualToString:@"Sc55rolD"]];
}
@end

View File

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11129.15" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="16B2657" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11129.15"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="GeneralPreferencesPlugin"> <customObject id="-2" userLabel="File's Owner" customClass="GeneralPreferencesPlugin">
@ -453,7 +454,7 @@
</button> </button>
</subviews> </subviews>
</customView> </customView>
<customView id="JXu-ar-J3Y" userLabel="MIDIView"> <customView wantsLayer="YES" id="JXu-ar-J3Y" userLabel="MIDIView">
<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>
@ -527,7 +528,6 @@
</menu> </menu>
</popUpButtonCell> </popUpButtonCell>
<connections> <connections>
<action selector="setMidiPlugin:" target="i5B-ga-Atm" id="8Nt-Z0-LvI"/>
<binding destination="czk-eG-6QG" name="content" keyPath="arrangedObjects" id="Mzg-yr-6mv"/> <binding destination="czk-eG-6QG" name="content" keyPath="arrangedObjects" id="Mzg-yr-6mv"/>
<binding destination="czk-eG-6QG" name="contentValues" keyPath="arrangedObjects.name" previousBinding="NFp-di-hMf" id="6JE-ba-47Z"/> <binding destination="czk-eG-6QG" name="contentValues" keyPath="arrangedObjects.name" previousBinding="NFp-di-hMf" id="6JE-ba-47Z"/>
<binding destination="czk-eG-6QG" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Mzg-yr-6mv" id="NFp-di-hMf"/> <binding destination="czk-eG-6QG" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Mzg-yr-6mv" id="NFp-di-hMf"/>
@ -546,12 +546,12 @@
<popUpButton verticalHuggingPriority="750" id="1Yw-25-Gbs"> <popUpButton verticalHuggingPriority="750" 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" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" 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="menu"/>
<menu key="menu" id="q1g-E5-NwQ"> <menu key="menu" autoenablesItems="NO" id="q1g-E5-NwQ">
<items> <items>
<menuItem title="Item 1" state="on" id="XzK-h2-vIT"/> <menuItem title="Item 1" id="XzK-h2-vIT"/>
<menuItem title="Item 2" id="nzS-3F-jPX"/> <menuItem title="Item 2" id="nzS-3F-jPX"/>
<menuItem title="Item 3" id="jLL-zc-kYf"/> <menuItem title="Item 3" id="jLL-zc-kYf"/>
</items> </items>
@ -561,6 +561,11 @@
<binding destination="KAn-H1-QH6" name="content" keyPath="arrangedObjects" id="Zvj-Wf-Bum"/> <binding destination="KAn-H1-QH6" name="content" keyPath="arrangedObjects" id="Zvj-Wf-Bum"/>
<binding destination="KAn-H1-QH6" name="contentValues" keyPath="arrangedObjects.name" previousBinding="WGj-w1-erz" id="Rvq-46-YeR"/> <binding destination="KAn-H1-QH6" name="contentValues" keyPath="arrangedObjects.name" previousBinding="WGj-w1-erz" id="Rvq-46-YeR"/>
<binding destination="KAn-H1-QH6" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Zvj-Wf-Bum" id="WGj-w1-erz"/> <binding destination="KAn-H1-QH6" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Zvj-Wf-Bum" id="WGj-w1-erz"/>
<binding destination="52" name="enabled" keyPath="values.midi.plugin" id="GlZ-Ch-oua">
<dictionary key="options">
<string key="NSValueTransformerName">MIDIPluginFlavorTransformer</string>
</dictionary>
</binding>
<binding destination="52" name="selectedObject" keyPath="values.midi.flavor" previousBinding="Rvq-46-YeR" id="zC1-3J-frL"/> <binding destination="52" name="selectedObject" keyPath="values.midi.flavor" previousBinding="Rvq-46-YeR" id="zC1-3J-frL"/>
</connections> </connections>
</popUpButton> </popUpButton>