Alex Rivera | Logout

Simple Java MIDI example not producing any sound

Asked 2008-12-19T04:28:10.393
10

This simple code is not producing any sound on a couple of machines that I've used to test it. I'm running the code from within Eclipse, but I've also tried using the command line to no avail.

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();
    }
}

I am able to successfully get sound by getting a Sequencer, adding MIDI events to the sequence, and playing the sequence, but I'm trying to do some real-time music effects, which the sequencer does not support.

Any ideas?

EDIT WITH SOLUTION: It turns out the problem is that, by default, the JRE doesn't come with a soundbank (interesting, then, that using the Sequencer worked, but using the Synthesizer didn't). Thanks, thejmc!

To solve the problem, I downloaded a soundbank from java.sun.com and placed it in (on WinXP) C:\Program Files\jre1.6.0_07\lib\audio (had to make the audio folder).

Edit
Report

1 Answer

0

I've tested your code in my machine (Windows XP, JRE 1.6) and it does play the notes. Perhaps just a single note is too little to hear it. Try to add more notes. Also, try to set the volume louder.

answered 2008-12-19T08:24:48.623

Your Answer