新居雅行(msyk@msyk.net)
Mac OS XのCore Audioの機能を使ったMIDIファイルのプレイヤです。ただし、実用プレイヤとは思わないでください。Core Audioのプログラミングの練習用として作ったものです。Core AudioはAPIリファレンスとドキュメントが公開されているものの、手探りでいろいろ調べるしかありません。ともかく、Mac OS Xで外部のMIDI音源からMIDIファイルの演奏ができるようになったというものです。だから、あまり期待しないでください。
MIDI楽器がなくても、QuickTimeのMIDI機能で再生はできますが、それだとQuickTime Playerでできるので意味はないですね。いちおう、MIDI音源を持っているものとします。
MIDI楽器を用意し、ドライバをMac OS Xにインストールしてください。もちろん、USB等ケーブル接続は必要です。そうすれば、アプリケーションフォルダのユーティリティフォルダにあるAudio MIDI 設定というアプリケーションを使えば、次のように接続しているMIDI機器が見えるようになります。
m-ca-Playerをここからダウンロードしてください。
ダブルクリックして起動し、FileメニューからOpenを選択して、MIDIファイルを指定します。
次のようなウインドウが出てきます。
ここで、Output Destinationのポップアップメニューから、MIDI楽器の出力先を選択して下さい。そして、Playボタンをクリックすると、演奏がスタートします。Stopボタンで演奏を終えます。再度Playをクリックすると、Stopしたところから演奏が始まります。
ソースはこちらからダウンロードできます。ソース、およびソフトウエアはフリーウエアとします。ご自由に使って下さい。ただし、これらを使うことでの被害等については責任はもちません。
このソースに手を入れて遊んだり、ちゃんとしたプレイヤを作ってもかまいませんが、公開するようなソフトウエアを作った場合、できれば引用元を表記していただければと思います。
ちなみに、JavaのAPIでできそうなことは、後は、トラックごとのミュートがあります。これはチェックボックスを並べればできなくはないです。それから、シーケンスの経過時間や小節数なんかも表示することはできそうな気がしますが、スレッドでGUIをいじるので、ちょっとやっかいかも。また、最初から10秒のところに移動…といったこともそれほど難しくはないです。
それ以上となると、たとえば、ボリュームコントロールをつけるとかいったことは、けっこう大変なプログラミングがかかります。いちおう、そういうことができそうな機能はあるのですけど、APIレベルではなく、MIDIデータを自分で作って、チャンネルに送って…などの必要が出てきますね。つまり、現状のm-ca-player以上のものとなると、ちょっと大変になるんじゃないかと思います。ピークレベルメータみたいなんをつけろとか、いろいろ思われるでしょうけど、ちょっと大変そうですね。
で、同じようなプログラムを、Mac OS X 10.1時代に作ったのですけど、全然外部MIDI音源を認識しないとか、ちゃんとプレイしないとかあったのですが、10.2で再トライしたら、ちゃんと鳴ったので、最低限のGUIを付けてみたという次第です。
もし、「Mac OS XのCore Audioについて熱く語り合いたい!」という要望があれば、MLを立ち上げましょうか。