Skip to main content

Source code file content

Revision: 289

6943053: Gervill: failures on invalid ranges and 14-bit banks
» Project Revision History

» Checkout URL

Mercurial / CHANGES.txt

Size: 19048 bytes, 1 line
6943053: Gervill: failures on invalid ranges and 14-bit banks
  - Fix: ModelStandardIndexedDirector fails on invalid ranges.
           JTreg test added:
  - Fix: 16-bit bank changes don't work.
           JTreg test added:

6941027: Gervill update, April 2010
  - Fix: Use AccessController.doPrivileged to access user settings
         and cached emergency soundbank.
           Affected File/Method: SoftSynthesizer.getDefaultSoundbank
  - Add: Support for user config file.
           Affected File/Method: SoftSynthesizer.getPropertyInfo
  - Add: Let SoftSynthesizer.getPropertyInfo use type conversion when needed.
           JTreg test added:
  - Add: Enable user to disable loading default soundbank.
           Affected File/Method: SoftSynthesizer.getPropertyInfo
           JTreg test added:
  - Fix: SoftSynthesizer.getAvailableInstruments should
         always return instruments from default soundbank.
           Affected File/Method: SoftSynthesizer.getAvailableInstruments
           JTreg test added:
  - Fix: SoftSynthesizer.getLoadedInstruments should always
         return loaded instrument.
           Affected File/Method: SoftSynthesizer.getLoadedInstruments
           JTreg test added:
           JTreg tests fixed:
               * this test never worked correctly
  - Fix: SoftSynthesizer.getDefaultSoundbank is not properly synchronized.
           Affected File/Method: SoftSynthesizer.getDefaultSoundbank
  - Optimization: Indexed version of ModelStandardDirector added.
  - Optimization: Fully unload instruments by setting null to unused values.
           Affected Files: SoftVoice, SoftChannel, SoftSynthesizer
  - Optimization: Prevent unnecessary lookup of instrument object
                on pseudo program change (when bank and program is unchanged)
           Affected File/Method: SoftChannel.programChange
  - Fix: AudioFloatInputStreamResampler.skip broken.
           (Gervill Bug Issues 5)
           Affected File/Method: 
           JTreg test added:
  - Fix: ModelByteBufferWaveTable.openStream().getFrameLength() 
         returns incorrect values in some cases.
           (Gervill Bug Issues 4) 
           Affected File/Method: ModelByteBufferWaveTable.openStream
           JTreg test added:
  - Fix: RealTime scale/octave tuning doesn't affect sounding notes.
           Affected File/Method: SoftVoice.updateTuning
           JTreg test added:

6833357: Improve time-stamp support in Gervill to reduce jitter.
6823449: Gervill: ArrayIndexOutOfBoundsException thrown when trying to play too may voices at same time.
6823446: Gervill SoftLowFrequencyOscillator fails when freq is set to 0 cent or 8.1758 Hz.
6823445: Gervill SoftChannel/ResetAllControllers jtreg test fails after portamento fix from last merge. 
6821030: Merge OpenJDK Gervill with upstream sources, Q1CY2009

  - Fix: Notes get stuck on when we overflow the synthesizer with rapid note on/off messages.
         JTreg test has been created:
  - Fix: Portamento controller reset to wrong value in SoftChannel.resetAllControllers.
         This caused incorrect glider effect in some midi files.
         For example in TuningApplet1 in TET-7 keyboard,
         when note was pressed for first time a glider effect could be heard.
  - Fix: Delay modulation calculation in SoftChorus.LFODelay where incorrect.
  - Fix: Removed unnecessary volatile keywords in SoftChorus.
  - Fix: Throw IllegalArgumentException Exception on
         invalid soundbank to:
         SoftSynthesizer.unloadAllInstruments(Soundbank soundbank)
         SoftSynthesizer.unloadInstruments(Soundbank soundbank, Patch[] patchList)
         just like done in:
         SoftSynthesizer.unloadInstrument(Instrument instrument).
  - Change: SoftMainMixer, SoftVoice optimized for mono voices.
  - Change: SoftFilter optimized. 
  - Fix: Turn SoftJitterCorrector, SoftAudioPusher threads into a daemon threads.
         These threads prevented the VM to exit when synthesizer was open.
  - Add: More JTreg tests added:
           AudioFloatConverter.ToFloatArray (improved)
  - Change: SoftReverb optimized, about 2 times faster.
  - Fix: ModelByteBuffer.skip called super.skip
         instead to call to RandomAccessFile directly.
         JTreg tests added: ModelByteBuffer/RandomFileInputStream/*.java
Version 1.0.2 (released in OpenJDK 6 b12)   
  - Fix: ModelByteBuffer.len was being modified in inner
         class RandomFileInputStream. The variable was made final
         and methods where fixed.
  - Fix: ArrayOutOfException error in ModelInstrument.getKeys(),
         Keys array was to small, it couldn't
         hold all possible midi notes (0..127).

Version 1.0.1 (released as 1.0)
  - Fix: Created dummy SourceDataline so that following 
         jtreg test can be tested without using
         a real Audio Device SourceDataLine.  
  - Fix: Make open SoftSynthesizer garbage-collectable
         when user don't have reference to it and it is not
         producing any sound.
  - Fix: SoftReverb silent detection improved.
  - Added: SoftSynthesizer.getPropertyInfo returns
           current properties values if it is open.        
  - Fix: Restrict input values in SoftChannel to 7 and 14 bit in these methods:
            programChange(bank, program)
  - Fix: Store generated soundbank to disk for faster future use.         
  - Cleanup: Make inner classes static 
  - Cleanup: Remove unused fields in:
              SoftSincResampler.din, SoftLanczosResampler.din, 
              SoftMainMixer.finetuning,  SoftMainMixer.coarsetuning
  - Cleanup: Remove dead code from FFT.
  - Cleanup: Make constant fields in SoftFilter final.
  - Cleanup: Let be final.
  - Cleanup: Let be final.
  - Fix: Unnecessary call to sourceDataLine.drain() in SoftSynthesizer 
         causes random hangs in jtreg test.
         This happens when the synthesizer is opened and right after closed.
         This will not happen if there is a delay between open and close call.
  - Fix: ModelByteBufferAudioFileSoundbankReader, 
         SoftAudioPusher, SoftJitterCorrector
          don't ignore return value.
  - Fix: NullPointerException in 
         SoftSynthesizer.unloadInstrument if instrument = null       
  - Fix: SoftJitterCorrector.getSoundbank(URL) may fail to close stream.
  - Fix: Futile attempts to guard buffers variable in SoftJitterCorrector.
  - Fix: RiffReader/SF2SoundbankReader/DLSSoundbank should use readfully instead of read 
         when reading from stream.
         JTreg tests where created to test for this.
  - 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.
Version 1.0 (released in OpenJDK 6 b10)
  - 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\
         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
         now throws IllegalArgumentException
         if instrument is not supported
         and false if instrument can't be loaded
         for some other reason.
  - Fix: SoftSynthesizer.getReceivers()
         SoftMidiAudioFileReader.getAudioInputStream(Sequence seq)
         now no longer throw IllegalStateException.
  - Fix: SoftSynthesizer.getChannels() and
         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
         Because MIDI Tuning Spec was ambigous about
         how to calculate the checksum
         and different programs tested calculated 
         different checksum.       
         JTreg test SoftTuning/Load1 fixed.

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

  - 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
    (JTreg test also added)
    This done by implementing 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.
  - 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.

  - 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.
  - Fixed ArrayOutOfBoundsException in SoftAbstractResmpler.
  - Fixed NullPointerException in
    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
    Where url is on the form:
  - 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.

  - 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

  - 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

  - 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
Please Confirm