0

私は、 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();
// ...
4

1 に答える 1

0

MIDI 実装チャートでわかるように、Gervill は (ほとんどの他のソフトウェア シンセサイザーと同様に) MIDI メッセージを送信しません。

コードからデフォルトのシンセサイザーの機能を確認することはできません。

特定のシンセサイザーを使用する場合は、手動で作成する必要があります。(ガービルのクラスは になりますcom.sun.media.sound.SoftSynthesizer。)

于 2014-08-29T10:49:34.457 に答える