AVMIDIPlayer
iOSのAPIの中にAVMIDIPlayerというものを発見。これは音楽ファイルを再生するもので、対象フォーマットはMIDIとiMelody。iMelodyというのは着メロのような単音の音楽を扱うものらしい。所属はAVFoundationでiOS 8より追加になった。   初期化メソッドは2つ。  initWithContentsOfURL: soundBankURL: error:  initWithData: soundBankURL: error:  上のメソッドでは1つ目の引数はファイルのURLを渡し、2つ目の引数でsoundBankというもののURLを渡す。2つ目のsoundBankURLだが、これは再生に使う音源の指定でSoundFont2かDLS bank(のURL)を指定する。OS Xではnilが可能だが、iOSではnilはだめ。  下のメソッドでは1つ目の引数はNSDataインスタンス(の形式にした音楽ファイル)を渡す。2つ目以降は上のと同じ。  SoundFont2は音色のデータフォーマット。世の中でよく(?)使われている。DLSも音色のデータフォーマットだがSoundFont2の方がメジャー。   再生データ(第一引数)と音色データ(第二引数)の違いがややこしいと思う。音色データにはいろいろな音色のいろいろな音程の音が含まれている。それをどのタイミングでどの音を鳴らすかを指定するのが再生データ。   再生関係メソッドは普通に  play:  stop  prepareToPlay  playの引数で再生完了時に実行する処理を渡せる   プロパティは  playing (再生中かどうか readOnly)  duration (全体の時間 readOnly)  currentPosition (現在ポジション 読み書き可能)  そのほかに、MIDIらしく  rate (再生速度、1.0が標準 読み書き可能)  というものがある。   手持ちのMIDIファイルとダウンロードしたSoundFontで鳴らしてみたらiPad mini 2から音が出ました。まあ普通に再生出来ています。複数チャンネルにも対応しています。  しかしこうなるとiOSに初めから手頃な音源が搭載されていて欲しくなります。