質問
この単純なコードでは、私はそれをテストするために使用されてきたマシンのカップル上の任意の音を発生されていません。私は、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イベントを追加して、Sequencerを取得し、シーケンスを再生して音を得ることができるが、私は、シーケンサがサポートされていないいくつかのリアルタイムの音楽の影響を、やろうとしています。
任意のアイデア?
溶液での EDIT:のそれで問題が判明し、デフォルトでは、JREは、シーケンサーを使用して働いていること、そして、面白い(サウンドバンクが付属しますが、シンセサイザーのdidnを使用していない、ということです「T)。おかげで、 thejmc に!
この問題を解決するために、私はは、java.sunからサウンドバンクをダウンロード.COM とC(WinXPの上)にそれを置く:\プログラムファイル\ jre1.6.0_07 \ libに\オーディオ(オーディオフォルダを作成する必要がありました)。
解決
JREの一部のインストールは、ので、あなたのコードは、これらのマシン上でトリガする音源を持っていません(スペースを節約するために)JavaSound soundbank.gmが含まれていません。
動作していないマシン上のサウンドバンクの存在を確認してください。また、あなたの.classファイルと同じディレクトリにサウンドバンクを置くことができ、それはそれを見つけるでしょう。
これは、サウンドバンクを追加したり、Javaがこれらのマシンにインストール、アップグレードすることが可能である - 矛盾の痛みを、私は知っている:)
他のヒント
あなたは別のチャンネルを使用しようとしたことがありますか?
ソリューションに近いあなたを取得しますのこのdiscusson ...
私は私のマシン(Windows XPでは、JRE 1.6)でコードをテストしたのだが、ノートを弾くありません。おそらく、1つだけのノートには、それを聞いてあまりにも少ないです。より多くのメモを追加してみてください。また、大声で音量を設定しようとします。
ただ、近いシンセサイザーの前に1以上の睡眠行動を必要とします
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);
Thread.sleep(200);
synthesizer.close();
} catch (Exception e)
{
e.printStackTrace();
}
}