I currently have some code which loops through patch selection of the Java Midi Synthesizer. I can select certain patches just fine (Harmonica, Clean Guitar, etc) but some of them (Grungey Guitar, UFOs) don't make any noise, and some don't sound right, for example: "Click" sounds like an organ. I have updated the soundbank file from Sun.com, and made sure that it was the only .gm file in lib/audio/. What's wrong?

public void SetInstrument(int instrumentNum, int channelNum) {
myInstrument = instrs[instrumentNum];
// Get the information describing the instrument - the
// patch contains the soundbank and program number
myPatch = myInstrument.getPatch();
// Set a channel to use the guitar instrument
channels[1].programChange(myPatch.getBank(),myPatch.getProgram());
}

I'm not a MIDI guru but I think I'm about the closest thing this forum has to one...

All I can do is point you to some soundbank examples...
[http://www.jsresources.org/examples/LoadSoundbank.html]
[http://www.jsresources.org/examples/DisplaySoundbank.html]

And point you to the Soundbank FAQ
[http://www.jsresources.org/faq_midi.html#sec_soundbank]

And point you to the manual...
[http://java.sun.com/j2se/1.5.0/docs/guide/sound/programmer_guide/chapter12.html#121793]

My biggest concern would be that the soundbank you're trying to use could be crap... I'd recommend finding some other soundbanks and trying them. And check to make sure your code works in a similar manner as the example code.