AudioKit RenderToFile не работает правильно - PullRequest
0 голосов
/ 12 октября 2018

У меня есть AKSequencer, в котором есть AKMusicTrack с выходом AKMIDISampler.Я также загружаю AKMIDISampler с файлом звукового шрифта.

Проблема, с которой я сталкиваюсь с renderToFile в AudioKit, заключается в том, что при создании файла звук будет пустым / тихим, или он будет воспроизводить одну ноту, которая будетнаходиться в самом начале файла, а также воспроизводить только одну ноту, странный звук воспроизводится на всю длину.

Вот код для инициализации

    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

Вот как я пытаюсь выполнить рендеринг ToFile:

    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 Ответ

0 голосов
/ 12 октября 2018

К сожалению, это хорошо известный, но, вероятно, недостаточно хорошо документированный факт, что автономный рендеринг не работает с генерацией сигналов на основе MIDI.Время, которое использует система midi, не увеличивается со скоростью генерации семплов, которая происходит при рендеринге в файл.

...