AudioKit 的 RenderToFile 无法正常工作

Posted

技术标签:

【中文标题】AudioKit 的 RenderToFile 无法正常工作【英文标题】:AudioKit's RenderToFile not working correctly 【发布时间】:2018-10-12 11:24:47 【问题描述】:

我有一个 AKSequencer,它里面有一个 AKMusicTrack 和一个 AKMIDISampler 的输出。我还使用 soundfont 文件加载 AKMIDISampler。

我在使用 AudioKit 的 renderToFile 时遇到的问题是,当它创建文件时,声音是空的/无声的,或者它会播放一个位于文件开头的单个音符,以及仅播放单个音符会在整个长度上播放奇怪的声音。

这是初始化代码

    let midiSampler = AKMIDISampler()
    let sequencer = AKSequencer()
    let midi = AKMIDI()

    do 
        try midiSampler.loadSoundFont("soundFontFile", preset: 0, bank: 0)
     catch 
        AKLog("Error - Couldn't load Sample!!!")
    

    AudioKit.output = midiSampler

    do 
        try AudioKit.start()
     catch 
        AKLog("AudioKit didn't begin")
    

    let drumTrack = sequencer.newTrack("Drum Track")
    midi.openInput()

    midiSampler.enableMIDI(midi.client, name: "MIDI Sampler MIDI In")
    drumTrack.setMIDIOutput(midiSampler.midiIn)

    sequencer.setLength(AKDuration(beats: 8))
    sequencer.setTempo(136)
    sequencer.setRate(40)

    midi = AudioKit.midi

这是我尝试 renderToFile 的方式:

    let path = "recordedMIDIAudio.caf"
    let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent(path)
    let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 1, interleaved: true)!

    do 
        let audioFile = try AKAudioFile(forWriting: url, settings: format.settings, commonFormat: format.commonFormat, interleaved: format.isInterleaved)

        try AudioKit.renderToFile(audioFile, duration: 3.55, prerender: 
            self.sequencer.play()
        )
     catch 
        AKLog("Error when converting")
    

我已经对这个特定问题进行了大量研究,但我没有运气。任何帮助或指点将不胜感激,在此先感谢!

【问题讨论】:

【参考方案1】:

不幸的是,离线渲染不适用于基于 MIDI 的信号生成,这是一个众所周知但可能记录不够充分的事实。 midi 系统使用的时钟不会随着渲染到文件时发生的样本生成速度而加快。

【讨论】:

以上是关于AudioKit 的 RenderToFile 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

AudioKit.renderToFile AKClipPlayer 同步问题。渲染文件与第一个剪辑位置不同步并且也被截断

AudioKit:调用“AudioKit.stop()”后无法重新启动 AudioKit 频率采样

Audiokit 修剪音频

AudioKit:根据陀螺数据/摆动手机改变声音?

XCode 无法识别引用的 AudioKit 框架

AudioKit 5:音序效果