Search code examples
javaaudiocontrolsjavasoundclip

Delay on Java.Clip Mute Controls


So i'm writing this sort of game in Java where you play like Guitar Hero. I can play both parts of the song (the song and the guitar) and so far so good. Next, i needed to mute the guitar part when someone missed a key. The problem is, there's a 1sec or so delay from the moment i mute the Clip until it actually mutes. How can this delay be fixed?

    try {
        audioIn = AudioSystem.getAudioInputStream(new File("guitar.wav"));
        guitar = AudioSystem.getClip();
        guitar.open(audioIn);
    } catch (Exception e) {}
    guitar.start();

    volume = (BooleanControl) guitar.getControl(BooleanControl.Type.MUTE);

An in the game loop:

    if (missedKey()) {
        volume.setValue(true);
     } else {
        volume.setValue(false);
     }

Solution

  • Ended up following Radiodef's answer and use byte streams. I have a buffer filled with 0's and i either output that or the normal audio to the stream.