JavaでMIDIファイルを再生する簡単なアプリケーションを作成しています。
図書館を利用していjavax.sound.midi
ます。
MIDI Out デバイス (USB to MIDI ケーブル) を正しく取得できます。
しかし、シーケンスを再生すると、ホスト OS の General Midi (Soundfont) 再生であるデフォルトのサウンド シンセサイザーで常に再生されます。
私が抱えている問題は、デフォルトの MIDI Out を変更することです。
私が実行するとき
Receiver MidiOutReceiver; //instantiated earlier
Sequencer MidiOutSequencer = MidiSystem.getSequencer();
MidiOutSequencer.open();
MidiOutSequencer.start();
スピーカーから MIDI シーケンスの再生が聞こえます。
ドキュメントを参照した後
3.10. 「Java サウンド シーケンサー」はデフォルトのシンセサイザーに暗黙的に接続されています。 3.5。 プログラムでは、自分で Synthesizer インスタンスを取得して接続できます 送信機/受信機のペアを明示的に使用してシーケンサーに送信します。 これで、どのシンセサイザーが使用されているかがわかります。 シンセサイザーに接続済みのシーケンサーを入手した場合、 メソッド getTransmitters() を使用して、シンセサイザーを見つけることができます。しかし、この送信機/受信機のペアを明示的に使用し、新しいデフォルト シンセサイザーでシーケンサー オブジェクトをインスタンス化する方法については言及されていません。
私は正しい送信機と受信機を持っています。しかし、それらは MIDI 出力から再生されていません。
また、試したときに
MidiSystem.getTransmitter().setReceiver(MidiOutReceiver);
何も変わらないようです。
デフォルト シーケンサーが MIDI 出力ポートを使用するように、このレシーバー/トランスミッター ペアをシンセサイザーで明示的に使用するにはどうすればよいですか?