audiokit - Audiokit AKSampler 不播放声音
问题描述
目前正试图让我的 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()
}
解决方案
您需要将采样器连接到混音器:
sampler >>> mixer
Fwiw,
midicallback >>> mixer
不是必须的AKAppleSequencer
/AKMIDICallbackInstrument
尽管它会是AKSequencer
/AKCallbackInstrument
推荐阅读
- android - Android:找不到`androidx.navigation.NavArgs`
- mysql - 将日期显示为列别名
- c - 一个函数在我使用 gcc 时有效,但是当我使用 Microsoft Visual Studio 的编译器时它什么也不做
- angular - ng 格式化表格
- c - 为什么我得到这个代码的错误输出(打印数组中的回文数)?
- r - 如何将数据框中给出的列表转换为 R 数据框中的因子/数字?
- android - 如何使用服务访问广播接收器中的电池电量以给我杀死结果?
- react-native - React-Native 导入/导出库
- reactjs - 状态与道具不同
- wpf - WPF Webbrowser 如何缩小页面加载事件?