控制声音xcode的速度

时间:2013-01-03 15:05:12

标签: objective-c ios audio slider slowdown

我想知道是否有可能减慢xcode中的声音。我的意思是我将在xcode中的支持文件中添加一些.mp3文件,我将创建可以加速或减速的应用程序。例如,使用滑块。它甚至可能吗?如果是的话,任何人都可以帮我一些想法吗?感谢

2 个答案:

答案 0 :(得分:2)

AVAudioPlayer有一个rate属性,可以帮助您实现目标。 http://developer.apple.com/library/IOS/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

  

音频播放器的播放速度。 @property浮动利率

     

讨论

     

此属性的默认值1.0提供正常播放速率。   可用范围从0.5到半速播放到2.0   用于双倍速播放。

     

要设置音频播放器的播放速率,您必须先启用速率   调整,如enableRate属性说明中所述。

我还在AVAudioPlayer的评分上发现了一篇很好的帖子: AVAudioPlayer rate

就像你提到的那样,你可以设置一个0.5到2.0之间的滑块,并且在valuechanged上使用

修改音频播放器的速率
- (IBAction)changeValue:(UISlider *)sender
{
    //made up assumed ivar names
    if ([_audioPlayer respondsToSelector:@selector(setEnableRate:)])
        _audioPlayer.enableRate = YES;
    if ([_audioPlayer respondsToSelector:@selector(setRate:)])
        _audioPlayer.rate = [NSNumber numberWithFloat:slideValue];
}

答案 1 :(得分:0)

以比其采样率更快或更慢的速率播放PCM音频会改变其音调并且还会引入相当多的假象。如果您对此感到满意,您将使用的方法是将MP3解码为PCM音频,然后使用Direct Digital Synthesis Oscillator来控制播放速率。

如果你想保持音高但改变速度,你需要一个音频时间延长算法。

来自Dirac3

DSP Dimension是可以执行此操作的商业产品,可用于在iOS应用程序中使用的许可。存在其他商业解决方案。

DSP Dimension blog提供了有关如何实现音高变换的基础知识的有用教程 使用FFT。时间拉伸基本上是相同的过程。然而,他们没有告诉你的DIRAC插件中有一些秘密的问题。

请注意,除非您是电子工程,物理或数学专业毕业,否则您可能很难填补空白。