これは、すべてのMIDIメッセージを聞くためのソリューションでした。
import javax.sound.midi.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class Main {
public static Receiver synthRcvr = new CustomReceiver();
public static Transmitter seqTrans;
public static Synthesizer synth;
public static void main(String[] args) {
try {
sequencer = MidiSystem.getSequencer();
sequence = MidiSystem.getSequence(new File("test.midi"));
Sequencer sequencer = MidiSystem.getSequencer();
seqTrans = sequencer.getTransmitter();
seqTrans.setReceiver(synthRcvr);
sequencer.open();
sequencer.setSequence(sequence);
sequencer.start();
} catch (IOException | MidiUnavailableException | InvalidMidiDataException e) {
System.out.println(e);
}
}
これは実装レシーバクラスです:
import javax.sound.midi.MidiMessage;
import javax.sound.midi.Receiver;
public class CustomReceiver implements Receiver {
public CustomReceiver() {
}
@Override
public void send(MidiMessage message, long timeStamp) {
// Process midi messages here
}
@Override
public void close() {
}
}
の可能性のある重複 - (https://stackoverflow.com/questions/ [Javaのミディそれが遊んでいる間、MIDIからのノートを取得する方法] 26266411/java-midi-how-to-get-notes-from-midi-playing中) –
私はその答えを読んだ。リンクの1つは、トランスミッタ/レシーバを使用するように指示しますが、トランスミッタ/レシーバの実装方法や動作方法についての詳細は記載されていません。もう1つはレシーバダンプを示すソースコードですが、ソースコードはかなり進んでいますが、レシーバが実際にどのように使用されているかを点で結び付けるのは難しかったです。 – user6688986
あなたのオブジェクトは 'Receiver'インターフェースを実装しなければなりません。 –