VocalEasel/Sources/VLMIDIDocument.mm
2006-11-12 11:37:36 +00:00

54 lines
1.2 KiB
Plaintext

//
// VLLilypondDocument.mm
// Vocalese
//
// Created by Matthias Neeracher on 10/20/06.
// Copyright 2006 __MyCompanyName__. All rights reserved.
//
#import "VLMMADocument.h"
@implementation VLDocument (MIDI)
- (NSFileWrapper *)midiFileWrapperWithError:(NSError **)outError
{
NSBundle * mainBundle = [NSBundle mainBundle];
//
// Convert to MMA format
//
NSError * err;
NSURL * mmaURL = [self fileURLWithExtension:@"mma"];
[self writeToURL: mmaURL ofType:@"VLMMAType" error:&err];
NSString * launch =
[mainBundle pathForResource:@"mmaWrapper" ofType:@""
inDirectory:@"bin"];
NSArray * args = [NSArray arrayWithObject: [mmaURL path]];
NSTask * task = [self taskWithLaunchPath:launch arguments:args];
[[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(mmaDone:)
name:NSTaskDidTerminateNotification object:task];
[task launch];
[task waitUntilExit];
int status = [task terminationStatus];
if (!status) {
return [[[NSFileWrapper alloc]
initWithPath:[[self fileURLWithExtension:@"mid"] path]]
autorelease];
} else {
NSBeep();
if (outError)
*outError = [NSError errorWithDomain:NSCocoaErrorDomain
code:NSPersistentStoreSaveError
userInfo:nil];
return nil;
}
}
@end