4

私は、OSC を MIDI に変換するプログラムを作成しており、OSC 対応アプリケーション (iPhone の touchOSC など) が MIDI 対応アプリケーション (Sibelius、Ableton Live など) を制御できるようにしています。

Python を使用して OSC サーバーを作成し、OSC から MIDI に変換しています。問題のアプリケーションに MIDI を渡すために、私は MIDI を Apple IAC ドライバーに出力しています。これは、問題のプログラム内で入力として有効になります。

プログラムでMac MIDIデバイスをプログラムで構成する方法を知っている人はいますか? 特に、デフォルトで無効になっている IAC ドライバーを有効にする必要があります。

FileMon を使用して、IAC ドライバーを有効/無効にするときに Audio Midi Setup.app がこのファイルを変更することを確認しました。

~/Preferences/ByHost/com.apple.MIDI.0017f2cxxxxx.plist

番号 0017f2cxxxxx は私のシステム IOPlatformUUID です。これは単純な XML プロパティ リストですが、直接書き込むのは慎重です。仮にそうしたとしても、どうにかして midi サーバー プロセスをだまして再読み込みさせる必要があるのではないでしょうか?

最後に、IAC ドライバーを使用すること自体が非常に厄介なソリューションであることにますます気づき始めています。最初は、Mac でしか機能しません。理想的には、ループバック MIDI ドライバーを作成すれば、すべての問題が解決されるはずです...

4

3 に答える 3

3

plist に直接書き込むことについてのあなたの予感は正しいです。おそらくそうすべきではありません。これについて 100% 確信があるわけではありませんが、plist は MIDI デバイスの状態を反映しているように感じますが、それを変更しても、必要に応じてその MIDI デバイスを開いたり閉じたりすることはできません。

実際に MIDI デバイスを開くには、 pygameのようなものを使用できます。いくつかのオーディオ関連のプロジェクトで使用しましたが、SDK は非常に単純で操作が簡単です。Python は MIDI を直接サポートしていないため、おそらくこれが最善の策です (Python C モジュールを自分で作成するのは面倒ですが)。

IAC に関して言えば、他の OS にこのような仮想 MIDI デバイスが付属していないのは残念です。IAC は非常に便利で、その機能が優れています。したがって、このようなことを IAC に依存することはクロスプラットフォームにはなりませんが、ループバック デバイスを操作するための抽象化レイヤーを作成することはできます。Windows ユーザーには、無料の MIDI ループバック デバイスをソフトウェアで使用することをお勧めします。

于 2011-05-04T08:19:02.927 に答える
0

PyGame自体は内部でPortMidiを使用しています。すべての PyGame ライブラリが必要ない場合は、これが役に立つかもしれません。

于 2013-10-25T12:14:51.873 に答える