[Audio-engine-dev] New Gervill imported (Was: OpenJDK 6 b10 source posted)

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


Hi Mark,

Control rate can be fetched from the synthesizer using the AudioSynthesizer interface.
     AudioSynthesizer.getPropertyInfo()
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
  noteOn
  noteOff
  setPolyPressure
  setChannelPressure
  controlChange
  programChange(program)
  programChange(bank, program)
  setPitchBend
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 com.sun.media.sound.WaveFileReader

cheers,
Karl


________________________________________
Frá: Mark Wielaard [mark at klomp.org]
Sent: 8. júní 2008 22:23
Viðtakandi: Karl Helgason
Afrit: audio-engine-dev at openjdk.java.net; distro-pkg-dev at openjdk.java.net
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
changed.

2008-08-08  Mark Wielaard  <mark at klomp.org>

       * 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

        AudioFloatFormatConverter.AudioFloatFormatConverterInputStream

        AudioFloatFormatConverter.AudioFloatInputStreamChannelMixer

        AudioFloatFormatConverter.AudioFloatInputStreamResampler
                 SimpleInstrument.SimpleInstrumentPart
                 SoftChorus.VariableDelay
                 SoftChorus.LFODelay
                 SoftMixingDataLine.AudioFloatInputStreamResampler
                 SoftMixingSourceDataLine.NonBlockingFloatInputStream
                 SoftReverb.AllPass
                 SoftReverb.Comb
                 SoftReverb.Delay
        - Cleanup: Remove unused fields in:
                 SoftSincResampler.din, SoftLanczosResampler.din,
                 SoftMainMixer.finetuning,  SoftMainMixer.coarsetuning
                 SoftJitterCorrector.JitterStream.nullbuff,
                 SoftAbstractResampler.ModelAbstractResampler.loopread

        SoftAbstractResampler.ModelAbstractResampler.streammarked
        - Cleanup: Remove dead code from FFT.
        - Cleanup: Make constant fields in SoftFilter final.
        - Cleanup: Let SoftSynthesizer.info be final.
        - Cleanup: Let SoftProvider.info be final.
        - Fix: Unnecessary call to sourceDataLine.drain() in
        SoftSynthesizer
               causes random hangs in SoftSynthesizer.open 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 stream.read 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.

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 klomp.org>

        * 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.)

Cheers,

Mark



More information about the audio-engine-dev mailing list