【问题标题】:control speed of sound xcode控制声音xcode的速度
【发布时间】:2013-01-03 23:39:23
【问题描述】:

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

【问题讨论】:

  • 对于什么平台,iOSOS X
  • 只是为了清楚起见,您想减慢播放速度,而不是减慢音速,对吗?由于声速取决于声波通过的介质。
  • 对于 iOS,我想减慢/加快声音的速度。就像它是 120bpm 一样,我想让它达到 100bpm 或 150bpm

标签: objective-c ios audio slider slowdown


【解决方案1】:

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

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

讨论

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

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

我还发现了一篇关于 AVAudioPlayer 费率的不错的 SO 帖子: 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];
}

【讨论】:

  • 不知道怎么用?我应该把我的mp3声音放在哪里。我想象会有一个按钮开始播放声音,还有一个滑块可以加快/减慢声音。我知道如何编写此按钮,但如何将其连接到滑块?
【解决方案2】:

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

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

来自DSP DimensionDirac3 是可以做到这一点的商业产品,并且可以在iOS 应用程序中获得许可使用。存在其他商业解决方案。

DSP Dimension 的 blog 提供了有关如何实现音高转换的基础知识的有用教程 使用 FFT。时间拉伸本质上是相同的过程。但是,他们没有告诉您的 DIRAC 插件中有相当多的秘诀。

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

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2011-12-08
    相关资源
    最近更新 更多