我正在尝试用新的 AKSampler 替换 AKMidiSampler 和 AKPlayer,但由于某种原因,新的采样器无法播放旧文件所做的AKAudioFiles。
下面是一个使用所有三个采样器的小代码示例:AKMidiSampler、AKPlayer 和新的 AKSampler。 全部加载相同的 AKAudioFile。 如果按原样运行,则不会播放任何声音。
取消注释时
player.play()
或
try auSampler.play(noteNumber: 60, velocity: 127, channel: 0)
会有声音。
我的猜测是我没有正确使用 AKSampleDescriptor, 我以here为例.
import Foundation
import AudioKit
class Conductor {
var sampler = AKSampler()
var auSampler = AKMIDISampler()
var player = AKPlayer()
var mixer = AKMixer()
init() {
do {
let akfile = try AKAudioFile(readFileName: "Drums.wav")
let descriptor = AKSampleDescriptor(noteNumber: 60,
noteFrequency: Float(AKPolyphonicNode.tuningTable.frequency(forNoteNumber: 60)),
minimumNoteNumber: 0,
maximumNoteNumber: 127,
minimumVelocity: 0,
maximumVelocity: 127,
isLooping: true,
loopStartPoint: 0.0,
loopEndPoint: 1.0,
startPoint: 0.0,
endPoint: 0.0)
sampler.loadAKAudioFile(from: descriptor, file: akfile)
try auSampler.loadAudioFile(akfile)
player = akfile.player
[player, sampler, auSampler] >>> mixer
AudioKit.output = mixer
try AudioKit.start()
// player.play()
// try auSampler.play(noteNumber: 60, velocity: 127, channel: 0)
sampler.play(noteNumber: 60, velocity: 127)
}
catch {
print("ehhhh...")
}
}
}
最佳答案
解决方案很简单,我只需添加以下行:
sampler.buildKeyMap()
加载样本后。 现在一切都按预期进行。
关于ios - 无法将 .wav 文件加载到新的 AKSampler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310559/