2 つのエラーに直面しました。
このコードは iOS 4 および 5 で動作しましたが、6 にアップデートした後は動作しません (
以下を見つけましたが、コードで修正する方法がわかりません。
iOS 6 以降、CoreMIDI の MIDISourceCreate および MIDIDestinationCreate 関数を使用するには、アプリの UIBackgroundModes にオーディオ キーが必要です。キーが設定されていない場合、これらの関数は kMIDINotPermitted (-10844) を返します。
2012-09-23 03:40:04.773 MidiStudio[1017:907] エラー (MIDI 仮想ソースの作成): -10844:Error Domain=NSMachErrorDomain Code=-10844 "操作を完了できませんでした。(Mach エラー -10844. )"
2012-09-23 03:40:04.777 MidiStudio[1017:907] エラー (MIDI 仮想宛先の作成): -10844:エラー Domain=NSMachErrorDomain Code=-10844 「操作を完了できませんでした。(Mach エラー -10844. )"
「ソース」のコードは次のとおりです。
-(void)setVirtualSourceEnabled:(BOOL)virtualSourceEnabled {
if ( virtualSourceEnabled == self.virtualSourceEnabled ) return;
if ( virtualSourceEnabled ) {
NSString *name = virtualEndpointName ? virtualEndpointName : [[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString*)kCFBundleNameKey];
OSStatus s = MIDISourceCreate(client, (CFStringRef)name, &virtualSourceEndpoint);
NSLogError(s, @"Create MIDI virtual source");
if ( s != noErr ) return;
virtualSourceDestination = [[PGMidiVirtualSourceDestination alloc] initWithMidi:self endpoint:virtualSourceEndpoint];
[delegate midi:self destinationAdded:virtualSourceDestination];
[[NSNotificationCenter defaultCenter] postNotificationName:PGMidiDestinationAddedNotification
object:self
userInfo:[NSDictionary dictionaryWithObject:virtualSourceDestination
forKey:PGMidiEndpointKey]];
} else {
[delegate midi:self destinationRemoved:virtualSourceDestination];
[[NSNotificationCenter defaultCenter] postNotificationName:PGMidiDestinationRemovedNotification
object:self
userInfo:[NSDictionary dictionaryWithObject:virtualSourceDestination
forKey:PGMidiEndpointKey]];
[virtualSourceDestination release]; virtualSourceDestination = nil;
OSStatus s = MIDIEndpointDispose(virtualSourceEndpoint);
NSLogError(s, @"Dispose MIDI virtual source");
virtualSourceEndpoint = NULL;
}
}