У меня проблемы с получением AKMIDISampler от AudioKit для воспроизведения файлов, которые я записал в своем приложении. Файлы записываются с помощью AVAudioRecorder и хранятся в папке с документами телефона. Я могу воспроизвести эти файлы с помощью AKPlayer, поэтому запись работает нормально. Когда я запускаю следующий код с одним из этих файлов, я не получаю ни звука, ни сообщения об ошибке:
let sampler = AKMIDISampler()
let file = try! AKAudioFile(readFileName: filepath, baseDir: .documents)
try! sampler.loadAudioFile(file)
AudioKit.output = sampler
try! AudioKit.start()
try! sampler.play(noteNumber: 60, velocity: 127, channel: 0)
Однако, пытаясь отладить проблему, я попробовал тот же процесс со стандартным сэмплом барабана для файла .wav, который я скачал из Интернета, который я преобразовал в формат .m4a, тот же формат, что и записанные аудиофайлы. Этот файл отлично работает с приведенным выше кодом. Кроме того, ОБА записанный файл и загруженный файл можно воспроизводить с помощью AKPlayer.
Это заставило меня поверить, что мои записанные файлы имеют формат, который не работает с AKMIDISampler. Это мои настройки записи, которые я использовал с AVAudioRecorder:
[AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]
Существуют ли какие-либо особые требования к формату файла AKAudioFile для использования с AKMIDISampler? Может ли проблема заключаться в частоте дискретизации или количестве каналов (частота дискретизации 12000, 1 канал), которые отличаются от загруженного мной рабочего тестового файла (частота дискретизации 44100, 2 канала)? Или я что-то пропускаю? Любая помощь будет принята с благодарностью.