Java Sound API: What's new in version 1.5.0


Java Sound API

Main New Features

  • Ports are now available on all platforms (RFE 4782900);
  • MIDI device i/o is now available on all platforms (RFE's 4812168, 4782924);
  • Optimized direct audio access is implemented on all platforms (RFEs 4908240 and 4908879). It is enabled by default on systems which offer native mixing (i.e. Linux ALSA with hardware mixing, Solaris Mixer enabled, Windows DirectSound);
  • The new real-time Sequencer works with all MIDI devices and allows unlimited Transmitters (RFE 4773012);
  • The configuration file allows choice of default devices (RFE 4776511). For details, see MidiSystem and AudioSystem for details;
  • MidiDevices can query connected Receivers and Transmitters (RFE 4931387, methods MidiDevice.getReceiver and MidiDevice.getTransmitter);
  • AudioFormat, AudioFileFormat, and MidiFileFormat now have properties that allow further description and qualification of the format (RFEs 4925767 and 4666845);
  • A set of ease-of-use methods allow easier retrieval of lines from AudioSystem (RFE 4896221);
  • The Sequencer interface is extended with loop methods, for seamless looping of specific portions of a MIDI sequence (RFE 4204105);
  • Java Sound no longer prevents the VM from exiting (bug 4735740).

Fixed bugs

4890405: Reading MidiMessage byte array fails in 1.4.2
4893793: UnsatisfiedLinkError on
4895934: AudioInputStream.getFrameLength returns wrong value for 12-bit AIFF file
4896221: RFE: Add Ease-Of-Use methods to AudioSystem
4903786: MIDI OUT does not implement getMicrosecondPosition() consistently
4902967: Sequencer does not call its registered receivers
4908240: RFE: Windows: Implement DirectSound lines
4908879: RFE: Solaris: direct audio card access
4909216: Potential wrong use of Class.forName()
4910986: MIDI file parser breaks up on http connection
4912588: Thread Deadlock in Clip
4912676: MidiChannel does not work anymore
4912739: SPEC: DataLine.Info.getFormats() should document NOT_SPECIFIED
4912894: SPEC: MidiSystem.getSequencer() etc. should not throw IAE
4913027: SPEC: several Sequencer methods should specify behaviour on closed Sequencer
4913582: SPEC: AudioFileFormat.Type.getExtension should say if with dot or not
4914639: JavaSound writes wrong sample rates to AIFF files
4914667: Closing and reopening MIDI IN device on Linux throws MidiUnavailableException
4915810: 2 Regression-test sound fails: NPE from
4916909: SPEC: MidiDevice should specify open/close behaviour precisely
4916947: SPEC: AudioSystem.getAudioFileTypes() etc. should specify duplicate free result
4917200: REGRESSION: 5 sound regression tests fail on Windows
4921049: REGRESSION: JCK1.5-runtime api/javax_sound/sampled/Line/index.html#Line fails
4925483: RFE: equals() should compare string in Encoding and Type
4925767: RFE: Add Properties to AudioFormat
4925770: is not accessible and should be removed
4928168: SPEC: Sequencer.setLoopCount throws undocumented IllegalArgumentException
4929955: Sequence.getMicrosecondLength() returns wrong value
4931387: RFE: Add methods to MidiDevice to get list of Transmitters and Receivers
4931400: Clarify default connections in default sequencer
4931588: DOC: MidiChannel should specify optionality
4931766: Linux: MIDI implementation doesn't distinguish between IN and OUT ports
4932835: REGRESSION: IAE for supported line in AudioSystem.getLine()
4932838: REGRESSION: undeclared IAE in MidiSystem.getReceiver()
4932841: asynchronous start/stop in Sequencer
4934158: DOC: clean up MidiDevice documentation
4934462: SPEC: Document that throws IAE
4934509: SPEC: Document explicitely MidiSystem.getReceiver's behavior
4935495: SPEC: in SourceDataLine.write() param description is missing
4935508: SPEC: should specify non-integral frame size behavior
4936397: Problems with DirectAudioDevice
4936799: SPEC: AudioSystem.getLine() searches all mixers
4937016: Unit test ActiveRunning fails consistently
4937018: New problems with DirectAudioDevice
4938236: Crash when opening synthesizer implicitly
4940459: AudioInputStream.getFrameLength() returns 0 instead of NOT_SPECIFIED
4941629: REGRESSION: JCK1.5 api/javax_sound/sampled/AudioSystem/index.html#AudioSystem
4946913: Sound inconsistent in tiger build 26 using TicTacToe demo
4946945: Crash in javasound while running TicTacToe demo applet tiger b26
4948663: JavaSoundDemo cannot playback loaded wav files
4949188: Solaris: cannot mix Synth with Audio playback
4949191: Synthesizer does not cut off notes
4949260: Regression-test javax/sound/midi/Sequencer/ hangs on Tiger-b26
4955856: Sequencer.setLoopStartPoint(int) does not throw expected IAE
4958829: Update build docs for ALSA on amd64
4958831: Update Makefiles for ALSA on amd64
4958917: Linux: reg test ClipFlushCrash fails
4964288: Unexpected IAE raised while getting TargetDataLine
4964303: TEST_BUG: IAE in Reg-test javax/sound/midi/Sequencer/
4964967: SPEC: invalid example in MidiChannel
4997635: Win: SourceDataLine playback loops endlessly unless you manually stop()
5001940: bit rate should be in bits/second
5001943: Sequencer.startRecording throws unexpected NPE
5001959: Short tick sound after finished playing with SourceDataLine
5011306: does not use the data2 parameter
5013897: Linux: Only maximum bits and channels in ALSA devices
5025549: Sequencer.setLoopStartPoint does not throw IAE
5026337: Java Sound Audio Engine uses a lot of memory
5029171: Linux: Clip.setFramePosition fails in stopped state
5029790: Synthesizer.getLatency returns wrong value
5032020: Win: DirectAudio stays silent after underrun
5032444: SPEC: typo in MidiSystem's spec
5033030: SPEC: wrong @see tag in MidiChannel
5048381: NullPointerException when saving a MIDI sequence
5067526: DOC: Set default format with DataLine.Info object
5071120: Win: JMF hangs in SourceDataLine.drain
5068652: Problem with MidiInDeviceProvider
5044140: REGRESSION:
5049129: RFE: DataLine.getFramePosition() should return long
4233634: RFE: Java Sound should allow / support multi-channel audio
4204105: RFE: add loop() method(s) to Sequencer
5053380: Interface SourceDataLine dose not output sound correctly in j2re 1.5.0beta1.
5047795: clips and recording report negative time in millisecond after 13 hours run
5083572: Re-editing of ShortMessage Data2 fails and Data1 is substituted!
4269230: Java Sound fails to detect and utilize multiple audio output devices
4274149: SPEC: AudioPermission throws undocumented IllegalArgumentException
4320445: Simultaneous playback and recording not possible anymore with JavaSound
5044712: ALSA support on Linux-amd64 is not working
4903472: RFE: Mark LineEvent not Serializable
4936284: DirectAudioDevice doesn't check arguments in read and write
4386052: Looping a portion of a clip from a start point to an end point doesn't work.
4385060: RFE: add getName() method to class ReverbType
4394767: Audio Device conflicts between .au playback and other programs (ie, WINAMP)
4434125: LineEvent.Type.STOP is returned too early for short sound clips
4452022: Potential wrong use of Class.forName
4482243: Detect supported sample rates for the default SourceDataLine
4493775: Sequencer method, setTickPosition(long) doesnot set the Tick position
4496546: DOC: Sequencer.getTickLength()/getMicrosecondLength() is specified incompletel
4558747: setMicrosecondPosition() does not work
4616517: Receiver.send() does not work properly
4629810: MidiSystem.getSoundbank() throws unexpected IOException
4659445: Different time length in Sequence and Sequencer
4666845: RFE: Add properties to AudioFileFormat, and MidiFileFormat
4672865: LineEvent.toString() throws unexpected NullPointerException
4673682: DOC: Mixer.getMaxLines() returns incorrect number
4679187: SPEC: throws unexpected Exceptions
4682959: Spec: SourceDataLine.write() throws unspecified ArrayIndexOutOfBoundsException
4703628: SPEC: actual parameters are not verified by ShortMessage.
4712612: SPEC: the same resource names in default soundbank
4735740: Java Sound keeps a console app from exiting because of non-daemon event thread
4773012: RFE: Implement a new stand-alone sequencer
4776511: RFE: Setting the default MixerProvider
4782900: RFE: Linux: Implement Ports
4782924: RFE: Linux: Implement MIDI device I/O
4794104: mixers are always present, independent of available soundcards
4795582: SPEC: AudioInputStream.available description is incomplete
4798000: SPEC: LineEvent: unspecified IllegalArgumentException
4812168: RFE: Support for Solaris MIDI
4827559: unspecified NullPointerException in
4836433: Windows: TargetDataLine.flush() does not work
4836434: Linux: MidiFileWriter does not work if Java Sound Engine is disabled
4839930: TEST_BUG: Regtest 5 sound tests do not check if sound is available
4851018: MidiMessage.getLength and .getData return wrong values
4867093: Javasound Ports duplicates ports with same "short name"
4875881: RegTest-test javax/sound/sampled/Clip/Drain/ fails
4883060: AudioSystem.getAudioFileTypes returns duplicates
5001940: custom soundbanks don't work if is not available

Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.

Left Curve
Java SDKs and Tools
Right Curve
Left Curve
Java Resources
Right Curve