有没有可能让声音更快?
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
在我的应用程序中,我有一个滑块,当我移动到一个刻度线时,它会发出 "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