AKNodeRecorder не записывает в файл - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь использовать AKNodeRecorder для записи вывода музыки, воспроизводимой из AudioKit, в моем приложении. Тем не менее, кажется, что запись, и затем, когда запись останавливается, и я пытаюсь воспроизвести недавно записанный файл, этот файл отображается как пустой, и поэтому я не могу воспроизвести его. Вот все фрагменты кода, которые используют этот модуль

var recorder: AKNodeRecorder!
var player: AKAudioPlayer!

func setupSound() {
    var tape: AKAudioFile!
    var oscilator = AKOscillator(waveform: AKTable(.sawtooth))
    let oscMixer = AKMixer(oscilator)
    do {
        tape = try AKAudioFile()
        player = try AKAudioPlayer(file: tape)
        AudioKit.output = oscMixer
        try AudioKit.start()
        recorder = try AKNodeRecorder(node: oscMixer, file: tape)
    } catch {
        print("Error in setup: \(error)")
    }
}

@IBAction func startRecord(_ sender: Any) {
    if !recorder.isRecording {
        do {
            try recorder.reset()
            try recorder.record()
        } catch {
            print("Error in start of record: \(error)")
        }
        toggleEnable(extraButton: playRecordButton, enableButton: false)
        self.recordButton.setTitle("Stop Recording", for: .normal)
    }
    else {
        recorder.stop()
        toggleEnable(extraButton: playRecordButton, enableButton: true)
        self.recordButton.setTitle("Record", for: .normal)
    }

}

@IBAction func playRecord(_ sender: Any) {
    if !player.isPlaying {
        player.play()
        playRecordButton.setTitle("Pause Record", for: .normal)
        toggleEnable(extraButton: recordButton, enableButton: false)
    }
    else {
        do {
            try player.reloadFile()
        } catch {
            print("Error in reloading of file \(error)")
        }
        player.stop()
        playRecordButton.setTitle("Play Record", for: .normal)
        toggleEnable(extraButton: recordButton, enableButton: true)
    }
}
...