【发布时间】:2020-05-04 23:30:34
【问题描述】:
没有关于如何设置最新版本 AKSequencer 的示例,因此我不得不假设一些基于以前版本的内容。
我对@987654323@ 有以下实现,并且有音频输出:
let track = sequencer.newTrack()
track?.setMIDIOutput(sampler.midiIn)
track?.add(noteNumber: 60, velocity: 100, position: AKDuration(beats: 1), duration: AKDuration(beats: 0.25))
sequencer.enableLooping(AKDuration(beats: 4))
sequencer.setTempo(self.defaultTempo)
sequencer.play()
同时,我对最新的AKSequencer 应该足够的东西没有音频输出:
let track: AKSequencerTrack = self.sequencer.addTrack(for: self.sampler)
track.add(noteNumber: 60, velocity: 100, position: 1, duration: 1)
sequencer.length = 4
sequencer.loopEnabled = true
sequencer.tempo = 60
sequencer.play()
这两种情况都将sampler 连接到mainMixer 并分配给AudioKit.output。
由于这不适用于最新的AKSequencer,我认为可能将AKSequencerTrack 插入mainMixer 并将sampler 拔出mainMixer 可以吗?但是没用!
mainMixer.connect(input: track)
没有其他选择了!所以,在寻找AKSequencerTrack 后发现有人报告了同样的问题(Why is the new AKSequencer not producing any sound?),所以尝试了:
mainMixer.connect(input: sampler)
mainMixer.connect(input: track)
再一次,没有声音!还有一个指向这个相关主题的链接,这与我之前的尝试类似,没有输出 (How to play MIDI with AudioKit's new AKSequencer),但只是为了确保更改为使用 AKSampler 并加载本地声音:
sampler.loadSFZ(url: Bundle.main.url(forResource: "clock", withExtension: "wav")!)
又一次失败……!没有声音。
我正在运行 AudioKit 4.9.5
为了保持理智,AKSequencerTrack 中有一个方法 .play,如果我调用它会发生什么?
track.play()
没有声音!好的,如果我把采样器改回AKSnareSynth呢?
let t: AKSynthSnare = AKSynthSnare()
sequencer.addTrack(for: t)
玩了吗?不!
我在非 AKSequencer 中是否有输出?是的:
let t: AKSynthSnare = AKSynthSnare()
self.mainMixer.connect(input: t)
t.play(noteNumber: 60,
velocity: MIDIVelocity(127),
channel: MIDIChannel(1))
.isPlaying 是真的吗?
for track in self.sequencer.tracks {
mainMixer.connect(input: track)
track.play()
print("> > > > track.isPlaying: \(track.isPlaying)")
}
是的,isPlaying 返回true:
> > > > track.isPlaying: true
但是,不,没有声音!
我认为AKSequencer 目前是一个暗箱,除非有人在 Github 中发布示例(我在源代码中搜索过,但在撰写本文时没有),否则不应使用它。或者也许我做错了什么我不知道,只是浪费了一天的时间尝试不同的事情。
【问题讨论】:
标签: audiokit