JDK-6941027 : Gervill update, April 2010
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.sound
  • Affected Version: OpenJDK6
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2010-04-06
  • Updated: 2011-01-19
  • Resolved: 2010-04-09
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 Other
7Fixed OpenJDK6Fixed
Related Reports
Relates :  
Relates :  
Description
Address various Gervill bugs.
Major fixes:

* Allow access to cached emergency soundbank using AccessController.doPrivileged
   This fix allows using cached emergency soundbank in applets
   which speeds up loading of applets especially on slow computers.
   And also using AccessController.doPrivileged we can use user-installed
   soundfonts in applets e.g. soundfonts found in audio folder of JRE.

* Support for user config file.
   Default settings for Gervill don't always suit everybody,
   some needed lower latency, different samplerate and e.t.c
   To fix that a support to allow user to change default settings using
   Preferences API was added.

* Fixed how getAvailableInstruments and getLoadedInstruments worked.
   SoftSynthesizer.getAvailableInstruments now always returns instruments
   from default soundbank. And getLoadedInstruments now always returns
   loaded instruments. The behavior of these methods where not correct.

* Improved support for large soundbanks
   a)  Indexed version of ModelStandardDirector added which speeds up
        looking up notes in instruments with many layers.
   b)  Allow unused instrument to be garbage collected more easily,
        we now put null value to unused variable.
   c) Prevent unnecessary lookup of instrument object
       on pseudo program change (when bank and program is unchanged)

* Enable user to disable loading default soundbank.
   Some users wanted to be able to open the synthesizer
   without the synthesizer loading the default soundbank.

And then there was several other bug fixes:
* Fix: Synchronization bug in n SoftSynthesizer.getDefaultSoundbank
* Fix: AudioFloatInputStreamResampler.skip broken
* Fix: RealTime scale/octave tuning doesn't affect sounding notes.
* Fix: ModelByteBufferWaveTable.openStream().getFrameLength()
          returns incorrect values in some cases.

Complete list of changes made:
  - 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:
             /test/SoftSynthesizer/GetPropertyInfo
  - Add: Enable user to disable loading default soundbank.
           Affected File/Method: SoftSynthesizer.getPropertyInfo
                                 SoftSynthesizer.processPropertyInfo
                                 SoftSynthesizer.openStream
           JTreg test added:
             /test/SoftSynthesizer/TestDisableLoadDefaultSoundbank
  - Fix: SoftSynthesizer.getAvailableInstruments should
         always return instruments from default soundbank.
           Affected File/Method: SoftSynthesizer.getAvailableInstruments
           JTreg test added:
             /test/SoftSynthesizer/GetAvailableInstruments2
  - Fix: SoftSynthesizer.getLoadedInstruments should always
         return loaded instrument.
           Affected File/Method: SoftSynthesizer.getLoadedInstruments
           JTreg test added:
             /test/SoftSynthesizer/GetLoadedInstruments2
           JTreg tests fixed:
             /test/SoftSynthesizer/LoadAllInstruments
             /test/SoftSynthesizer/LoadInstrument
             /test/SoftSynthesizer/LoadInstruments
             /test/SoftSynthesizer/RemapInstrument
               * this test never worked correctly
             /test/SoftSynthesizer/UnloadAllInstruments
             /test/SoftSynthesizer/UnloadInstrument
             /test/SoftSynthesizer/UnloadInstruments
  - 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)
           see: https://gervill.dev.java.net/issues/show_bug.cgi?id=5
           Affected File/Method:
             AudioFloatFormatConverter.AudioFloatInputStreamResampler.skip
           JTreg test added:
           /test/AudioFloatFormatConverter/SkipTest
  - Fix: ModelByteBufferWaveTable.openStream().getFrameLength()
         returns incorrect values in some cases.
           (Gervill Bug Issues 4)
           see: https://gervill.dev.java.net/issues/show_bug.cgi?id=4
           Affected File/Method: ModelByteBufferWaveTable.openStream
           JTreg test added:
             /test/ModelByteBufferWavetable/OpenStream
  - Fix: RealTime scale/octave tuning doesn't affect sounding notes.
           Affected File/Method: SoftVoice.updateTuning
           JTreg test added:
             /test/ModelByteBufferWavetable/OpenStream

Comments
PUBLIC COMMENTS See http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/74e449a8c951
09-04-2010

EVALUATION Gervill should be up to date.
08-04-2010