私は、 MIDI Tuning Standardを使用して、チューニングをコンサート ピッチ A4 = 440 Hz から任意のチューニング周波数に変更しています。私のマシンでは Windows 7 と JDK 1.8.0 で問題なく動作します。しかし、Tuning Standard が利用可能かどうかを事前に確認したいと思います。
Synthesizer synthesizer = MidiSystem.getSynthesizer();
System.out.println(synthesizer.getDeviceInfo().getName());
印刷され、 Gervills のホームページGervill
で説明されているように、Tuning Standard をサポートしています。
Gervill シンセサイザーは、すべてのプラットフォーム (Windows、Linux、Mac) の現在の JRE の一部ですか? はいの場合、それは長い間一部になりますか?
Gervill が MIDI Tuning Standard をサポートしていない別のシンセサイザーに置き換えられる場合、それが利用可能かどうかをテストしたいと思います。
MIDIチューニング規格が利用可能かどうかをテストするには?
私の考えは、 BULK TUNING DUMP REQUESTを送信することです。応答があれば、それが利用可能であると確信しています。
//@formatter:off
final byte[] data = new byte[] {
(byte) 0xf0, // SysEx Header
(byte) 0x7e, // Non-Realtime
(byte) 0x7f, // Target Device = All Devices
(byte) 0x08, // MIDI Tuning
(byte) 0x00, // Bulk Tuning Dump Request
(byte) 0x00, // preset = 0
(byte) 0xf7, // EOX
};
//@formatter:on
SysexMessage dumpRequest = new SysexMessage(data, data.length);
したがって、仕様は次のように述べています。
受信機器は、アドレス指定されたチューニング番号について、次のセクションで説明するバルク チューニング ダンプ メッセージを送信することによって応答する必要があります。
しかし、私の質問は、どうすればこの応答を受け取ることができるのでしょうか?
ノートを演奏して再チューニングを送信するために、私は次のように MIDI を使用します。
final int PPQN = 16; // Pulses/Ticks per quarter note
Sequence sequence = new Sequence(Sequence.PPQ, PPQN);
final Track track = sequence.createTrack();
// Send dump request
track.add(new MidiEvent(dumpRequest, 0));
// How to receive the response of the request?
final Sequencer sequencer = MidiSystem.getSequencer();
sequencer.setSequence(sequence);
sequencer.open();
sequencer.start();
// ...