Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Replace default Java Sound Synthesizer with Microsoft GS Wavetable Synth

843802Apr 24 2010
Because of the severe latency of the Java MIDI Sound Synthesizer (>70ms), I would like to try to replace it with the system midi synthesizer which is called Microsoft GS Wavetable Synth on my Windows 7/32 bit system with Sound Max motherboard sound. Does anyone know if this would reduce latency, and if so, specifically how to do this?

My system uses the following to list the Midi providers
private void open() throws MidiUnavailableException {
synth = MidiSystem.getSynthesizer();
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
MidiDevice.Info msInfo = null;
StringBuilder sb = new StringBuilder();
sb.append("Available MidiDevice are\n");
for (MidiDevice.Info i : infos) {
if (i.toString().contains("Microsoft GS Wavetable Synth")) {
msInfo = i;
sb.append(" *****");
}
sb.append("\t"  +i.toString()+  ": "  +i.getDescription()+  '\n');
}
MidiDevice msDevice = MidiSystem.getMidiDevice(msInfo);
synth.open();

sb.append("synth="  +synth.getDeviceInfo().toString()+  " with default soundbank "  +synth.getDefaultSoundbank().getDescription()+  '\n');
sb.append("max synthesizer latency ="  +synth.getLatency()+  " us\n");
log.info(sb.toString());
channels = synth.getChannels();
channel = channels[PERCUSSION_CHANNEL];
}
and it prints the following
INFO: Available MidiDevice are
        Microsoft MIDI Mapper: Windows MIDI_MAPPER
 *****        Microsoft GS Wavetable Synth: Internal software synthesizer
        Real Time Sequencer: Software sequencer
        Java Sound Synthesizer: Software wavetable synthesizer and receiver
synth=Java Sound Synthesizer with default soundbank Soundbank for use with Java Sound Audio Engine
max synthesizer latency =69660 us
I cannot figure out how to replace the Java Sound Synthesizer with the Microsoft (Roland) synthesizer. I've tried getTransmitter().setReceiver() etc but nothing seems to work.

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on May 22 2010
Added on Apr 24 2010
0 comments
452 views