2006年10月21日
CoreMIDI.framework @ Mac
色々とサンプルを改造したり、PDFやウェブ上のドキュメントを参考にCoreMIDIの勉強をしているのですが、用語の問題で少々悩んで停滞してました。まだ、完璧に理解しているわけではないのですが、MIDIノートの出力は出来るようになりました。
当初デバイスで出力先を一覧表示して、それを元に出力していたのですが、これだと仮想ポートが表示されず、この点でも悩んでしまったのですが、他のMIDIGetNumberOf・・・を試して、MIDIGetNumberOfDestinationsで得られるモノが実際に出力できるポートの数だと判明。それが判れば出力は簡単。
ですが、今やっている事と本来の目的は逆なんですよね。MIDIの情報を受け取って、自前のUSB機器で出力したいのです。まだMIDI関連フレームワークの全てを使ってみたわけではないのですが、思っていた関数が存在しない雰囲気。ちょっと面倒なことになるかも。
取り敢えず、USB(HID)の勉強した部分とCoreMIDIフレームワークを組み合わせれば、ゲームパッドをMIDI入力デバイスに出来るので、勉強のために作ってみます。この様な感じで沢山ツールを試作していれば、CoreMIDIの使い方が判ってくるかなと思ってます。
それにしてもMIDIのプログラミングって簡単になったモノですね。遙か昔にPC-9801で動くMIDIを使ったソフトを作った事があるのですが、その時はMIDIの出力をするだけでも随分と時間が掛かった気がします。その頃はスタジオで働きながらC言語を勉強して作ったので、スタートラインが違うのですが、その辺を考慮しても今のMac OS Xの環境は恵まれていると思います。CoreMIDIはシーケンサーを作れる関数も存在する様なので、この辺の機能を使ってリアルタイムレコーディングして、SMF保存や、XML保存できるモノも作ってみたいです。XML保存できれば、他の用途でも扱いやすくなるので、面白いかも。
・・・数時間後
エレコムのゲームパッドでMIDI出力するアプリケーションを作ってみました。MIDIノートの出力自体は問題なくできるのですが、随分と遅れている感じがします。100ms以下だとは思いますが、これでは演奏するという用途には使えないです。何処がボトルネックになっているのか、まだ分からないので、結構厄介かも。現状はGUI無しなので、XcodeでGUIありバージョンを作ってみて、それから原因追求ですかね。Terminal.appで動かしている事でロスになっているだけならばよいのですが・・・。
関連日記
- 2003年05月20日 Elemental Audio SystemsのInspector (3809)@ Mac
- 2003年06月03日 MIDIConを少し改造 (3743)@ Mac
- 2006年10月25日 USB-IOで出力 (3505)@ 電子工作
- 2003年05月19日 Cocoaなプログラミング (3388)@ Mac
- 2011年05月22日 iPadとCoreMIDI Wifi (3203)@ 音楽
- 2003年06月02日 CoreMIDIを使ったアプリケーション (3164)@ Mac
- 2006年10月22日 CoreMIDI相関図 (2944)@ Mac
- 2006年10月23日 CoreMIDIで受信 (1952)@ Mac
- 2003年01月24日 Roland UA-*のMac OS Xドライバ (1894)@ Mac
アマゾン広告
この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。