У меня есть 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")
}
Я провел довольно много исследований по этой конкретной проблеме, но мне не повезло.Буду очень признателен за любую помощь или указатели, заранее спасибо!