当前尝试让我的AKSampler播放我发送的声音,但运气不好,无法输出音频。我的AKMidiCallbackInstrument正确记录了正在演奏的音符(尽管我两次看到每个音符的打印内容。)但是,对我的采样器的调用没有产生任何音频,我不知道为什么。
class Sequencer {
var sampler: AKSampler
var sequencer: AKAppleSequencer
var mixer: AKMixer
init() {
sampler = AKSampler()
sequencer = AKAppleSequencer()
mixer=AKMixer(sampler)
let midicallback = AKMIDICallbackInstrument()
let url = Bundle.main.url(forResource: "UprightPianoKW-20190703", withExtension: "sfz")!;
let track = sequencer.newTrack()
track?.setMIDIOutput(midicallback.midiIn)
sampler.loadSFZ(url: url)
//generate some notes and add thtem to the track
generateSequence()
midicallback >>> mixer
AudioKit.output = mixer
AKSettings.playbackWhileMuted = true
AKSettings.audioInputEnabled = true
midicallback.callback = { status, note, vel in
guard let status = AKMIDIStatus(byte: status),
let type = status.type,
type == .noteOn else { return print("note off: \(note)") }
print("note on: \(note)")
self.sampler.play(noteNumber: note, velocity: vel) }
}
func play() {
try? AudioKit.start()
sequencer.rewind()
sequencer.play()
try? AudioKit.stop()
}
func stop() {
sequencer.stop()
}
答案 0 :(得分:0)
您需要将采样器连接到调音台:
sampler >>> mixer
Fww,
midicallback >>> mixer
/ AKAppleSequencer
不需要AKMIDICallbackInstrument
,尽管AKSequencer
/ AKCallbackInstrument