1

我正在尝试使用 MPMusicPlayerController 上的 currentPlaybackRate 属性来调整音乐曲目播放时的速度。当比率小于 0.90 或大于 1.13 时,该属性按预期工作,但对于刚好高于和低于 1 的范围,似乎没有节奏变化。这是我正在尝试的:

UIAppDelegate.musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 

...从库中加载带有曲目的音乐播放器

[UIAppDelegate.musicPlayer play];

- (void)speedUp{

        UIAppDelegate.musicPlayer.currentPlaybackRate =  UIAppDelegate.musicPlayer.currentPlaybackRate + 0.03125;           
}

- (void)speedDown
{

        UIAppDelegate.musicPlayer.currentPlaybackRate = UIAppDelegate.musicPlayer.currentPlaybackRate - 0.03125;

}

我可以监控 currentPlaybackRate 的值并查看它的设置是否正确,但在达到 0.9 或 1.13 阈值之前,播放速度似乎没有什么不同。有没有人对此事有任何指导或经验?

4

2 回答 2

2

我不是专家,但我怀疑这种现象可能只是用于在不提高或降低音高的情况下改变播放速度的算法的假象。这是一项棘手的工作,在这里必须实时完成,没有太多失真,因此可能需要节奏的整数倍。您可能想阅读关于时间拉伸的维基百科文章,http ://en.wikipedia.org/wiki/Audio_timescale-pitch_modification

于 2013-04-24T03:04:41.510 回答
0

实际上我发现了问题:语句 myMusicPlayer.currentPlaybackRate = 1.2 必须放在语句 .play() 之后。如果将速率设置放在 .play() 之前,它将不起作用。

于 2017-05-19T03:29:26.017 回答