2016-05-22 10 views
0

私はNovationのランチパッドデバイスを制御するためのアプリケーションを作成しています。ランチパッドは、入力用(ボタンが押された)と出力用(制御LED)用の2つのMIDIデバイスをインストールします。どのようにMIDIメッセージを傍受できますか?

ランチパッドからメッセージを受信すると、一連の他のメッセージを送信したいと考えています。それを行う最善の方法は何ですか?受信されたすべてのメッセージを直接ランチパッドに送り返されるように

今のところ、私は、出力デバイスのレシーバに入力装置の送信機をチェーン:

Transmitter lpTransmitter = inputDevice.getTransmitter(); 
lpTransmitter.setReceiver(outputDevice.getReceiver()); 
+1

"ランチパッドからメッセージを受信すると、一連の他のメッセージを送信します。"あなたは正しく動作する方法を正しく記述しています。何が問題なのですか? –

+0

さて、私はメッセージを受け取ったことをどのように知っていますか?イベントリスナーはありますか? –

答えて

0

私自身が解決策を見つけることができました。私がやったことは、私自身のトランスミッタとレシーバの実装を使ってデバイスをチェーン化したことです。

起動パッド入力 - >入力デバイスの受信機 - >自分の受信機 - >(自分の計算) - >自分の送信機 - > outputDeviceの受信機 - > outputDeviceの送信機 - >ランチパッドの出力。

、これはそれを行うには適切な方法であれば、私は知らないが、私のコードは次のようになりますので、今、私と一緒にクマ:MyMidiDeviceクラスの

// main 
// get launchpad devices, open them 

MyMidiDevice myDevice = new MyMidiDevice(); 

inputDevice.getTransmitter().setReceiver(myDevice); 
myDevice.setReceiver(outputDevice.getReceiver()); 

コード:

public class MyMidiDevice implements Transmitter, Receiver 
{ 

    private Receiver receiver; 

    @Override 
    public Receiver getReceiver() 
    { 
     return this.receiver; 
    } 

    @Override 
    public void setReceiver(Receiver receiver) 
    { 
     this.receiver = receiver; 
    } 

    @Override 
    public void close() 
    { 
    } 

    @Override 
    public void send(MidiMessage message, long timeStamp) 
    { 
     System.out.println(message); // computations 
     this.getReceiver().send(message, timeStamp); 
    } 
} 
0

​​3210パッケージは、コードによって実装されるインターフェースを有していますイベントを受け取りたいそれはReceiverと呼ばれます。

open the device before getting the transmitterにご注意ください。

+0

私はReceiverについて知っていますが、メッセージを受信するためにどのように使用しますか?私はそれを実装する独自のクラスを作成しますか? javadocは 'send()'を定義しなければならないと伝えますが、トランスミッタをリンクすると自動的に呼び出されますか?無知を許して、私はJavaの初心者です –

関連する問題