【问题标题】:Having trouble generating MIDI file from MusicSequence从 MusicSequence 生成 MIDI 文件时遇到问题
【发布时间】:2018-07-17 05:47:06
【问题描述】:

我正在尝试从一个简单的MusicSequence 生成一个 MIDI 文件。这是我的代码:

MusicSequence mySequence;
MusicTrack myTrack;
NewMusicSequence(&mySequence);
MusicSequenceNewTrack(mySequence, &myTrack);

MIDINoteMessage noteMessage;
MusicTimeStamp timestamp = 0;
noteMessage.channel = 0;
noteMessage.note = 60;
noteMessage.velocity = 90;
noteMessage.releaseVelocity = 0;
noteMessage.duration = 4;

if (MusicTrackNewMIDINoteEvent(myTrack, timestamp, &noteMessage) != noErr) NSLog(@"ERROR creating the note");
else NSLog(@"Note added");

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                    NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *midiPath = [documentsDirectory
                    stringByAppendingPathComponent:@"testfile.mid"];
CFURLRef midiURL = (__bridge CFURLRef)([[NSURL alloc] initFileURLWithPath:midiPath]);

OSStatus status = 0;

status = MusicSequenceFileCreate(mySequence, midiURL, kMusicSequenceFile_MIDIType, kMusicSequenceFileFlags_EraseFile, 0);

if(status != noErr){
    printf("Error on create: %d\n", (int)status);
    status = 0;
}

我的代码在MusicSequenceFileCreate 失败。

这是我得到的错误:

线程 1:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)

我怎样才能克服这个问题?

【问题讨论】:

    标签: ios objective-c core-audio audiotoolbox coremidi


    【解决方案1】:

    这似乎是 MIDI URL 定义的错误。我把那行改成了这个,现在它可以工作了。

    CFURLRef midiURL = (__bridge CFURLRef)([NSURL fileURLWithPath:midiPath]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多