Проблемы загрузки.sf2 с помощью AKAppleSampler - SIGABRT
У меня возникла проблема при попытке загрузить файлы звукового шрифта в AKAppleSampler от AudioKit.
try! sampler.loadMelodicSoundFont("Audio/Soundfonts/Rhodes", preset: 1)
Приведенная выше строка пытается загрузить файл.sf2 клавиатуры Rhodes из подпапки папки, в которой находятся файлы.swift, info.plist и т. Д. Это приводит к серьезному сбою (SIGABRT), выдающему следующее сообщение...
2018-11-08 15: 37: 59.672749 + 0000 Шаблон приложения аудио [2640:7756155] -[AudioKit.AKAppleSampler loadMelodicSoundFont:preset:error:]: нераспознанный селектор отправлен в экземпляр 0x1c007f100 2018-11-08 15:37:59.675379+0000 Шаблон аудио-приложения [2640: 7756155] * Завершение приложения из-за необработанного исключения "NSInvalidArgumentException", причина: '-[AudioKit.AKAppleSampler loadMelodicSoundFont:preset:error:]: нераспознанный селектор, отправленный экземпляру 0x1c007f100' * Первый стек вызова вызова: 0x181c9ad8c ... и т. Д.
Я не уверен, является ли это проблемой из-за того, как я ссылаюсь на расположение файла или как я использую AKAppleSampler. Я удостоверился, что перетащил файл sf2 в навигатор проекта, оставив флажок "копировать файлы при необходимости" ( Снимок экрана Project Navigator), и я уже знаю, что файл работает, потому что я много раз использовал его в своей DAW (скачано отсюда: soundfont). Файл sf2 содержит только один банк / пресет / инструмент - возможно, проблема в этом.
Полный код приведен ниже - это мой первый пост, поэтому прошу прощения, если я что-то пропустил.
Xcode версии 9.4.1, AudioKit в актуальном состоянии
ViewController.swift
import UIKit
import AudioKit
class ViewController: UIViewController {
var sf2Player: SoundfontPlayer!
override func viewDidLoad() {
super.viewDidLoad()
let master = Mixer()
sf2Player = SoundfontPlayer(mixer: master, file: "Rhodes")
}
@IBAction func keyPressed(_ sender: UIButton) {
sf2Player.noteOn(note: MIDINoteNumber(sender.tag))
}
@IBAction func keyReleased(_ sender: UIButton) {
sf2Player.noteOff(note: MIDINoteNumber(sender.tag))
}
}
AudioController.swift
import Foundation
import AudioKit
open class Mixer {
let mixer = AKMixer()
init() {
AudioKit.output = mixer
try! AudioKit.start()
}
open func connect(obj: AKNode) {
mixer.connect(input: obj)
}
}
open class SoundfontPlayer {
var sampler: AKAppleSampler!
init(mixer: Mixer, file: String) {
//let filePath = "Audio/Soundfonts/" + file
// the above is commented out for debugging of the sf2 loading below
sampler = AKAppleSampler()
try! sampler.loadMelodicSoundFont("Audio/Soundfonts/Rhodes", preset: 1)
mixer.connect(obj: sampler)
}
public func noteOn(note: MIDINoteNumber) {
try! sampler.play(noteNumber: note, velocity: 120, channel: 0)
}
public func noteOff(note: MIDINoteNumber) {
try! sampler.stop(noteNumber: note, channel: 0)
}
}