CoreMIDIの用語はすでに非常に混乱しており、ひどく文書化されており、Audiokitは私の望むほどの助けにはなりません。AudiokitのMIDI初期化が混乱しています
私の知る限り、各アプリケーションには、MIDIクライアントリファレンス(MIDIClientRef
)のインスタンスが1つあると想定されています。 Audiokitには、AKMIDI
インスタンスごとに新しいクライアント参照を作成するAKMIDI
クラスがあり、インスタンスはそれぞれAKMIDIInstrument
,AKCallbackInstrument
およびAKMIDISampler
インスタンスの初期化を含む左、右および中央に作成されています。これらのすべては、ビルトインされたコンストラクタにハードコードされた名前のエンドポイントも作成するので、どのようにして適切な名前を持つものを作成するのか分かりません。
トップ価格は、ソースが最初に言うAKMIDISampler
、に行く:
/// Enable MIDI input from a given MIDI client
/// This is not in the init function because it must be called AFTER you start AudioKit
///
/// [snipped parameter comments for brevity]
open func enableMIDI(_ midiClient: MIDIClientRef = AKMIDI().client, name: String = "MIDI Sampler")
(それは、init関数でであることに注意してください):以下の数行に
/// Initialize the MIDI Sampler
public override init() {
super.init()
enableMIDI()
}
そしてを
私は、一般的な使用法のガイドラインについていくつかの説明を聞いても大変喜んでいます(私はいつでもオーバーライドする必要がありますかything?)、またはこれを詳しく説明しているドキュメンテーション/記事へのリンク。
あなたのPRは、名前の問題に対処しているようで、midiクライアントのリファレンス問題を処理する開発ブランチには他の改良がありました。ドキュメントは依然として誤解を招いています。私はそれと一緒に暮らすことができるが、質問を見つけるかもしれない誰でもこのコメントを残す。 – whistler