MIDIに関してリアルタイムで調査中ですが、ちょこちょこと分かった事を書いて行こうと思います。ここのページにもいろいろと書いてありますので参考に。MIDIを使うときに必要なMIDIオブジェクトというものを見て行きます。・MIDIDevice・MIDIEntity・MIDIEndpoint・MIDIClient・MIDIPortという5つがあるのですが、上の3つは基本的にアプリケーション外部からCoreMIDI経由で取得するもの(MIDIEndpointは例外あり)で、下の2つのMIDIClientとMIDIPortはアプリケーション側に作るものです。上の方から見て行きます。MIDIではMIDIインターフェース以外にも、アプリケーション同士を直接つなげるIACドライバとか、ネットワーク経由での接続とかもありまして、それらも全て同じMIDIDeviceとして取得できます。設定を開いてみますと...このように表示されているとしたら、この表示されている4つがMIDIDeviceになります。設定で登録されていれば、MIDIDeviceとして取得できます。UA-25」というのがエンティティになります。これはデバイスによって複数持つ場合もあり、「IACドライバ」なんかでは自由に増やせますから、こんな風に2つ作っておくと、「IACドライバ」というMIDIDeviceの中から「バス1」と「バス2」という2つのMIDIEntityが取得できます。設定ではポートの右にあるコネクタのところのMIDI入力と出力)になります。OUTのコネクタそのものだと考えてよいと思います。MIDIではアプリケーション側から見て入力はSource、出力はDestinationと表現されます。アプリケーション内部の方に移りまして、MIDIClientというのはアプリケーション内部に作るMIDIデバイスのようなものです。MIDIClientを作成するときにMacのMIDIシステムの変更を受け取るコールバック関数を登録する事もできます。アプリケーション外部とMIDIデータをやり取りするにはMIDIClientにMIDIPortというものを作成します。入力に関しては、MIDIEndpointをMIDIPortに登録すると同時にコールバックを設定して、リアルタイムでMIDIデータを受け取れます。Clockのように、MIDIClientとかMIDIPortとかを作らずにMIDIEndpointを直接渡すだけで良い場合もあります。MIDIClientやMIDIPortは自分でMIDIの生のデータを処理したいときに使うという感じでしょうか。いったところでサンプルです、。MIDIデバイスからMIDIエンティティを取得してさらに入力側のMIDIエンドポイントを取得します。FoundationToolで新規作成して、CoreMIDI.Frameworkを追加し実行すると、使用可能なデバイスの、エンドポイントの名前とオフラインかどうかを表示します。0;}この方法で使用可能なMIDIエンドポイントを取得するときは、オフラインになっていない事もチェックしないといけなかったりしていろいろ面倒ですが、以下のようにMIDIGetNumberOfSourcesとMIDIGetSourceで、いきなりオンラインになっているMIDIエンドポイントを取得できます。コメントをキャンセルメールアドレスが公開されることはありません。