मुझे उपकरण बदलने के लिए प्रतीत नहीं होता है। मैं उपकरण के मूल्य को स्विच करता हूं लेकिन आउटपुट पर कुछ भी अलग नहीं करता हूं। मैं केवल एक पियानो उपकरण प्राप्त करने के लिए प्राप्त कर सकता हूं इससे कोई फर्क नहीं पड़ता कि मैं किस मूल्य का प्रयास करता हूं। नीचे सरल कोड है। क्या किसी के पास कोई सुझाव है? या क्या मैं उपकरण वस्तु का मौलिक लापता हूं?जावा मिडी सिंथेसाइज़र - उपकरण बदल नहीं सकते
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();
}
}
आप केवल एक उपकरण लोड नहीं कर सकते हैं, आपको एक प्रोग्राम चेंज संदेश भी भेजना होगा। मैं जावा प्रोग्रामर नहीं हूं, इसलिए मुझे नहीं पता कि यह कैसे करना है, लेकिन यही वह है जो आपको करना चाहिए। Http://download.oracle.com/javase/1.4.2/docs/api/javax/sound/midi/Synthesizer.html#loadInstrument(javax.sound.midi.Instrument) – Brad