Unity3D Standard Edition で作業しています。ご存じない方のために説明すると、これは C#/.NET スクリプトをサポートする 3D ゲーム エンジンです (したがって、.NET 2.0 API にアクセスできます)。
独自のシンセサイザーを作成しました。(現在、MIDI ファイルをむさぼり食う MIDI シーケンサーによって生成されるノートオン イベントに応答しています。)
ここで、MIDI キーボードからノートオン イベントをキャッチしたいと考えています。
私は自分のアプリを少なくとも iOS に展開するつもりです。他のオペレーティング システムが従うことを願っています。したがって、ターゲット シナリオは次のとおりです。
- iPhone で私のアプリを実行している誰かが、MIDI キーボードを Windows マシンに接続しています。
- Android タブレットで私のアプリを実行している誰かが、Linux マシンに MIDI キーボードを接続しています。
- OS X で私のアプリを実行している誰かが、OS X に接続する MIDI キーボードを持っている
最後の 1 つは私が置かれている状況です。拡張されない解決策を誰かが持っている場合、私はまだそれに非常に興味があります。少なくとも機能するプロトタイプをまとめることはできます。
MIDI デバイスに接続するMIDI Unifiedという 1 つのアセットが存在します。ただし、PRO版が必要です。これは、PRO バージョンがネイティブ プラグインを許可するためです。
ネイティブ プラグインを使用せずに、代わりにネットワーク接続を介して MIDI を Unity に取り込むことができるはずです。
(インターネット接続、イーサネット接続、TCP/IP、UDP、HTTP などと言っているわけではないことに注意してください。どの用語を使用するのが適切か完全にはわかりません。)
ネットワーク経由で MIDI 信号を送信するためのユーティリティがあるようです。ipMIDIは、Windows と OS X でこれを行います。おそらく、Linux で行うための何かがあります。
OSX には " Audio MIDI setup " ユーティリティがあり、デバイスから localhost に MIDI 信号を送信できるようになっています。(これが、OS X 用の ipMIDI が無料である理由でしょうか?)
編集: Audio MIDI セットアップがRTP MIDIを実装していることを発見しました。これは、ネットワーク経由で MIDI を送信するための最良の標準であると思われます (損失の多いネットワークに対処します)。
C#/.NET で RTP MIDI を実装する方法は?
しかし、より簡単な (ただし強力ではない) ソリューションがあるかもしれません。たとえば、OSX 上の localhost からの Note-ON MIDI メッセージに対してのみ機能し、受信するソリューションなどです。
私のアプリの第 1 世代の基本的なソリューションを入手し、その後、手段があれば、これを堅牢なコンポーネントに置き換えることができれば、非常に嬉しく思います。
それは私が得た限りですが、誰かがこれを片付けてすべてを前進させることができますか?
π
編集: http://u3d.as/content/sta-blockhead/websocket-sharp-for-unity/4X4これは役に立ちますか?