AKSequencer 和 AKSampler 链接没有声音
No sound with AKSequencer and AKSampler chaining
我正在使用 AudioKit 4.9.5。
我正在尝试使用 AKSequencer 演奏音阶。
以下是我使用 AudioKit 的方式。
初始化:
AKAudioFile.cleanTempDirectory()
AKSettings.bufferLength = .medium
AKSettings.playbackWhileMuted = true
AKSettings.audioInputEnabled = true
tracker = AKFrequencyTracker(mic)
silence = AKBooster(tracker, gain: 0)
try? AKSettings.setSession(category: .playAndRecord,
with: [.defaultToSpeaker, .mixWithOthers])
mixer = AKMixer(silence, conductor.sampler)
AudioKit.output = mixer
接下来,我正在初始化导体:
init() {
let info = ProcessInfo.processInfo
let begin = info.systemUptime
let soundsFolder = Bundle.main.bundleURL.path
AKSettings.bufferLength = .medium
AKSettings.enableLogging = true
// Signal Chain
sampler = AKSampler()
sampler.loadSFZ(path: soundsFolder, fileName: "Sax.sfz")
sampler.attackDuration = 0.01
sampler.decayDuration = 0.1
sampler.sustainLevel = 0.8
sampler.releaseDuration = 0.5
sequencer = Sequencer(name: "Scale", targetNode: sampler)
let elapsedTime = info.systemUptime - begin
print("Time to setup sampler \(elapsedTime) seconds")
}
最后,我的自定义音序器:
self.name = name
self.targetNode = targetNode
self.track = AKSequencerTrack(targetNode: targetNode) //target node is my sampler
self.sequencer = AKSequencer(targetNode: targetNode) //target node is my sampler
这就是我创建曲目的方式:
let newTrack = AKSequencerTrack(targetNode: targetNode)
for step in track.steps {
for note in step.notes {
newTrack.add(noteNumber: MIDINoteNumber(note.rawValue), position: step.position, duration: step.duration)
}
}
self.track = sequencer.addTrack(for: newTrack)
sequencer.tempo = tempo.bpm
sequencer.length = newTrack.length
sequencer.loopEnabled = loopEnabled
不知道为什么没有声音。也许我在节点链接上遗漏了什么?
只需要轨道位于信号链中,就像我在这里的回答:How to play MIDI with AudioKit's new AKSequencer
这是一个工作的伪造者示例:
let sequencerMixer = AKMixer()
let sampler = AKSampler()
...
sequencer = AKSequencer(targetNode: sampler)
...
let newTrack = sequencer.addTrack(for: sampler)
newTrack >>> sequencerMixer
...
AudioKit.output = AKMixer(sequencerMixer, sampler)
我正在使用 AudioKit 4.9.5。 我正在尝试使用 AKSequencer 演奏音阶。
以下是我使用 AudioKit 的方式。 初始化:
AKAudioFile.cleanTempDirectory()
AKSettings.bufferLength = .medium
AKSettings.playbackWhileMuted = true
AKSettings.audioInputEnabled = true
tracker = AKFrequencyTracker(mic)
silence = AKBooster(tracker, gain: 0)
try? AKSettings.setSession(category: .playAndRecord,
with: [.defaultToSpeaker, .mixWithOthers])
mixer = AKMixer(silence, conductor.sampler)
AudioKit.output = mixer
接下来,我正在初始化导体:
init() {
let info = ProcessInfo.processInfo
let begin = info.systemUptime
let soundsFolder = Bundle.main.bundleURL.path
AKSettings.bufferLength = .medium
AKSettings.enableLogging = true
// Signal Chain
sampler = AKSampler()
sampler.loadSFZ(path: soundsFolder, fileName: "Sax.sfz")
sampler.attackDuration = 0.01
sampler.decayDuration = 0.1
sampler.sustainLevel = 0.8
sampler.releaseDuration = 0.5
sequencer = Sequencer(name: "Scale", targetNode: sampler)
let elapsedTime = info.systemUptime - begin
print("Time to setup sampler \(elapsedTime) seconds")
}
最后,我的自定义音序器:
self.name = name
self.targetNode = targetNode
self.track = AKSequencerTrack(targetNode: targetNode) //target node is my sampler
self.sequencer = AKSequencer(targetNode: targetNode) //target node is my sampler
这就是我创建曲目的方式:
let newTrack = AKSequencerTrack(targetNode: targetNode)
for step in track.steps {
for note in step.notes {
newTrack.add(noteNumber: MIDINoteNumber(note.rawValue), position: step.position, duration: step.duration)
}
}
self.track = sequencer.addTrack(for: newTrack)
sequencer.tempo = tempo.bpm
sequencer.length = newTrack.length
sequencer.loopEnabled = loopEnabled
不知道为什么没有声音。也许我在节点链接上遗漏了什么?
只需要轨道位于信号链中,就像我在这里的回答:How to play MIDI with AudioKit's new AKSequencer
这是一个工作的伪造者示例:
let sequencerMixer = AKMixer()
let sampler = AKSampler()
...
sequencer = AKSequencer(targetNode: sampler)
...
let newTrack = sequencer.addTrack(for: sampler)
newTrack >>> sequencerMixer
...
AudioKit.output = AKMixer(sequencerMixer, sampler)