我尝试在一个简单的 iOS 项目上使用 AKSampler
来加载文件并在点击设备屏幕时播放该文件。
我使用 AKSamplePlayer
执行了相同的步骤,效果很好,但我更喜欢使用 AKSampler
,而且我有一种强烈的错过某些东西的感觉。
我尝试过 play()
方法,也尝试过带有 midi 音符的方法。
哪一个是正确的?它们都有效吗?此外,AudioKit
看起来很有前途。
这是我的代码:
import UIKit
import AudioKit
class ViewController: UIViewController
{
var sampler = AKSampler()
var tapRecognizer = UITapGestureRecognizer()
override func viewDidLoad()
{
super.viewDidLoad()
do
{
let file = try AKAudioFile(readFileName: "AH_G2.wav")
try sampler.loadAudioFile(file)
}
catch
{
print("No Such File...")
}
view.addGestureRecognizer(tapRecognizer)
view.isUserInteractionEnabled = true
tapRecognizer.addTarget(self, action: #selector(viewTapped))
AudioKit.output = sampler
AudioKit.start()
}
@objc private func viewTapped()
{
sampler.play(noteNumber: 60, velocity: 80, channel: 0)
print("tapped...")
}
}
编辑:
我的问题实际上是 loadAudioFile
方法,AKAudioFile
本身很好,AKSampler
播放默认的正弦声音。
我还尝试了用于创建播放器和采样器的 AKAudioFile
方法,但没有。
let file = try AKAudioFile (readFileName: "AH_G2.wav")
player = file.player
sampler = file.sampler
我也尝试使用菜单添加 wav 文件,没有任何变化。
最佳答案
如果你看一下实现,就会发现只有一个 play() 方法,但它有 noteNumber、velocity 和 channel 的默认值:
@objc open func play(noteNumber: MIDINoteNumber = 60,
velocity: MIDIVelocity = 127,
channel: MIDIChannel = 0) {
samplerUnit.startNote(noteNumber, withVelocity: velocity, onChannel: channel)
}
更改 MIDI 音符将更改样本播放的音高/速度(60 为标准,72 为双速,48 为半速等),更改速度将更改音量。
注意:您帖子的标题是“AKSampler 无法播放”,但我运行了您的代码(当然更改了示例)并且它在我的 iPad 上播放得很好。
关于ios - 无法将 AKAudioFile 加载到 AKSampler 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47841022/