gpt4 book ai didi

ios - 尝试使用 Audiokit 中的 AKMIDISampler 调试神秘的正弦波

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:59 24 4
gpt4 key购买 nike

previous issue 开始,我停止使用 AKSampler,转而使用 AKMIDISampler 中使用的功能。让我的循环再次工作(在 Google Groups post 的帮助下),但我有一个正弦波在播放(当 MIDISampler 找不到它的源文件时会发生这种情况)。

这不是我定位的源文件的问题,因为它们都可以正常播放。正弦波在此过程中来自其他地方,但我看不到哪里...

请帮助 8•)

(经过简化和编辑的代码仅显示相关详细信息 - 如有任何疑问,请联系我们)

var MIDISamplePlayer = AKMIDISampler()
var sequencer: AKSequencer?
var mixer: AKMixer!

// initialise the mixer
mixer = AKMixer()

do {
audiofile = try AKAudioFile(readFileName: SoundFilename as! String,
baseDir: .resources)
} catch let error as NSError {
print("There's an error: \(error)")
}

do {
try sprite.MIDISamplePlayer.loadAudioFile(audiofile)
} catch let error as NSError {
print("There's an error: \(error)")
}

sprite.tracker = AKAmplitudeTracker(sprite.MIDISamplePlayer)
mixer.connect(to:sprite.tracker, bus: mixer.nextInput.bus)

sequencer = AKSequencer(filename: POPmidi)
sequencer?.enableLooping()

let midi = AKMIDI()

for i in 0..<popCount {
gPOPs[i].MIDISamplePlayer.enableMIDI(midi.client, name: "MIDISample_\(i)")
mixer.connect(gPOPs[i].MIDISamplePlayer)
sequencer!.tracks[i].setMIDIOutput(gPOPs[i].MIDISamplePlayer.midiIn)
}

AudioKit.start()
sequencer!.play()

最佳答案

我找到了这个问题的原因。当我给它一个特定数量的 MIDI 音轨时,我了解到 MIDI 音序器正在创建一个额外的音轨;对于我的 MIDI 文件中的四个轨道,音序器给了我五个。这个额外的轨道用于速度(如 discovered here )。

我还了解到我的第一首轨道在我的 .plist 中被忽略了(我在其中为不同的歌曲设置了词干)。

我测试了第一条轨道用于速度轨道的假设,当我在我的 .plist 中创建了五个轨道以匹配音序器时,正弦波音调消失了。

这导致了一个变通办法。我通过复制我的 .plist 中的第一个样本来做到这一点,无论如何它都被忽略了,然后将代表这个声音的 Sprite 隐藏在屏幕之外。这目前有效,但如果有人知道如何控制此速度轨道及其在 AKSequencer 中的使用,我很想知道更多。

简而言之:确保 MIDI 文件具有您要使用的确切轨道数。创建相同数量的 AKMIDISampler 以在 AKSequencer 中使用,添加一个用于速度轨道。然后请注意,音序器中的第一条轨道是速度轨道,无法播放样本。

关于ios - 尝试使用 Audiokit 中的 AKMIDISampler 调试神秘的正弦波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47160168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com