-
Bug
-
Resolution: Fixed
-
P3
-
1.4.1
-
mantis
-
generic
-
generic
Name: vtR10009 Date: 07/11/2002
Specification for the method Sequencer.getTrackMute() from the
package javax.sound.midi reads:
".. This applies if the sequencer does not support muting of tracks, and
if the specified track index is not valid.
Parameters:
track - the track number. Tracks in the current sequence are numbered
from 0 to the number of tracks in the sequence minus 1."
But default Sequencer erroneously allows to set Mute state for
nonexistent track.
This bug causes failure of new JCK test:
api/javax_sound/midi/Sequencer/index.html#MuteSolo
To reproduce the bug run the following test with JDK build 1.4.1-rc-b16:
------------------------------- test.java --------------------------------
import java.io.*;
import java.net.*;
import javax.sound.midi.*;
public class test {
public static void main(String args[]) {
boolean failed = false;
Sequencer seq = null;
Sequence midiData = null;
URL seqURL = null;
int numTracks;
try {
seq = MidiSystem.getSequencer();
seq.open();
seqURL = new URL(args[0]);
midiData = MidiSystem.getSequence(seqURL);
seq.setSequence(midiData);
numTracks = midiData.getTracks().length;
System.err.println("TrackMute state was: " +
seq.getTrackMute(numTracks));
seq.setTrackMute(numTracks, true);
if (seq.getTrackMute(numTracks)) {
System.err.println("TrackMute state must not be set for
nonexistent "
+ "track! " + seq.getTrackMute(numTracks));
failed = true;
}
} catch (MidiUnavailableException mue) {
System.err.println("MidiUnavailableException was thrown: " + mue);
System.err.println("could not test.");
failed = true;
} catch (InvalidMidiDataException imEx) {
imEx.printStackTrace();
System.err.println("InvalidMidiDataException was thrown.");
failed = true;
} catch (IOException ioe) {
System.err.println("Could not open the midi file.");
failed = true;
} finally {
if (seq != null) seq.close();
}
if( failed ) {
System.err.println("test failed");
System.exit(1);
} else {
System.out.println("OKAY");
System.exit(0);
}
}
}
---------------------------Logs-------------------------------------------
novo101:templates$ javac test.java; java -showversion test
file://`pwd`/metatest.mid
java version "1.4.1-rc"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-rc-b16)
Java HotSpot(TM) Client VM (build 1.4.1-rc-b16, mixed mode)
TrackMute state was: false
TrackMute state must not be set for nonexistent track! true
test failed
--------------------------------------------------------------------------
======================================================================