AudioKit пустой файл, используя renderToFile с AKSequencer - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь использовать AudioKit.renderToFile (), чтобы экспортировать короткие MIDI-пассажи в аудио (m4a):

// renderSequencer is an instance of AKSequencer
self.renderSequencer.loadMIDIFile(fromURL: midiURL)
Conductor.sharedInstance.setInstrument(renderItem.soundID, forOfflineRender: true)
// we only have one track with note content
for track in self.renderSequencer.tracks {
    if track.isNotEmpty {
        track.setMIDIOutput(Conductor.sharedInstance.midiIn)
    }
}
let audioCacheDir = self.module.stateManager.audioCacheDirectory
// strip name off midi file
let midiFileName = String(midiURL.lastPathComponent.split(separator: ".")[0])
audioFileName = midiFileName
audioFileURL = audioCacheDir.appendingPathComponent("\(midiFileName).m4a")
if let audioFileURL = audioFileURL {
    let settings = [
        AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
        AVSampleRateKey: 44100,
        AVNumberOfChannelsKey: 2,
        AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
   ]
   let audioFile: AVAudioFile = try! AVAudioFile(forWriting: audioFileURL, settings: settings)
   // get time in seconds of audio file (with 4-beat tail)
   var duration: Float64 = 0.0
   MusicSequenceGetSecondsForBeats(seq, (16.0 + 4), &duration)
   // render sequence
   do { try AudioKit.renderToFile(audioFile, duration: duration) {
       self.renderSequencer.setRate(60.0)
       self.renderSequencer.play()
       }
   } catch { print("Error performing offline file render!") }
}

Это действительно создает аудиофайл ожидаемой продолжительности, но он молчит.Я также попытался войти в систему с моего MIDI-выхода и вижу, что события, «воспроизводимые» из закрытия предзагрузки, на самом деле отправляются / обрабатываются.

В основном, мне кажется, мне любопытно узнать, является ли этона самом деле ожидается на работу.Я видел пару постов, в которых говорилось, что renderToFile из MIDI не поддерживается (в то время как другие предлагали, чтобы он работал).

Кстати, я также опубликовал проблему на аудиоканале GitHub.

...