我试图在一个简单的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文件,无需更改。
答案 0 :(得分:1)
如果查看实现,只有一个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上播放得很好。
答案 1 :(得分:1)
我尝试过不同的音频文件,但效果很好。
第一个文件是单声道文件,所以我的结论是xinput --disable [...]
不支持单声道文件。很想听到更多关于此事的消息。