2

私はしばらくの間iPadでアプリを(再)構築することを考えていました。そこでは、Objective-CとDSMIを使用してMIDI信号をホストコンピューターに送信していました。これは悪いことではありません(つまり、実際にアプリを作成することを除いて)。

今、私はおそらくAndroidタブレット(TBA)用のアプリを開発することを考えています。

Javaでは、MIDIメッセージ通信に使用できるオプションは何ですか?私はjavax.sound.midiに精通していますが、ホストにメッセージを送信するには仮想MIDIポートが必要になります。

一方、アプリがAdobe AIRで作成された場合、 MIDIとの通信にどのようなオプションを利用できますか?

明らかに別のオプションは、TCP / IPソケットを介してJavaホストにメッセージを送受信し、そのように話すことですが、少し面倒に聞こえます...またはそうではないでしょうか?結局のところ、DSMIはホストプログラムを使用します。

4

1 に答える 1

3

javax.sound.midiはAndroidでは使用できません。

AndroidのMIDI機能への唯一のアクセスは、JetPlayerクラスを介して行われ、ゲームで使用するために非常に設計されています。AndroidはMIDIファイルを再生しますが、使用するコードパスが不明であるため、メモリからMIDIハードウェアに書き込む方法はありません。

あるアプリでは、GUIとユーザーの操作に基づいて動的にノートを再生する必要があり、ノートを作成するためにサンプルとピッチフィルターを使用する必要がありました。

私には、DSMIをAndroidに移植する必要があるように思えます。そのオープンソースのiPhoneライブラリは非常にシンプルに見えますが、移植するのは難しいことではありません。

編集:

これについて少し考えた後、javax.sound.midiまたはAIRに存在するmidi機能を使用しても何も得られません。あなたがする必要があるのは、実際のMIDIシンセデバイスとの通信を担当する別のデバイスにネットワークリンクを介してMIDIメッセージを渡すことです。これはまさにDSMIが行うことです。iPhone libdsmiをAndroidに移植する必要があるのは、2つのソースファイルと2つのヘッダーだけです。1つは非常にシンプルでJavaに1行ずつ変換できるMIDIメッセージ形式を処理し、もう1つはDSMIサーバーへのネットワーク接続を処理します。DSMIサーバーはAndroidセマンティクスを使用してネットワーク接続を作成するために書き直す必要があります。

于 2010-05-26T15:32:01.547 に答える