音源を変更することができません。私は楽器の値を切り替えますが、出力には何も変わりません。私は何を試しても、ピアノの楽器を弾くだけです。以下に簡単なコードを示します。誰にも何か提案はありますか?あるいは私は楽器オブジェクトの基本を欠いていますか?Java MIDIシンセサイザ - 音源を変更できません
import javax.sound.midi.*;
//import javax.sound.*;
public class Drum {
static int instrument = 45;
static int note = 100;
static int timbre = 0;
static int force = 100;
public static void main(String[] args) {
Synthesizer synth = null;
try {
synth = MidiSystem.getSynthesizer();
synth.open();
}
catch (Exception e) {
System.out.println(e);
}
Soundbank soundbank = synth.getDefaultSoundbank();
Instrument[] instr = soundbank.getInstruments();
synth.loadInstrument(instr[instrument]); //Changing this int (instrument) does nothing
MidiChannel[] mc = synth.getChannels();
mc[4].noteOn(note, force);
try { Thread.sleep(1000); }
catch(InterruptedException e) {}
System.out.println(instr[instrument].getName());
synth.close();
}
}
楽器をロードするだけでは、プログラムの変更メッセージも送信する必要があります。私はJavaプログラマーではないので、これを行う方法はわかりませんが、それはあなたがしなければならないことです。 http://download.oracle.com/javase/1.4.2/docs/api/javax/sound/midi/Synthesizer.html#loadInstrument(javax.sound.midi.Instrument) – Brad