view overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt @ 873:a1832ea486e9

Import Gervill fixes from CVS and add tests. 2008-05-23 Mark Wielaard <mark@klomp.org> * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound: Import Gervill fixes from CVS. See CHANGES.txt. Added: Software Mixing Mixer. Fix: AudioFloatFormatConverter.getTargetFormats() * overlays/openjdk/jdk/test/com/sun/media/sound: Imported all tests.
author Mark Wielaard <mark@klomp.org>
date Sun, 25 May 2008 21:21:11 +0200
parents 30c7450d05dc
children
line wrap: on
line source

  - Added: Software Mixing Mixer
  - Removed: PATSoundBankReader removed because no format license is available.
             It is also undocumented format. 
  - Added: AudioFloatFormatConverter, used to convert 
           between PCM_SIGNED, PCM_UNSIGNED, PCM_FLOAT in 8/16/24/32 bit (big/little endian),
           and resample using (linear/cubic/sinc...) if needed.
  - Fix: AudioFloatFormatConverter.getTargetFormats(Encoding, AudioFormat)         
         returned audio formats in encoding not asked for.
  - Added: WaveExtensibleReader, used to read WAV files using WAVE_FORMAT_EXTENSIBLE format.
  - Added: WaveFloatFileWriter, used to writing WAV files with PCM_FLOAT encoding.
  - Change: Make SoftAudioProcessor (limiter, reverb, chorus, agc) more general.
  - Fix: Don't restrict reading dls/sf2 soundbank to only files with .dls and .sf2 endings.
  - Fix: AudioFloatConverter tests incorrectly AudioFormat frameSize against SampleSizeInBits
         Support for 64-byte float added, and support for 32+ bit PCM samples.  
         SampleSizeInBits  not dividable by 8 are now handled correctly.
  - Fix: DLSID(GUID) values incorrectly read from files in DLSSoundBank.
  - Fix: WaveFloatFileReader incorrectly sets framrate.
  - Fix: DLSSoundbank writes avgBytesPerSec incorrectly if SampleSizeInBits is not dividable by 8.
  - Fix: SoftChannel didn't reset concept of LSB control to 0 when MSB control value is set
         (according to MIDI 1.0 Detailed Spec. page 12)
  - Fix: SoftChannel, added check for illegal noteNumbers.
         If illegal notenumber was used in NoteOn/NoteOff
         a ArrayOutOfIndex exception was thrown.
         
  - Fix: Default tempo in SoftMidiFileReader was supposed to be 500000 mpq or 120 bpm
  - Fix: Change type of info variable in SoftSynthesize into MidiDevice.Info
  - Fix: Fix instanceof check of p1 variable in ModelInstrumentComparator
  - Fix: Remove redundant constant variable in ModelByteBufferWaveTable

Version 0.9
  - Fix: JTreg SoftSynthesizer\ImplicitOpenClose.java
         did not test correctly.
  - Fix: SoftSynthesizer.isSoundbankSupported
         now only returns false if
         there is any instrument which is not supported.
  - Fix: SoftSynthesizer.remapInstrument
         did not work correctly.
  - Fix: SoftSynthesizer.loadInstrument
         SoftSynthesizer.loadInstruments
         SoftSynthesizer.loadAllInstruments
         SoftSynthesizer.unloadInstrument
         SoftSynthesizer.unloadInstruments
         SoftSynthesizer.unloadAllInstruments
         SoftSynthesizer.getAvailableInstruments
         SoftSynthesizer.getLoadedInstruments
         now throws IllegalArgumentException
         if instrument is not supported
         and false if instrument can't be loaded
         for some other reason.
  - Fix: SoftSynthesizer.getReceivers()
         SoftSynthesizer.getMicrosecondPosition()
         SoftSynthesizer.getVoiceStatus()
         SoftSynthesizer.getChannels()
         SoftMidiAudioFileReader.getAudioInputStream(Sequence seq)
         now no longer throw IllegalStateException.
  - Fix: SoftSynthesizer.getChannels() and
         SoftSynthesizer.getVoiceStatus()
         now no longer return internal array. 
  - Fix: CPU spiking caused by denormal floats in SoftReverb.
  - Fix: Calling getReceiver before opening the synthesizer results in NullPointerException.
    JTreg test added: SoftSynthesizer/GetReceiver2
  - Fix: Removed checksum check on
           BULK TUNING DUMP (NON-REAL-TIME)
         Because MIDI Tuning Spec was ambigous about
         how to calculate the checksum
         and different programs tested calculated 
         different checksum.       
         JTreg test SoftTuning/Load1 fixed.

VERSION 0.8
  - Fix: Active Sense Messages where incorrectly handled.
    JTreg test: SoftReceiver/Send_ActiveSense.java
  - Fix: SoftAudioPusher doesn't longer try to prevent blocking.
  - Added: SoftJitterCorrector added to fix jitter on long buffers.

VERSION 0.7
  - Fix: General MIDI mode,
    and voice_allocation_mode flag wasn't reseted on open/close cycle.     
  - Fix: Added support for implicit open/close    
    (as described in http://java.sun.com/javase/6/docs/api/javax/sound/midi/MidiDevice.html)
    (JTreg test also added)
    This done by implementing com.sun.media.sound.ReferenceCountingDevice interface.
  - Fix: SoftReceiver.close doesn't throw exception if closed.
    (now behaves like SoftSynthesizer.close)
  - Fix: Close variable wasn't accessed in Thread safe way in: 
    SoftReceiver, SoftSynthesizer.
  - Fix: Hang in SoftSynthesizer.close.
	SoftAudioPusher must not be closed synchronized against control_mutex			
	this may result in synchronized conflict between pusher and caller thread.
  - Fix: Bad handling of mono output in SoftVoice.processAudioLogic,
    this error was found running the new SoftSynthesizer/TestRender1 jtreg test.
  - Added: ModelDirector to support conditional layers/performers.   
  - Added: ReleaseTrigger property to ModelPerformer.
  - Added: ModelAbstractOscillator to simplify creation custom oscillators.
  - Added: ModelChannelMixer to support for example non-voice oriented instruments.
  - Added: Support for more than 16 midi channels.
  - Added: JARSoundBankReader.
  - Change default latency from 400 to 200 mec.
  
VERSION 0.6
  - Added RIFFWriter(OutputStream) constructor.
  - Added save(OutputStream out) to DLSSoundbank and SF2Soundbank.
  - Renamed :  isAddDefaultConnections   to  setDefaultConnectionsEnabled
  - Renamed :  getAddDefaultConnections  to  isDefaultConnectionsEnabled
  - Created JTreg Unit Tests   
  - Fixed error found in Unit Tests
      * AudioFloatConversion8U.toFloatArray, did not convert correctly
      * SoftSynthesizer.remapInstrument did not work
          The error was in ModelMappedInstrument
      * SoftSynthesizer.getMaxReceivers did not return -1
      * SoftTuning.checksumOK calculated incorrect checksums.
      * RIFFReader.close didn't work
      * AudioFloatInputStream.getFrameLength returned incorrect value.
      * ModelByteBuffer.writeTo didn't work when ModelByteBuffer uses file pointer.
      * ModelIdentifier.equals, didn't compare the variable "instance".
      * SimpleSoundbank.removeResource did not remove resource.
      * RIFFWriter.close never closed underlying stream.

VERSION 0.5
  - New instruments in Emergency Soundbank:
	  * Acoustic Grand Piano
  	  * Bright Acoustic Piano
	  * Honky-tonk Piano
	  * Guitar 
	  * Distortion Guitar
   	  * Trumpet
   	  * Trombone
	  * Brass Section
  	  * Horn
  	  * Sax
  	  * Oboe
  	  * Bassoon
	  * Clarinet
	  * Flute
	  * Timpani
	  * Melodic Toms
	  * Reverse Cymbal
	  * Orch Hit
  - Faster Linear Interpolation
    with no float to int casting.
      Thanks to Bruno Schoedlbauer for
      pointing out that float to int casting
      can be costly.
  - LargeSoundBankReader removed,
    Loading soundbank in large mode using urls removed.
  - Soundbank aren't loaded into memory
    until loadInstrument/loadAllInstrument
    is called in SoftSynthesizer.
    This enable loading only single instrument
    from soundbank collection into memory.
  - New "large mode" property added to SoftSynthesizer.    
  - "getInstrument" method in DLS/SF2/SimpleSoundbank
    now returns ordered list by program,bank,percussion.
  - Fix AccessControlException in "SoftSynthesizer.getDefaultSoundbank",
    which occurred when using SoftSynthesizer in Applets.
     
VERSION 0.4
  - Fixed ArrayOutOfBoundsException in SoftAbstractResmpler.
  - Fixed NullPointerException in SoundFont.save(File).
    Saving global zone for layers resulted in NullPointerException.
  - Fixed PATSoundbankReader.getInputStream
    so it doesn't throw InvalidFormatException.
    This prevented use of MidiSystem.getSoundBank(InputStream).
  - Fix: Delay wasn't implemented in AHDSR envelopes.
  - Loading soundbank in large mode supported using
    MidiSystem.getSoundBank(URL)
    Where url is on the form:
    file:/C:/soundbank.sf2?largemode=true
  - Reverb,Chorus,AGC can be turned on/off.
  - MIDI files can be opened as audio streams
    thru javax.sound.sampled.spi.AudioFileReader.
  - Optimizations, rendering is up to 50 percent faster.
  - Emergency SoundBank.

VERSION 0.3
  - SoftSynthesizer doesn't implement mixer interface anymore,
    instead the method "openStream" has been added.    
  - New AudioSynthesizer interface.
  - SoftSynthesizer.getVoiceStatus() is now thread-safe.
  - SoftAudioFeeder renamed to SoftAudioPusher
    and made more generic.
  - Support for multi-receiver in SoftSynthesizer.
  - More cleanup in SoftSynthesizer.
  - Fixed loops in large soundbanks.
  - WaveFloatFileReader added to META-INF/services

VERSION 0.2
  - Large format support see: LargeSoundbankReader
  - Fix soundfont modulator mapping
    direction mapping was wrong
  - Fix handling of unsigned 16 bit streams
  - Improved GUS patch support
  - Add support for ping-pong/bi-directional and reverse loops

VERSION 0.1 
  - Downloadable Sound Level 2.2.
  - SoundFont 2.04 (24 bit)
  - Gravis Ultrasound-compatible patches
  - Use Audio files (AIFF, AU and WAV) as SoundBanks
  - General Midi Level 2
  - MIDI Tuning Standard
  - Drumkits can be used on any channel
  - Sinc interpolation with anti-aliasing