SV: New Gervill imported (Was: OpenJDK 6 b10 source posted)

Karl Helgason kalli at
Thu Jul 24 19:02:34 PDT 2008

Hi Mark,

Control rate can be fetched from the synthesizer using the AudioSynthesizer interface.
And if you want to use another control rate you'll have to open the synthesizer
with the open(SourceDataLine line, Map<String, Object> info) using different
control rate value in the info parameter.
But it could be a good idea that getPropertyInfo() would return current values
when the synthesizer is open and default ones when it is closed.

I changed these methods in the SoftChannel
  programChange(bank, program)
So they won't accept out of range values (e.g. only 7 or 14 bit values).

I didn't like your idea of masking the getController output, and it also
didn't handle when we used negative values in the controlChange.
By restricting the input values we make the MidiChannel object more predictable
and getController will then always return true value not clipped one.

I am not sure we should hide the IOException in SF2SoundbankReader and DLSSoundbankReader.
This is not done in AudioFileReader classes from Sun.
For example in


Frá: Mark Wielaard [mark at]
Sent: 8. júní 2008 22:23
Viðtakandi: Karl Helgason
Afrit: audio-engine-dev at; distro-pkg-dev at
Efni: New Gervill imported (Was: OpenJDK 6 b10 source posted)

Hi Karl,

On Wed, 2008-06-04 at 11:25 +0200, Mark Wielaard wrote:
> On Wed, 2008-06-04 at 01:09 +0000, Karl Helgason wrote:
> Thanks for checking. These are all in the icedtea gervill overlay also.
> I'll make sure to upgrade to the latest CVS version in which I see you
> fixed some of the other issues I reported.
> > The code was also slightly reformatted:
> > a) lines "* @version %I%, %E%" was removed (such lines was removed from all JDK
> > sources);
> > b) line indention (to make lines no longer than 80 symbols);
> > c) tabs to spaces conversion;
> >
> > I will look into to reformat newest Gervill CVS code the same way.
> That would be great. Since 0.9 there have been lots of changes and fixes
> (which is why icedtea tracks your CVS tree and didn't use the old 0.9
> code). Would it be a good idea to do a new version upgrade after syncing
> the sources and reformatting to celebrate the inclusion?

Thanks a lot for you fixes and the reformatting. I imported the new
Gervill from CVS in two parts. First everything up to June 1st. Second
the reformatting itself. That way it should be easy to follow what

2008-08-08  Mark Wielaard  <mark at>

       * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound:
       Import Gervill fixes from CVS. See CHANGES.txt.
       * overlays/openjdk/jdk/test/com/sun/media/sound: Likewise.

        - 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
               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
        - Fix: Futile attempts to guard buffers variable in
        - Fix: RiffReader/SF2SoundbankReader/DLSSoundbank should use
        readfully instead of read
               when reading from stream.
               JTreg tests where created to test for this.

I like these cleanups. Your fix for the jtreg resources was nicer than
mine, so I dropped the icedtea one. I did take your change to the tests
needing a samplerate and controlrate argument to init the SoftLimiter to
just pass the constant values 44100 and 147. I also made the
SoftSynthesizer.getControlRate() protected again. I can kind of
understand using these constants in the tests. Although I find getting
them from the synthesizer nicer.

Is there a reason the control rate is always hardcoded to 147? There
actually doesn't seem to be any way to change it since the property info
always sets it explicitly.

With this there are only a few minor differences left between gervill
CVS and the icedtea overlay. I have attached the diff.

2008-06-08  Mark Wielaard  <mark at>

        * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound:
        Import Gervill CVS source reformatting.

For the interested I have attached the current diff between the
gervil/cvs/icedtea/overlay version and what is in openjdk6-b10.
(Note that line endings are different, openjdk6 uses CRLF, which is
disregarded when creating the diff.)



More information about the distro-pkg-dev mailing list