2013-04-24 1 views
1

MPMusicPlayerController에서 currentPlaybackRate 속성을 사용하여 음악 트랙의 템포를 조정하려고합니다. 이 속성은 속도가 0.90보다 낮거나 1.13보다 큰 경우 예상대로 작동하지만 1보다 약간 위아래 인 범위에서는 템포가 변경되지 않은 것 같습니다.MPMusicPlayerController가 1 근처에있는 currentPlaybackRate에 응답하지 않습니다

UIAppDelegate.musicPlayer = [MPMusicPlayerController iPodMusicPlayer]; 

... 내가 값 currentPlaybackRate을 모니터링하고 올바르게 설정 되 고 있음을 알 수

[UIAppDelegate.musicPlayer play]; 

- (void)speedUp{ 

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

- (void)speedDown 
{ 

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

} 

라이브러리에서 트랙과로드 음악 플레이어, 그러나있을 것 같습니다 : 여기에 내가 노력하고있어입니다 0.9 또는 1.13 임계 값에 도달 할 때까지 재생 템포가 다를 수 있습니다. 이 문제에 대해 어떤 지침이나 경험이있는 사람이 있습니까?

답변

2

필자는 전문가는 아니지만이 현상은 피치를 높이거나 낮추지 않고 재생 속도를 변경하는 데 사용 된 알고리즘의 산물 일 뿐이라고 생각합니다. 그것은 까다로운 사업이며 여기서는 많은 왜곡없이 실시간으로 이루어져야합니다. 따라서 아마 템포의 정수 배가 필요합니다. 시간 신장에 관한 위키 피 디아 문서를 읽고 싶을 수도 있습니다. http://en.wikipedia.org/wiki/Audio_timescale-pitch_modification

+0

matt, 통찰력에 감사드립니다.하지만 AVAudioPlayer에서 속도를 설정하면 원하는대로 작은 효과가 적용됩니다. AVAudioPlayer를 사용하면 누군가가 지적 할 수있는 작동 가능 플래그가 설정되어야합니다. 다른 것을 찾으면 계속 검색하고 업데이트 할 것입니다. –

+0

그러나 더 큰 값에 대해서는 속도가 청취 적으로 변하고 작은 값에 대해서는 속도가 변하는 것을 볼 수 있다는 사실은 내부 제한을 두드리고 수행 할 수있는 모든 것을 수행했다는 것을 의미합니다. – matt

0

실제로 문제를 발견했습니다. 문장 myMusicPlayer.currentPlaybackRate = 1.2는 문장 .play() 뒤에 삽입해야합니다. .play() 전에 속도 설정을 지정하면 작동하지 않습니다.

관련 문제