ios - 从 MusicSequence 生成 MIDI 文件时遇到问题
问题描述
我正在尝试从一个简单的MusicSequence
. 这是我的代码:
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, ¬eMessage) != 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)
我怎样才能克服这个?
解决方案
这似乎是 MIDI URL 定义的错误。我把那条线改成了这个,它现在可以工作了。
CFURLRef midiURL = (__bridge CFURLRef)([NSURL fileURLWithPath:midiPath]);
推荐阅读
- c++ - 当我尝试运行我的 c++ 程序时,它说“使用未声明的标识符”,但它在标题中声明
- python - “ValueError : list.remove(x): x not in list”当 x 在列表中时
- repository - 安装 RCU for Oracle Data Integrator 运行时出错
- ios - Swift - 在 UIStackView 中以编程方式创建 UIPickerView
- android - 如何使用 FusedLocationProviderClient 获取当前位置
- python - 如何将值的数组列表移动到 Pandas DataFrame 中的不同列中?
- javascript - 基于过滤器的mongoose聚合模型
- python - UnboundLocalError:分配前引用的局部变量“BMI”
- android - 为什么使用导航组件在android应用程序中调用onViewCreated两次
- matlab - Numpy 相当于 MATLAB 的 hist