この単純なコードは、私がテストに使用したいくつかのマシンで音を出していません。私は Eclipse 内からコードを実行していますが、コマンド ラインを使用しても無駄でした。
public static void main(String[] args)
{
try {
Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
MidiChannel[] channels = synthesizer.getChannels();
channels[0].noteOn(60, 60);
Thread.sleep(200);
channels[0].noteOff(60);
synthesizer.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
シーケンサーを取得し、シーケンスに MIDI イベントを追加し、シーケンスを再生することでサウンドを正常に取得できますが、シーケンサーがサポートしていないリアルタイムの音楽効果を実行しようとしています。
何か案は?
解決策を編集:問題は、デフォルトでは JRE にサウンドバンクが付属していないことです (興味深いことに、シーケンサーを使用すると機能しましたが、シンセサイザーを使用すると機能しませんでした)。ありがとう、thejmc !
この問題を解決するために、java.sun.com からサウンドバンクをダウンロードし、(WinXP では) C:\Program Files\jre1.6.0_07\lib\audio に配置しました (オーディオ フォルダを作成する必要がありました)。