大佬教程收集整理的这篇文章主要介绍了ios – 使用MusicPlayer和Music Sequence播放midi文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
-(void) playmusic:(NSString*) name { NSString *presetURLPath = [[NSBundle mainBundle] pathForresource:@"GortsMiniPianoJ1" ofType:@"SF2"]; NSURL * presetURL = [NSURL fileURLWithPath:presetURLPath]; [self loadFromDLSOrSoundFont: (NSURL *)presetURL withPatch: (int)3]; NSString *midiFilePath = [[NSBundle mainBundle] pathForresource:name ofType:@"mid"]; NSURL * midiFileURL = [NSURL fileURLWithPath:midiFilePath]; NewMusicPlayer(&musicPlayer); if (NewMusicSequence(&musicSequencE) != noErr) { [NSException raise:@"play" format:@"Can't create MusicSequence"]; } if(MusicSequenceFileLoad(musicSequence,(CFURLRef)midiFileURL,0 != noErr)) { [NSException raise:@"play" format:@"Can't load MusicSequence"]; } MusicPlayerSetSequence(musicPlayer,musicSequencE); MusicSequenceSetAUGraph(musicSequence,_processingGraph); MusicPlayerPreroll(musicPlayer); MusicPlayerStart(musicPlayer); }
但是,当我在第一个文件仍在播放时尝试播放第二个文件时出现问题.
我尝试了很多变化.首先,上面的代码将同时播放两个轨道.或者,我尝试过:
DisposeMusicPlayer(musicPlayer); DisposeMusicSequence(musicSequencE);
-(void) stop { OSStatus result = noErr; result = MusicPlayerStop(musicPlayer); UInt32 trackCount; MusicSequenceGetTrackCount(musicSequence,&trackCount); MusicTrack track; for(int i=0;i<trackCount;i++) { MusicSequenceGeTindTrack (musicSequence,i,&track); result = MusicSequenceDisposeTrack(musicSequence,track); } result = DisposeMusicPlayer(musicPlayer); result = DisposeMusicSequence(musicSequencE); result = DisposeAUGraph(_processingGraph); }
以上是大佬教程为你收集整理的ios – 使用MusicPlayer和Music Sequence播放midi文件全部内容,希望文章能够帮你解决ios – 使用MusicPlayer和Music Sequence播放midi文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。