ios android mid音频文件,ios – 使用MusicPlayer和Music Sequence播放midi文件

博客内容讲述了在iOS应用中使用soundfont播放midi文件时遇到的问题。当尝试在当前文件播放过程中播放第二个文件时,出现了同时播放两个轨道或播放异常的情况。作者尝试了销毁并重新创建音乐播放器和序列,但效果不理想。寻求解决方案来实现无缝切换播放不同的midi文件。
摘要由CSDN通过智能技术生成

我使用以下代码成功地让iOS使用soundfont示例播放.mid(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, 0 != noErr))

{

[NSException raise:@"play" format:@"Can't load MusicSequence"];

}

MusicPlayerSetSequence(musicPlayer, musicSequence);

MusicSequenceSetAUGraph(musicSequence, _processingGraph);

MusicPlayerPreroll(musicPlayer);

MusicPlayerStart(musicPlayer);

}

但是,当我在第一个文件仍在播放时尝试播放第二个文件时出现问题.

我尝试了很多变化.首先,上面的代码将同时播放两个轨道.或者,我尝试过:

DisposeMusicPlayer(musicPlayer);

DisposeMusicSequence(musicSequence);

在NewMusicPlayer(& musicPlayer)之前,但这会产生一个奇怪版本的曲调,只播放零星的音符.

我很乐意简单地调用这种方法,然后播放下一首曲目.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值