有没有可能让声音更快?

Is it possible to make sound faster?

在我的应用程序中,我有一个滑块,当我移动到一个刻度线时,它会发出 "tick" 声音。

这是我调用的函数:

func playSound() {
    if player.playing {
       player.stop()
    }

    let qualityOfServiceClass = QOS_CLASS_BACKGROUND
    let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
    dispatch_async(backgroundQueue, {
        self.player.prepareToPlay()
        self.player.play()
    })
}

但是,我想要实现的是,当用户拖动滑块速度更快时,声音会更快……就像 "tick-tick-tick",就像您在汽车的机械旋钮上调节热量时听到的那样。

通过我的实现,我只能在快速拖动时获得一个 "tick" 声音,因为 player.stop() 取消了前一个。所以我在想是否可以在拖动速度更快时让声音播放得更快?

非常感谢任何形式的帮助。

也许我想多了,但我将如何进行: 您应该创建一个包含与滑块值一样多的 AVAudioPlayer 个实例的 NSArray。 即:如果您的滑块范围从 0 到 10,请创建一个包含 10 个 AVAudioPlayer 的数组。

一旦用户移动了滑块,就在滑块值的索引处获取 NSArray 中的 AVAudioPlayer 并播放它。我会仔细考虑你的滑块的范围,好像范围太低并且用户移动滑块太快你可能 运行 进入你现在遇到的同样的问题。

您可以通过这样做来提高速率:

self.player.prepareToPlay()
self.player.enableRate = true
self.player.rate = 2.0
self.player.play()

如果要循环,可以加上这个:

self.player.numberOfLoops = 3