gpt4 book ai didi

swift - AudioKit 在从后台返回时创建正弦波音调

转载 作者:行者123 更新时间:2023-11-28 07:21:35 29 4
gpt4 key购买 nike

我正在使用 AudioKit 运行 AKSequencer(),它使用 AKMIDISampler() 播放 mp3 和 wav 文件。一切都很好,除非应用程序进入后台状态超过 30 分钟,然后再次恢复使用。然后它似乎失去了所有的音频连接并播放提到的“丢失文件”正弦波音in other threads .该应用程序可以愉快地暂时进入后台,用户可以在没有提示音的情况下退出等。它似乎只有在长时间处于后台状态然后再次出现时才会发生。

我已经尝试更改 AudioKit.start() 和文件加载的顺序,但似乎无法完全消除该问题。

我目前的解决方法只是为了防止用户的显示超时,但这并没有解决发生问题的许多用例。

有没有一种方法可以处理我设置的导致这种语气的任何错误?这是我正在处理约 40 个音频文件的代表性示例。

//viewController
override func viewDidLoad() {
sequencer.setupSequencer()
}

class SamplerWav {
let audioWav = AKMIDISampler()
func loadWavFile() {
try? audioWav.loadWav("some_wav_audio_file")
}

class SamplerMp3 {
let audioMp3 = AKMIDISampler()
let audioMp3_akAudioFile = try! AKAudioFile(readFileName: "some_other_audio_file.mp3")

func loadMp3File() {
try? audioMp3.loadAudioFile(audioMp3_akAudioFile)
}

class Sequencer {
let mixer = AKMixer()
let subMix = AKMixer()
let samplerWav = SamplerWav()
let samplerMp3 = SamplerMp3()

var callbackTrack: AKMusicTrack!
let callbackInstr = AKMIDICallbackInstrument()

func setupSequencer{
AudioKit.output = mixer.mixer
try! AudioKit.start()

callbackTrack = sequencer.newTrack()
callbackTrack?.setMIDIOutput(callbackInstr.midiIn)

samplerWav.loadWavFile()
samplerMp3.loadMp3File()

samplerWav.audioWav >>> subMix
samplerMp3.audioMp3 >>> submix

submix >>> mixer
}
//Typically run from a callback track
func playbackSomeSound(){
try? samplerWav.audioWav.play(noteNumber: 60, velocity: 100, channel: 1)
}
}

谢谢!我是 AudioKit 的 super 粉丝。

最佳答案

经过反复试验后,这里的工作流程似乎可以解决我所遇到的问题:

-从 viewDidLoad 创建我的回调轨道 -一次-

-停止 AudioKit,并在我所有的 AKMIDISampler 音轨和 willResignActive 中的任何路由上调用 .detach()

-(再次)启动 AudioKit,并从 didBecomeActive 重新加载和重新路由所有音频文件/轨道

关于swift - AudioKit 在从后台返回时创建正弦波音调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879649/

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