无法将 .wav 文件加载到新的 AKSampler
Can't load .wav file to the new AKSampler
我正在尝试用新的 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()
加载示例后。
现在一切正常。
我正在尝试用新的 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()
加载示例后。 现在一切正常。