我正尝试用新的 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...")
}
}
}
答案 0 :(得分:1)
解决方案很简单,我只需要添加以下行:
sampler.buildKeyMap()
加载样品后。 现在一切正常。