<Sound Dev> Updating Gervill for OpenJDK 6 build 12

View: New views
14 Messages — Rating Filter:   Alert me  

<Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello.

With my OpenJDK 6 release manager hat on, I've been working to update
the version of Gervill used to OpenJDK 6 to a newer version that passes
the JCK tests, etc. and I'd like some review of my integration work.  
Before this exercise, I don't have any prior experience with sound code.

A few comments, the copyright header in file SoftCubicResampler.java in
the Gervill CVS master contains the typo "suabject" instead of
"subject."  From some casual examination of the code, it seems to use
raw types throughout, that is "List" rather than "List<String>", etc.  
It would be better to covert to using generics; I think IDEs have
refactorings to help this now.

There are some differences between the latest Gervill CVS from the
project's site and the Gervill overlays in IcedTea 6.  In particular,
IcedTea has changes to SoftMixingMixer.java and SoftSynthesizer.java as
well as some additional files, WaveExtensibleFileReader.java and
WaveFloatFileWriter.java.  I'd prefer to limit future merging work
between the three code bases, Gervill CVS, OpenJDK 6, and IcedTea
overlays, so in the context of updating Gervill for OpenJDK 6 b12, I
think it would be good to resolve these remaining few differences.  The
test directories are the same in all three code bases, except I don't
pick up a missing newline at the end of
./SoftCubicResampler/Interpolate.java.

During the update I ran into some testing issues, both with the original
Gervill integration in OpenJDK 6 b10 as well as the new code for b12.  
Specifically, the 9 regression tests

javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java
javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java
javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java
javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java
javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java
javax/sound/midi/Gervill/SoftSynthesizer/Open.java

can fail, seemingly dependent on how one logs into the machine.  What
are the necessary and sufficient conditions for permissions to run these
tests?  When they occur, the failures I see look like:

 Windows
=========

java.lang.IllegalArgumentException: No line matching interface
SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
4 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at
javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
    at Open.main(Open.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at
com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
    at java.lang.Thread.run(Thread.java:636)

 Linux
======

STDERR:
java: conf.c:3109: snd_config_update_free: Assertion `update->count > 0
&& update->finfo' failed.

TEST RESULT: Failed. Unexpected exit from test [exit code: 134]

 Solaris
=======

java.lang.IllegalArgumentException: No line matching interface
SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
4 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at
javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
    at Open.main(Open.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at
com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
    at java.lang.Thread.run(Thread.java:636)

These failures occur with the essentially Gervill CVS files I'm using as
well as the IcedTea versions.

I've uploaded my webrev compared to the OpenJDK 6 b11 sources to

http://dcstaff.invokedynamic.info/index.php?title=Image:darcy-6717691.tgz

Below are the diffs of between Gervill CVS and my workspace and the
recent IcedTea overlays and my workspace; I just loop over the Java
files in the base directory, print out the file name, and then the
result of diff-ing with the corresponding files in my workspace.

Thanks,

-Joe


 Latest Gervill CVS (July 21, 2008) vs my workspace:
========================================

AudioFileSoundbankReader.java
AudioFloatConverter.java
AudioFloatFormatConverter.java
AudioFloatInputStream.java
AudioSynthesizer.java
AudioSynthesizerPropertyInfo.java
DLSInfo.java
DLSInstrument.java
DLSModulator.java
DLSRegion.java
DLSSample.java
DLSSampleLoop.java
DLSSampleOptions.java
DLSSoundbank.java
DLSSoundbankReader.java
EmergencySoundbank.java
FFT.java
InvalidDataException.java
InvalidFormatException.java
JARSoundbankReader.java
ModelAbstractChannelMixer.java
ModelAbstractOscillator.java
ModelByteBuffer.java
ModelByteBufferWavetable.java
ModelChannelMixer.java
ModelConnectionBlock.java
ModelDestination.java
ModelDirectedPlayer.java
ModelDirector.java
ModelIdentifier.java
ModelInstrument.java
ModelInstrumentComparator.java
ModelMappedInstrument.java
ModelOscillator.java
ModelOscillatorStream.java
ModelPatch.java
ModelPerformer.java
ModelSource.java
ModelStandardDirector.java
ModelStandardTransform.java
ModelTransform.java
ModelWavetable.java
RIFFInvalidDataException.java
RIFFInvalidFormatException.java
RIFFReader.java
RIFFWriter.java
SF2GlobalRegion.java
SF2Instrument.java
SF2InstrumentRegion.java
SF2Layer.java
SF2LayerRegion.java
SF2Modulator.java
SF2Region.java
SF2Sample.java
SF2Soundbank.java
SF2SoundbankReader.java
SimpleInstrument.java
SimpleSoundbank.java
SoftAbstractResampler.java
SoftAudioBuffer.java
SoftAudioProcessor.java
SoftAudioPusher.java
SoftChannel.java
SoftChannelProxy.java
SoftChorus.java
SoftControl.java
SoftCubicResampler.java
8c8
<  * particular file as suabject to the "Classpath" exception as provided
---
 >  * particular file as subject to the "Classpath" exception as provided
SoftEnvelopeGenerator.java
SoftFilter.java
SoftInstrument.java
SoftJitterCorrector.java
SoftLanczosResampler.java
SoftLimiter.java
SoftLinearResampler.java
SoftLinearResampler2.java
SoftLowFrequencyOscillator.java
SoftMainMixer.java
SoftMidiAudioFileReader.java
SoftMixingClip.java
SoftMixingDataLine.java
SoftMixingMainMixer.java
SoftMixingMixer.java
SoftMixingMixerProvider.java
SoftMixingSourceDataLine.java
SoftPerformer.java
SoftPointResampler.java
SoftProcess.java
SoftProvider.java
SoftReceiver.java
SoftResampler.java
SoftResamplerStreamer.java
SoftReverb.java
SoftShortMessage.java
SoftSincResampler.java
SoftSynthesizer.java
SoftTuning.java
SoftVoice.java


 IcedTea 6 58510fd936ff overlays vs my workspace
======================================

AudioFileSoundbankReader.java
AudioFloatConverter.java
AudioFloatFormatConverter.java
AudioFloatInputStream.java
AudioSynthesizer.java
AudioSynthesizerPropertyInfo.java
DLSInfo.java
DLSInstrument.java
DLSModulator.java
DLSRegion.java
DLSSample.java
DLSSampleLoop.java
DLSSampleOptions.java
DLSSoundbank.java
DLSSoundbankReader.java
50,51d49
<         } catch(IOException ioe) {
<             return null;
EmergencySoundbank.java
FFT.java
InvalidDataException.java
InvalidFormatException.java
JARSoundbankReader.java
ModelAbstractChannelMixer.java
ModelAbstractOscillator.java
ModelByteBuffer.java
ModelByteBufferWavetable.java
ModelChannelMixer.java
ModelConnectionBlock.java
ModelDestination.java
ModelDirectedPlayer.java
ModelDirector.java
ModelIdentifier.java
ModelInstrument.java
ModelInstrumentComparator.java
ModelMappedInstrument.java
ModelOscillator.java
ModelOscillatorStream.java
ModelPatch.java
ModelPerformer.java
ModelSource.java
ModelStandardDirector.java
ModelStandardTransform.java
ModelTransform.java
ModelWavetable.java
RIFFInvalidDataException.java
RIFFInvalidFormatException.java
RIFFReader.java
RIFFWriter.java
SF2GlobalRegion.java
SF2Instrument.java
SF2InstrumentRegion.java
SF2Layer.java
SF2LayerRegion.java
SF2Modulator.java
SF2Region.java
SF2Sample.java
SF2Soundbank.java
SF2SoundbankReader.java
49,50d48
<         } catch(IOException ioe) {
<             return null;
SimpleInstrument.java
SimpleSoundbank.java
SoftAbstractResampler.java
SoftAudioBuffer.java
SoftAudioProcessor.java
SoftAudioPusher.java
SoftChannel.java
1197,1199c1197
<             // Should only return lower 7 bits,
<             // even when controller is "boosted" higher.
<             return this.controller[controller] & 127;
---
 >             return this.controller[controller];
SoftChannelProxy.java
SoftChorus.java
SoftControl.java
SoftCubicResampler.java
8c8
<  * particular file as suabject to the "Classpath" exception as provided
---
 >  * particular file as subject to the "Classpath" exception as provided
SoftEnvelopeGenerator.java
SoftFilter.java
SoftInstrument.java
SoftJitterCorrector.java
SoftLanczosResampler.java
SoftLimiter.java
SoftLinearResampler.java
SoftLinearResampler2.java
SoftLowFrequencyOscillator.java
SoftMainMixer.java
SoftMidiAudioFileReader.java
SoftMixingClip.java
SoftMixingDataLine.java
SoftMixingMainMixer.java
SoftMixingMixer.java
357,359d356
<                     DataLine.Info info = new DataLine.Info(
<                             SourceDataLine.class, format);
<
368,369c365,413
<                             line = (SourceDataLine)
defaultmixer.getLine(info);
<                         else
---
 >                         {
 >                             // Search for suitable line
 >                            
 >                             DataLine.Info idealinfo = null;
 >                             AudioFormat idealformat = null;
 >                            
 >                             Line.Info[] lineinfos =
defaultmixer.getSourceLineInfo();
 >                             idealFound:
 >                             for (int i = 0; i < lineinfos.length; i++) {
 >                                 if(lineinfos[i].getLineClass() ==
SourceDataLine.class)
 >                                 {
 >                                     DataLine.Info info =
(DataLine.Info)lineinfos[i];
 >                                     AudioFormat[] formats =
info.getFormats();
 >                                     for (int j = 0; j <
formats.length; j++) {
 >                                         AudioFormat format = formats[j];
 >                                         if(format.getChannels() == 2 ||
 >                                                 format.getChannels()
== AudioSystem.NOT_SPECIFIED)
 >                                        
if(format.getEncoding().equals(Encoding.PCM_SIGNED) ||
 >                                                
format.getEncoding().equals(Encoding.PCM_UNSIGNED))
 >                                         if(format.getSampleRate() ==
AudioSystem.NOT_SPECIFIED ||
 >                                                
format.getSampleRate() == 48000.0)
 >                                        
if(format.getSampleSizeInBits() == AudioSystem.NOT_SPECIFIED ||
 >                                                
format.getSampleSizeInBits() == 16)
 >                                         {
 >                                             idealinfo = info;
 >                                             int ideal_channels =
format.getChannels();
 >                                             boolean ideal_signed =
format.getEncoding().equals(Encoding.PCM_SIGNED);
 >                                             float ideal_rate =
format.getSampleRate();
 >                                             boolean ideal_endian =
format.isBigEndian();                                          
 >                                             int ideal_bits =
format.getSampleSizeInBits();                                          
 >                                             if(ideal_bits ==
AudioSystem.NOT_SPECIFIED) ideal_bits = 16;
 >                                             if(ideal_channels ==
AudioSystem.NOT_SPECIFIED) ideal_channels = 2;
 >                                             if(ideal_rate ==
AudioSystem.NOT_SPECIFIED) ideal_rate = 48000;
 >                                             idealformat = new
AudioFormat(ideal_rate, ideal_bits,
 >                                                     ideal_channels,
ideal_signed, ideal_endian);
 >                                             break idealFound;
 >                                         }
 >                                     }
 >                                 }                                  
 >                             }
 >                            
 >                             if(idealformat != null)
 >                             {
 >                                 format = idealformat;
 >                                 line = (SourceDataLine)
defaultmixer.getLine(idealinfo);
 >                             }
 >                         }
 >                        
 >                         if(line == null)
SoftMixingMixerProvider.java
SoftMixingSourceDataLine.java
SoftPerformer.java
SoftPointResampler.java
SoftProcess.java
SoftProvider.java
SoftReceiver.java
SoftResampler.java
SoftResamplerStreamer.java
SoftReverb.java
SoftShortMessage.java
SoftSincResampler.java
SoftSynthesizer.java
540a541,546
 >             File userhome = null;
 >             File emg_soundbank_file = null;
 >            
 >             /*
 >              *  Try to load saved generated soundbank
 >              */              
541a548,563
 >                 userhome = new File(System.getProperty("user.home"),
 >                      ".gervill");
 >                 emg_soundbank_file = new File(userhome,
"soundbank-emg.sf2");
 >                 Soundbank sbk =
MidiSystem.getSoundbank(emg_soundbank_file);
 >                 defaultSoundBank = sbk;
 >                 return defaultSoundBank;              
 >             } catch (AccessControlException e) {
 >             } catch (Exception e) {
 >                 //e.printStackTrace();
 >             }
 >            
 >             try {
 >                
 >                 /*
 >                  *  Generate emergency soundbank
 >                  */
542a565,574
 >                
 >                 /*
 >                  *  Save generated soundbank to disk for faster
future use.
 >                  */
 >                 if(defaultSoundBank != null)
 >                 {
 >                     if(!userhome.exists()) userhome.mkdirs();
 >                     if(!emg_soundbank_file.exists())
 >                        
((SF2Soundbank)defaultSoundBank).save(emg_soundbank_file);
 >                 }
594,596d625
<         if (soundbank == null || !isSoundbankSupported(soundbank))
<             throw new IllegalArgumentException("Unsupported soundbank:
" + soundbank);
<
621,623d649
<         if (soundbank == null || !isSoundbankSupported(soundbank))
<             throw new IllegalArgumentException("Unsupported soundbank:
" + soundbank);
<
SoftTuning.java
SoftVoice.java
WaveExtensibleFileReader.java
diff:
/net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java:
No such file or directory
WaveFloatFileReader.java
74a75
 >         long framerate = 1;
89c90
<                 /* framerate = */chunk.readUnsignedInt();
---
 >                 framerate = chunk.readUnsignedInt();
106c107
<                 framesize, samplerate, false);
---
 >                 framesize, framerate, false);
WaveFloatFileWriter.java
diff:
/net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java:
No such file or directory


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Karl Helgason-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Joe,

Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are then copied from Gervill CVS.
Any fixes that have been done in Gervill overlays in IcedTea 6 has also been done Gervill CVS.
Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can be seen in the CHANGES file.

I have fixed the "suabject" typo in the SoftCubicResampler.java in the Gervill CVS master.
Where did you find raw types in the code, there aren't supposed to be any.

WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader has been
moved to src.floatwav in the Gervill CVS. Because they aren't directly related with
Gervill Synthesizer. They simply add support for float encoded Wave files.
And WaveExtensibleFileReader is also a proposal how we should store
channel mask in AudioFormat properties (used for multi-channel wave files).

SoftMixingMixer is a experimental mixer to replace the functionality of the
Java Sound Audio Engine mixer. It performs software audio mixing,
which is useful when the audio hardware doesn't support mixing.
It is not yet fully ready. And thus is disabled in the IcedTea.

Those 9 regression tests fails because we aren't able to open audio device
with default format.
This is the code that fails:
  AudioFormat format = new AudioFormat(44100, 16, 2, true, false)
  line = AudioSystem.getSourceDataLine(getFormat());
It will be interesting to know if this code fails under those conditions which
the regression tests fail in.
And it will also be interesting to know if these tests also fails
if you enable the SoftMixingMixerProvider mixer provider.

regards,
Karl

________________________________________
Frá: sound-dev-bounces@... [sound-dev-bounces@...] Fyrir hönd Joe Darcy [Joe.Darcy@...]
Sent: 22. júlí 2008 22:53
Viðtakandi: audio-engine-dev@...
Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
Efni: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

Hello.

With my OpenJDK 6 release manager hat on, I've been working to update
the version of Gervill used to OpenJDK 6 to a newer version that passes
the JCK tests, etc. and I'd like some review of my integration work.
Before this exercise, I don't have any prior experience with sound code.

A few comments, the copyright header in file SoftCubicResampler.java in
the Gervill CVS master contains the typo "suabject" instead of
"subject."  From some casual examination of the code, it seems to use
raw types throughout, that is "List" rather than "List<String>", etc.
It would be better to covert to using generics; I think IDEs have
refactorings to help this now.

There are some differences between the latest Gervill CVS from the
project's site and the Gervill overlays in IcedTea 6.  In particular,
IcedTea has changes to SoftMixingMixer.java and SoftSynthesizer.java as
well as some additional files, WaveExtensibleFileReader.java and
WaveFloatFileWriter.java.  I'd prefer to limit future merging work
between the three code bases, Gervill CVS, OpenJDK 6, and IcedTea
overlays, so in the context of updating Gervill for OpenJDK 6 b12, I
think it would be good to resolve these remaining few differences.  The
test directories are the same in all three code bases, except I don't
pick up a missing newline at the end of
./SoftCubicResampler/Interpolate.java.

During the update I ran into some testing issues, both with the original
Gervill integration in OpenJDK 6 b10 as well as the new code for b12.
Specifically, the 9 regression tests

javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java
javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java
javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java
javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java
javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java
javax/sound/midi/Gervill/SoftSynthesizer/Open.java

can fail, seemingly dependent on how one logs into the machine.  What
are the necessary and sufficient conditions for permissions to run these
tests?  When they occur, the failures I see look like:

 Windows
=========

java.lang.IllegalArgumentException: No line matching interface
SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
4 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at
javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
    at Open.main(Open.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at
com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
    at java.lang.Thread.run(Thread.java:636)

 Linux
======

STDERR:
java: conf.c:3109: snd_config_update_free: Assertion `update->count > 0
&& update->finfo' failed.

TEST RESULT: Failed. Unexpected exit from test [exit code: 134]

 Solaris
=======

java.lang.IllegalArgumentException: No line matching interface
SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
4 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at
javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
    at Open.main(Open.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at
com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
    at java.lang.Thread.run(Thread.java:636)

These failures occur with the essentially Gervill CVS files I'm using as
well as the IcedTea versions.

I've uploaded my webrev compared to the OpenJDK 6 b11 sources to

http://dcstaff.invokedynamic.info/index.php?title=Image:darcy-6717691.tgz

Below are the diffs of between Gervill CVS and my workspace and the
recent IcedTea overlays and my workspace; I just loop over the Java
files in the base directory, print out the file name, and then the
result of diff-ing with the corresponding files in my workspace.

Thanks,

-Joe


 Latest Gervill CVS (July 21, 2008) vs my workspace:
========================================

AudioFileSoundbankReader.java
AudioFloatConverter.java
AudioFloatFormatConverter.java
AudioFloatInputStream.java
AudioSynthesizer.java
AudioSynthesizerPropertyInfo.java
DLSInfo.java
DLSInstrument.java
DLSModulator.java
DLSRegion.java
DLSSample.java
DLSSampleLoop.java
DLSSampleOptions.java
DLSSoundbank.java
DLSSoundbankReader.java
EmergencySoundbank.java
FFT.java
InvalidDataException.java
InvalidFormatException.java
JARSoundbankReader.java
ModelAbstractChannelMixer.java
ModelAbstractOscillator.java
ModelByteBuffer.java
ModelByteBufferWavetable.java
ModelChannelMixer.java
ModelConnectionBlock.java
ModelDestination.java
ModelDirectedPlayer.java
ModelDirector.java
ModelIdentifier.java
ModelInstrument.java
ModelInstrumentComparator.java
ModelMappedInstrument.java
ModelOscillator.java
ModelOscillatorStream.java
ModelPatch.java
ModelPerformer.java
ModelSource.java
ModelStandardDirector.java
ModelStandardTransform.java
ModelTransform.java
ModelWavetable.java
RIFFInvalidDataException.java
RIFFInvalidFormatException.java
RIFFReader.java
RIFFWriter.java
SF2GlobalRegion.java
SF2Instrument.java
SF2InstrumentRegion.java
SF2Layer.java
SF2LayerRegion.java
SF2Modulator.java
SF2Region.java
SF2Sample.java
SF2Soundbank.java
SF2SoundbankReader.java
SimpleInstrument.java
SimpleSoundbank.java
SoftAbstractResampler.java
SoftAudioBuffer.java
SoftAudioProcessor.java
SoftAudioPusher.java
SoftChannel.java
SoftChannelProxy.java
SoftChorus.java
SoftControl.java
SoftCubicResampler.java
8c8
<  * particular file as suabject to the "Classpath" exception as provided
---
 >  * particular file as subject to the "Classpath" exception as provided
SoftEnvelopeGenerator.java
SoftFilter.java
SoftInstrument.java
SoftJitterCorrector.java
SoftLanczosResampler.java
SoftLimiter.java
SoftLinearResampler.java
SoftLinearResampler2.java
SoftLowFrequencyOscillator.java
SoftMainMixer.java
SoftMidiAudioFileReader.java
SoftMixingClip.java
SoftMixingDataLine.java
SoftMixingMainMixer.java
SoftMixingMixer.java
SoftMixingMixerProvider.java
SoftMixingSourceDataLine.java
SoftPerformer.java
SoftPointResampler.java
SoftProcess.java
SoftProvider.java
SoftReceiver.java
SoftResampler.java
SoftResamplerStreamer.java
SoftReverb.java
SoftShortMessage.java
SoftSincResampler.java
SoftSynthesizer.java
SoftTuning.java
SoftVoice.java


 IcedTea 6 58510fd936ff overlays vs my workspace
======================================

AudioFileSoundbankReader.java
AudioFloatConverter.java
AudioFloatFormatConverter.java
AudioFloatInputStream.java
AudioSynthesizer.java
AudioSynthesizerPropertyInfo.java
DLSInfo.java
DLSInstrument.java
DLSModulator.java
DLSRegion.java
DLSSample.java
DLSSampleLoop.java
DLSSampleOptions.java
DLSSoundbank.java
DLSSoundbankReader.java
50,51d49
<         } catch(IOException ioe) {
<             return null;
EmergencySoundbank.java
FFT.java
InvalidDataException.java
InvalidFormatException.java
JARSoundbankReader.java
ModelAbstractChannelMixer.java
ModelAbstractOscillator.java
ModelByteBuffer.java
ModelByteBufferWavetable.java
ModelChannelMixer.java
ModelConnectionBlock.java
ModelDestination.java
ModelDirectedPlayer.java
ModelDirector.java
ModelIdentifier.java
ModelInstrument.java
ModelInstrumentComparator.java
ModelMappedInstrument.java
ModelOscillator.java
ModelOscillatorStream.java
ModelPatch.java
ModelPerformer.java
ModelSource.java
ModelStandardDirector.java
ModelStandardTransform.java
ModelTransform.java
ModelWavetable.java
RIFFInvalidDataException.java
RIFFInvalidFormatException.java
RIFFReader.java
RIFFWriter.java
SF2GlobalRegion.java
SF2Instrument.java
SF2InstrumentRegion.java
SF2Layer.java
SF2LayerRegion.java
SF2Modulator.java
SF2Region.java
SF2Sample.java
SF2Soundbank.java
SF2SoundbankReader.java
49,50d48
<         } catch(IOException ioe) {
<             return null;
SimpleInstrument.java
SimpleSoundbank.java
SoftAbstractResampler.java
SoftAudioBuffer.java
SoftAudioProcessor.java
SoftAudioPusher.java
SoftChannel.java
1197,1199c1197
<             // Should only return lower 7 bits,
<             // even when controller is "boosted" higher.
<             return this.controller[controller] & 127;
---
 >             return this.controller[controller];
SoftChannelProxy.java
SoftChorus.java
SoftControl.java
SoftCubicResampler.java
8c8
<  * particular file as suabject to the "Classpath" exception as provided
---
 >  * particular file as subject to the "Classpath" exception as provided
SoftEnvelopeGenerator.java
SoftFilter.java
SoftInstrument.java
SoftJitterCorrector.java
SoftLanczosResampler.java
SoftLimiter.java
SoftLinearResampler.java
SoftLinearResampler2.java
SoftLowFrequencyOscillator.java
SoftMainMixer.java
SoftMidiAudioFileReader.java
SoftMixingClip.java
SoftMixingDataLine.java
SoftMixingMainMixer.java
SoftMixingMixer.java
357,359d356
<                     DataLine.Info info = new DataLine.Info(
<                             SourceDataLine.class, format);
<
368,369c365,413
<                             line = (SourceDataLine)
defaultmixer.getLine(info);
<                         else
---
 >                         {
 >                             // Search for suitable line
 >
 >                             DataLine.Info idealinfo = null;
 >                             AudioFormat idealformat = null;
 >
 >                             Line.Info[] lineinfos =
defaultmixer.getSourceLineInfo();
 >                             idealFound:
 >                             for (int i = 0; i < lineinfos.length; i++) {
 >                                 if(lineinfos[i].getLineClass() ==
SourceDataLine.class)
 >                                 {
 >                                     DataLine.Info info =
(DataLine.Info)lineinfos[i];
 >                                     AudioFormat[] formats =
info.getFormats();
 >                                     for (int j = 0; j <
formats.length; j++) {
 >                                         AudioFormat format = formats[j];
 >                                         if(format.getChannels() == 2 ||
 >                                                 format.getChannels()
== AudioSystem.NOT_SPECIFIED)
 >
if(format.getEncoding().equals(Encoding.PCM_SIGNED) ||
 >
format.getEncoding().equals(Encoding.PCM_UNSIGNED))
 >                                         if(format.getSampleRate() ==
AudioSystem.NOT_SPECIFIED ||
 >
format.getSampleRate() == 48000.0)
 >
if(format.getSampleSizeInBits() == AudioSystem.NOT_SPECIFIED ||
 >
format.getSampleSizeInBits() == 16)
 >                                         {
 >                                             idealinfo = info;
 >                                             int ideal_channels =
format.getChannels();
 >                                             boolean ideal_signed =
format.getEncoding().equals(Encoding.PCM_SIGNED);
 >                                             float ideal_rate =
format.getSampleRate();
 >                                             boolean ideal_endian =
format.isBigEndian();
 >                                             int ideal_bits =
format.getSampleSizeInBits();
 >                                             if(ideal_bits ==
AudioSystem.NOT_SPECIFIED) ideal_bits = 16;
 >                                             if(ideal_channels ==
AudioSystem.NOT_SPECIFIED) ideal_channels = 2;
 >                                             if(ideal_rate ==
AudioSystem.NOT_SPECIFIED) ideal_rate = 48000;
 >                                             idealformat = new
AudioFormat(ideal_rate, ideal_bits,
 >                                                     ideal_channels,
ideal_signed, ideal_endian);
 >                                             break idealFound;
 >                                         }
 >                                     }
 >                                 }
 >                             }
 >
 >                             if(idealformat != null)
 >                             {
 >                                 format = idealformat;
 >                                 line = (SourceDataLine)
defaultmixer.getLine(idealinfo);
 >                             }
 >                         }
 >
 >                         if(line == null)
SoftMixingMixerProvider.java
SoftMixingSourceDataLine.java
SoftPerformer.java
SoftPointResampler.java
SoftProcess.java
SoftProvider.java
SoftReceiver.java
SoftResampler.java
SoftResamplerStreamer.java
SoftReverb.java
SoftShortMessage.java
SoftSincResampler.java
SoftSynthesizer.java
540a541,546
 >             File userhome = null;
 >             File emg_soundbank_file = null;
 >
 >             /*
 >              *  Try to load saved generated soundbank
 >              */
541a548,563
 >                 userhome = new File(System.getProperty("user.home"),
 >                      ".gervill");
 >                 emg_soundbank_file = new File(userhome,
"soundbank-emg.sf2");
 >                 Soundbank sbk =
MidiSystem.getSoundbank(emg_soundbank_file);
 >                 defaultSoundBank = sbk;
 >                 return defaultSoundBank;
 >             } catch (AccessControlException e) {
 >             } catch (Exception e) {
 >                 //e.printStackTrace();
 >             }
 >
 >             try {
 >
 >                 /*
 >                  *  Generate emergency soundbank
 >                  */
542a565,574
 >
 >                 /*
 >                  *  Save generated soundbank to disk for faster
future use.
 >                  */
 >                 if(defaultSoundBank != null)
 >                 {
 >                     if(!userhome.exists()) userhome.mkdirs();
 >                     if(!emg_soundbank_file.exists())
 >
((SF2Soundbank)defaultSoundBank).save(emg_soundbank_file);
 >                 }
594,596d625
<         if (soundbank == null || !isSoundbankSupported(soundbank))
<             throw new IllegalArgumentException("Unsupported soundbank:
" + soundbank);
<
621,623d649
<         if (soundbank == null || !isSoundbankSupported(soundbank))
<             throw new IllegalArgumentException("Unsupported soundbank:
" + soundbank);
<
SoftTuning.java
SoftVoice.java
WaveExtensibleFileReader.java
diff:
/net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java:
No such file or directory
WaveFloatFileReader.java
74a75
 >         long framerate = 1;
89c90
<                 /* framerate = */chunk.readUnsignedInt();
---
 >                 framerate = chunk.readUnsignedInt();
106c107
<                 framesize, samplerate, false);
---
 >                 framesize, framerate, false);
WaveFloatFileWriter.java
diff:
/net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java:
No such file or directory



No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.4/1566 - Release Date: 22.7.2008 06:00


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Karl.

Karl Helgason wrote:
> Hi Joe,
>
> Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are then copied from Gervill CVS.
> Any fixes that have been done in Gervill overlays in IcedTea 6 has also been done Gervill CVS.
> Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can be seen in the CHANGES file.

Right, I want to update to the latest and greatest version of Gervill,
with all the fixes you and Mark have worked on :-)  Just to be clear,
given that the IcedTea overlays the the Gervill CVS are different, you
recommend I upgrade OpenJDK 6 to match the latest Gervill CVS.

> I have fixed the "suabject" typo in the SoftCubicResampler.java in the Gervill CVS master.
> Where did you find raw types in the code, there aren't supposed to be any.
>
> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader has been
> moved to src.floatwav in the Gervill CVS. Because they aren't directly related with
> Gervill Synthesizer. They simply add support for float encoded Wave files.
> And WaveExtensibleFileReader is also a proposal how we should store
> channel mask in AudioFormat properties (used for multi-channel wave files).

So, should I add these files to OpenJDK 6?

> SoftMixingMixer is a experimental mixer to replace the functionality of the
> Java Sound Audio Engine mixer. It performs software audio mixing,
> which is useful when the audio hardware doesn't support mixing.
> It is not yet fully ready. And thus is disabled in the IcedTea.

Okay; I'll leave the service files as they are now.

> Those 9 regression tests fails because we aren't able to open audio device
> with default format.
> This is the code that fails:
>   AudioFormat format = new AudioFormat(44100, 16, 2, true, false)
>   line = AudioSystem.getSourceDataLine(getFormat());
> It will be interesting to know if this code fails under those conditions which
> the regression tests fail in.

I haven't been able to exactly charactterize when the tests pass.
Running as root on Linu x seems to work, as does logging in via the
console on Solaris.  However, ssh based logins seem problematic.  How do
you run these tests?  Often we run the JDK regression tests remotely
over ssh, etc. so it is preferable for the tess to be able to pass in
those circumstances too to avoid spurious failures.

> And it will also be interesting to know if these tests also fails
> if you enable the SoftMixingMixerProvider mixer provider.

IIRC, in various iterations, I changed the service files to enable the
soft mixing mixer and those 9 tests still failed across platforms.

Cheers,

-Joe

> regards,
> Karl
>
> ________________________________________
> Frá: sound-dev-bounces@... [sound-dev-bounces@...] Fyrir hönd Joe Darcy [Joe.Darcy@...]
> Sent: 22. júlí 2008 22:53
> Viðtakandi: audio-engine-dev@...
> Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
> Efni: <Sound Dev> Updating Gervill for OpenJDK 6 build 12
>
> Hello.
>
> With my OpenJDK 6 release manager hat on, I've been working to update
> the version of Gervill used to OpenJDK 6 to a newer version that passes
> the JCK tests, etc. and I'd like some review of my integration work.
> Before this exercise, I don't have any prior experience with sound code.
>
> A few comments, the copyright header in file SoftCubicResampler.java in
> the Gervill CVS master contains the typo "suabject" instead of
> "subject."  From some casual examination of the code, it seems to use
> raw types throughout, that is "List" rather than "List<String>", etc.
> It would be better to covert to using generics; I think IDEs have
> refactorings to help this now.
>
> There are some differences between the latest Gervill CVS from the
> project's site and the Gervill overlays in IcedTea 6.  In particular,
> IcedTea has changes to SoftMixingMixer.java and SoftSynthesizer.java as
> well as some additional files, WaveExtensibleFileReader.java and
> WaveFloatFileWriter.java.  I'd prefer to limit future merging work
> between the three code bases, Gervill CVS, OpenJDK 6, and IcedTea
> overlays, so in the context of updating Gervill for OpenJDK 6 b12, I
> think it would be good to resolve these remaining few differences.  The
> test directories are the same in all three code bases, except I don't
> pick up a missing newline at the end of
> ./SoftCubicResampler/Interpolate.java.
>
> During the update I ran into some testing issues, both with the original
> Gervill integration in OpenJDK 6 b10 as well as the new code for b12.
> Specifically, the 9 regression tests
>
> javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java
> javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java
> javax/sound/midi/Gervill/SoftSynthesizer/Open.java
>
> can fail, seemingly dependent on how one logs into the machine.  What
> are the necessary and sufficient conditions for permissions to run these
> tests?  When they occur, the failures I see look like:
>
>  Windows
> =========
>
> java.lang.IllegalArgumentException: No line matching interface
> SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
> 4 bytes/frame, little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
>     at
> javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
>     at Open.main(Open.java:53)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
>     at java.lang.Thread.run(Thread.java:636)
>
>  Linux
> ======
>
> STDERR:
> java: conf.c:3109: snd_config_update_free: Assertion `update->count > 0
> && update->finfo' failed.
>
> TEST RESULT: Failed. Unexpected exit from test [exit code: 134]
>
>  Solaris
> =======
>
> java.lang.IllegalArgumentException: No line matching interface
> SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
> 4 bytes/frame, little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
>     at
> javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
>     at Open.main(Open.java:53)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
>     at java.lang.Thread.run(Thread.java:636)
>
> These failures occur with the essentially Gervill CVS files I'm using as
> well as the IcedTea versions.
>
> I've uploaded my webrev compared to the OpenJDK 6 b11 sources to
>
> http://dcstaff.invokedynamic.info/index.php?title=Image:darcy-6717691.tgz
>
> Below are the diffs of between Gervill CVS and my workspace and the
> recent IcedTea overlays and my workspace; I just loop over the Java
> files in the base directory, print out the file name, and then the
> result of diff-ing with the corresponding files in my workspace.
>
> Thanks,
>
> -Joe
>
>
>  Latest Gervill CVS (July 21, 2008) vs my workspace:
> ========================================
>
> AudioFileSoundbankReader.java
> AudioFloatConverter.java
> AudioFloatFormatConverter.java
> AudioFloatInputStream.java
> AudioSynthesizer.java
> AudioSynthesizerPropertyInfo.java
> DLSInfo.java
> DLSInstrument.java
> DLSModulator.java
> DLSRegion.java
> DLSSample.java
> DLSSampleLoop.java
> DLSSampleOptions.java
> DLSSoundbank.java
> DLSSoundbankReader.java
> EmergencySoundbank.java
> FFT.java
> InvalidDataException.java
> InvalidFormatException.java
> JARSoundbankReader.java
> ModelAbstractChannelMixer.java
> ModelAbstractOscillator.java
> ModelByteBuffer.java
> ModelByteBufferWavetable.java
> ModelChannelMixer.java
> ModelConnectionBlock.java
> ModelDestination.java
> ModelDirectedPlayer.java
> ModelDirector.java
> ModelIdentifier.java
> ModelInstrument.java
> ModelInstrumentComparator.java
> ModelMappedInstrument.java
> ModelOscillator.java
> ModelOscillatorStream.java
> ModelPatch.java
> ModelPerformer.java
> ModelSource.java
> ModelStandardDirector.java
> ModelStandardTransform.java
> ModelTransform.java
> ModelWavetable.java
> RIFFInvalidDataException.java
> RIFFInvalidFormatException.java
> RIFFReader.java
> RIFFWriter.java
> SF2GlobalRegion.java
> SF2Instrument.java
> SF2InstrumentRegion.java
> SF2Layer.java
> SF2LayerRegion.java
> SF2Modulator.java
> SF2Region.java
> SF2Sample.java
> SF2Soundbank.java
> SF2SoundbankReader.java
> SimpleInstrument.java
> SimpleSoundbank.java
> SoftAbstractResampler.java
> SoftAudioBuffer.java
> SoftAudioProcessor.java
> SoftAudioPusher.java
> SoftChannel.java
> SoftChannelProxy.java
> SoftChorus.java
> SoftControl.java
> SoftCubicResampler.java
> 8c8
> <  * particular file as suabject to the "Classpath" exception as provided
> ---
>  >  * particular file as subject to the "Classpath" exception as provided
> SoftEnvelopeGenerator.java
> SoftFilter.java
> SoftInstrument.java
> SoftJitterCorrector.java
> SoftLanczosResampler.java
> SoftLimiter.java
> SoftLinearResampler.java
> SoftLinearResampler2.java
> SoftLowFrequencyOscillator.java
> SoftMainMixer.java
> SoftMidiAudioFileReader.java
> SoftMixingClip.java
> SoftMixingDataLine.java
> SoftMixingMainMixer.java
> SoftMixingMixer.java
> SoftMixingMixerProvider.java
> SoftMixingSourceDataLine.java
> SoftPerformer.java
> SoftPointResampler.java
> SoftProcess.java
> SoftProvider.java
> SoftReceiver.java
> SoftResampler.java
> SoftResamplerStreamer.java
> SoftReverb.java
> SoftShortMessage.java
> SoftSincResampler.java
> SoftSynthesizer.java
> SoftTuning.java
> SoftVoice.java
>
>
>  IcedTea 6 58510fd936ff overlays vs my workspace
> ======================================
>
> AudioFileSoundbankReader.java
> AudioFloatConverter.java
> AudioFloatFormatConverter.java
> AudioFloatInputStream.java
> AudioSynthesizer.java
> AudioSynthesizerPropertyInfo.java
> DLSInfo.java
> DLSInstrument.java
> DLSModulator.java
> DLSRegion.java
> DLSSample.java
> DLSSampleLoop.java
> DLSSampleOptions.java
> DLSSoundbank.java
> DLSSoundbankReader.java
> 50,51d49
> <         } catch(IOException ioe) {
> <             return null;
> EmergencySoundbank.java
> FFT.java
> InvalidDataException.java
> InvalidFormatException.java
> JARSoundbankReader.java
> ModelAbstractChannelMixer.java
> ModelAbstractOscillator.java
> ModelByteBuffer.java
> ModelByteBufferWavetable.java
> ModelChannelMixer.java
> ModelConnectionBlock.java
> ModelDestination.java
> ModelDirectedPlayer.java
> ModelDirector.java
> ModelIdentifier.java
> ModelInstrument.java
> ModelInstrumentComparator.java
> ModelMappedInstrument.java
> ModelOscillator.java
> ModelOscillatorStream.java
> ModelPatch.java
> ModelPerformer.java
> ModelSource.java
> ModelStandardDirector.java
> ModelStandardTransform.java
> ModelTransform.java
> ModelWavetable.java
> RIFFInvalidDataException.java
> RIFFInvalidFormatException.java
> RIFFReader.java
> RIFFWriter.java
> SF2GlobalRegion.java
> SF2Instrument.java
> SF2InstrumentRegion.java
> SF2Layer.java
> SF2LayerRegion.java
> SF2Modulator.java
> SF2Region.java
> SF2Sample.java
> SF2Soundbank.java
> SF2SoundbankReader.java
> 49,50d48
> <         } catch(IOException ioe) {
> <             return null;
> SimpleInstrument.java
> SimpleSoundbank.java
> SoftAbstractResampler.java
> SoftAudioBuffer.java
> SoftAudioProcessor.java
> SoftAudioPusher.java
> SoftChannel.java
> 1197,1199c1197
> <             // Should only return lower 7 bits,
> <             // even when controller is "boosted" higher.
> <             return this.controller[controller] & 127;
> ---
>  >             return this.controller[controller];
> SoftChannelProxy.java
> SoftChorus.java
> SoftControl.java
> SoftCubicResampler.java
> 8c8
> <  * particular file as suabject to the "Classpath" exception as provided
> ---
>  >  * particular file as subject to the "Classpath" exception as provided
> SoftEnvelopeGenerator.java
> SoftFilter.java
> SoftInstrument.java
> SoftJitterCorrector.java
> SoftLanczosResampler.java
> SoftLimiter.java
> SoftLinearResampler.java
> SoftLinearResampler2.java
> SoftLowFrequencyOscillator.java
> SoftMainMixer.java
> SoftMidiAudioFileReader.java
> SoftMixingClip.java
> SoftMixingDataLine.java
> SoftMixingMainMixer.java
> SoftMixingMixer.java
> 357,359d356
> <                     DataLine.Info info = new DataLine.Info(
> <                             SourceDataLine.class, format);
> <
> 368,369c365,413
> <                             line = (SourceDataLine)
> defaultmixer.getLine(info);
> <                         else
> ---
>  >                         {
>  >                             // Search for suitable line
>  >
>  >                             DataLine.Info idealinfo = null;
>  >                             AudioFormat idealformat = null;
>  >
>  >                             Line.Info[] lineinfos =
> defaultmixer.getSourceLineInfo();
>  >                             idealFound:
>  >                             for (int i = 0; i < lineinfos.length; i++) {
>  >                                 if(lineinfos[i].getLineClass() ==
> SourceDataLine.class)
>  >                                 {
>  >                                     DataLine.Info info =
> (DataLine.Info)lineinfos[i];
>  >                                     AudioFormat[] formats =
> info.getFormats();
>  >                                     for (int j = 0; j <
> formats.length; j++) {
>  >                                         AudioFormat format = formats[j];
>  >                                         if(format.getChannels() == 2 ||
>  >                                                 format.getChannels()
> == AudioSystem.NOT_SPECIFIED)
>  >
> if(format.getEncoding().equals(Encoding.PCM_SIGNED) ||
>  >
> format.getEncoding().equals(Encoding.PCM_UNSIGNED))
>  >                                         if(format.getSampleRate() ==
> AudioSystem.NOT_SPECIFIED ||
>  >
> format.getSampleRate() == 48000.0)
>  >
> if(format.getSampleSizeInBits() == AudioSystem.NOT_SPECIFIED ||
>  >
> format.getSampleSizeInBits() == 16)
>  >                                         {
>  >                                             idealinfo = info;
>  >                                             int ideal_channels =
> format.getChannels();
>  >                                             boolean ideal_signed =
> format.getEncoding().equals(Encoding.PCM_SIGNED);
>  >                                             float ideal_rate =
> format.getSampleRate();
>  >                                             boolean ideal_endian =
> format.isBigEndian();
>  >                                             int ideal_bits =
> format.getSampleSizeInBits();
>  >                                             if(ideal_bits ==
> AudioSystem.NOT_SPECIFIED) ideal_bits = 16;
>  >                                             if(ideal_channels ==
> AudioSystem.NOT_SPECIFIED) ideal_channels = 2;
>  >                                             if(ideal_rate ==
> AudioSystem.NOT_SPECIFIED) ideal_rate = 48000;
>  >                                             idealformat = new
> AudioFormat(ideal_rate, ideal_bits,
>  >                                                     ideal_channels,
> ideal_signed, ideal_endian);
>  >                                             break idealFound;
>  >                                         }
>  >                                     }
>  >                                 }
>  >                             }
>  >
>  >                             if(idealformat != null)
>  >                             {
>  >                                 format = idealformat;
>  >                                 line = (SourceDataLine)
> defaultmixer.getLine(idealinfo);
>  >                             }
>  >                         }
>  >
>  >                         if(line == null)
> SoftMixingMixerProvider.java
> SoftMixingSourceDataLine.java
> SoftPerformer.java
> SoftPointResampler.java
> SoftProcess.java
> SoftProvider.java
> SoftReceiver.java
> SoftResampler.java
> SoftResamplerStreamer.java
> SoftReverb.java
> SoftShortMessage.java
> SoftSincResampler.java
> SoftSynthesizer.java
> 540a541,546
>  >             File userhome = null;
>  >             File emg_soundbank_file = null;
>  >
>  >             /*
>  >              *  Try to load saved generated soundbank
>  >              */
> 541a548,563
>  >                 userhome = new File(System.getProperty("user.home"),
>  >                      ".gervill");
>  >                 emg_soundbank_file = new File(userhome,
> "soundbank-emg.sf2");
>  >                 Soundbank sbk =
> MidiSystem.getSoundbank(emg_soundbank_file);
>  >                 defaultSoundBank = sbk;
>  >                 return defaultSoundBank;
>  >             } catch (AccessControlException e) {
>  >             } catch (Exception e) {
>  >                 //e.printStackTrace();
>  >             }
>  >
>  >             try {
>  >
>  >                 /*
>  >                  *  Generate emergency soundbank
>  >                  */
> 542a565,574
>  >
>  >                 /*
>  >                  *  Save generated soundbank to disk for faster
> future use.
>  >                  */
>  >                 if(defaultSoundBank != null)
>  >                 {
>  >                     if(!userhome.exists()) userhome.mkdirs();
>  >                     if(!emg_soundbank_file.exists())
>  >
> ((SF2Soundbank)defaultSoundBank).save(emg_soundbank_file);
>  >                 }
> 594,596d625
> <         if (soundbank == null || !isSoundbankSupported(soundbank))
> <             throw new IllegalArgumentException("Unsupported soundbank:
> " + soundbank);
> <
> 621,623d649
> <         if (soundbank == null || !isSoundbankSupported(soundbank))
> <             throw new IllegalArgumentException("Unsupported soundbank:
> " + soundbank);
> <
> SoftTuning.java
> SoftVoice.java
> WaveExtensibleFileReader.java
> diff:
> /net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java:
> No such file or directory
> WaveFloatFileReader.java
> 74a75
>  >         long framerate = 1;
> 89c90
> <                 /* framerate = */chunk.readUnsignedInt();
> ---
>  >                 framerate = chunk.readUnsignedInt();
> 106c107
> <                 framesize, samplerate, false);
> ---
>  >                 framesize, framerate, false);
> WaveFloatFileWriter.java
> diff:
> /net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java:
> No such file or directory
>
>
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.524 / Virus Database: 270.5.4/1566 - Release Date: 22.7.2008 06:00
>


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Karl Helgason-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Joe,

> > Hi Joe,
> >
> > Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are then copied from Gervill CVS.
> > Any fixes that have been done in Gervill overlays in IcedTea 6 has also been done Gervill CVS.
> > Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can be seen in the CHANGES file.
>
> Right, I want to update to the latest and greatest version of Gervill,
> with all the fixes you and Mark have worked on :-)  Just to be clear,
> given that the IcedTea overlays the the Gervill CVS are different, you
> recommend I upgrade OpenJDK 6 to match the latest Gervill CVS.
>

Yeb the Gervill CVS is always the newest one. Mark also submitted all fixes he done to me
for consideration to add to Gervill CVS.

> > I have fixed the "suabject" typo in the SoftCubicResampler.java in the Gervill CVS master.
> > Where did you find raw types in the code, there aren't supposed to be any.
> >
> > WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader has been
> > moved to src.floatwav in the Gervill CVS. Because they aren't directly related with
> > Gervill Synthesizer. They simply add support for float encoded Wave files.
> > And WaveExtensibleFileReader is also a proposal how we should store
> > channel mask in AudioFormat properties (used for multi-channel wave files).
>
> So, should I add these files to OpenJDK 6?
>

It depends, Alexey thought we should rather add support for PCM Float support
to current com.sun.media.sound.WaveFileReader and WaveFileWriter classes
than introducing new one.
Some people however have been using gervill to add support for 32 bit float wave files,
see:
  http://forums.sun.com/thread.jspa?threadID=5283612&tstart=75

> > SoftMixingMixer is a experimental mixer to replace the functionality of the
> > Java Sound Audio Engine mixer. It performs software audio mixing,
> > which is useful when the audio hardware doesn't support mixing.
> > It is not yet fully ready. And thus is disabled in the IcedTea.
>
> Okay; I'll leave the service files as they are now.
>
> > Those 9 regression tests fails because we aren't able to open audio device
> > with default format.
> > This is the code that fails:
> >   AudioFormat format = new AudioFormat(44100, 16, 2, true, false)
> >   line = AudioSystem.getSourceDataLine(getFormat());
> > It will be interesting to know if this code fails under those conditions which
> > the regression tests fail in.
>
> I haven't been able to exactly charactterize when the tests pass.
> Running as root on Linu x seems to work, as does logging in via the
> console on Solaris.  However, ssh based logins seem problematic.  How do
> you run these tests?  Often we run the JDK regression tests remotely
> over ssh, etc. so it is preferable for the tess to be able to pass in
> those circumstances too to avoid spurious failures.
>
> > And it will also be interesting to know if these tests also fails
> > if you enable the SoftMixingMixerProvider mixer provider.
>
> IIRC, in various iterations, I changed the service files to enable the
> soft mixing mixer and those 9 tests still failed across platforms.

These test probably fail because no audio mixer is available.
I could change those tests to use dummy mixer instead,
as we really don't need to hear anything.

regards,
Karl



> ________________________________________
> Frá: sound-dev-bounces@... [sound-dev-bounces@...] Fyrir hönd Joe Darcy [Joe.Darcy@...]
> Sent: 22. júlí 2008 22:53
> Viðtakandi: audio-engine-dev@...
> Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
> Efni: <Sound Dev> Updating Gervill for OpenJDK 6 build 12
>
> Hello.
>
> With my OpenJDK 6 release manager hat on, I've been working to update
> the version of Gervill used to OpenJDK 6 to a newer version that passes
> the JCK tests, etc. and I'd like some review of my integration work.
> Before this exercise, I don't have any prior experience with sound code.
>
> A few comments, the copyright header in file SoftCubicResampler.java in
> the Gervill CVS master contains the typo "suabject" instead of
> "subject."  From some casual examination of the code, it seems to use
> raw types throughout, that is "List" rather than "List<String>", etc.
> It would be better to covert to using generics; I think IDEs have
> refactorings to help this now.
>
> There are some differences between the latest Gervill CVS from the
> project's site and the Gervill overlays in IcedTea 6.  In particular,
> IcedTea has changes to SoftMixingMixer.java and SoftSynthesizer.java as
> well as some additional files, WaveExtensibleFileReader.java and
> WaveFloatFileWriter.java.  I'd prefer to limit future merging work
> between the three code bases, Gervill CVS, OpenJDK 6, and IcedTea
> overlays, so in the context of updating Gervill for OpenJDK 6 b12, I
> think it would be good to resolve these remaining few differences.  The
> test directories are the same in all three code bases, except I don't
> pick up a missing newline at the end of
> ./SoftCubicResampler/Interpolate.java.
>
> During the update I ran into some testing issues, both with the original
> Gervill integration in OpenJDK 6 b10 as well as the new code for b12.
> Specifically, the 9 regression tests
>
> javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java
> javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java
> javax/sound/midi/Gervill/SoftSynthesizer/Open.java
>
> can fail, seemingly dependent on how one logs into the machine.  What
> are the necessary and sufficient conditions for permissions to run these
> tests?  When they occur, the failures I see look like:
>
>  Windows
> =========
>
> java.lang.IllegalArgumentException: No line matching interface
> SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
> 4 bytes/frame, little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
>     at
> javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
>     at Open.main(Open.java:53)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
>     at java.lang.Thread.run(Thread.java:636)
>
>  Linux
> ======
>
> STDERR:
> java: conf.c:3109: snd_config_update_free: Assertion `update->count > 0
> && update->finfo' failed.
>
> TEST RESULT: Failed. Unexpected exit from test [exit code: 134]
>
>  Solaris
> =======
>
> java.lang.IllegalArgumentException: No line matching interface
> SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
> 4 bytes/frame, little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
>     at
> javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
>     at Open.main(Open.java:53)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
>     at java.lang.Thread.run(Thread.java:636)
>
> These failures occur with the essentially Gervill CVS files I'm using as
> well as the IcedTea versions.
>
> I've uploaded my webrev compared to the OpenJDK 6 b11 sources to
>
> http://dcstaff.invokedynamic.info/index.php?title=Image:darcy-6717691.tgz
>
> Below are the diffs of between Gervill CVS and my workspace and the
> recent IcedTea overlays and my workspace; I just loop over the Java
> files in the base directory, print out the file name, and then the
> result of diff-ing with the corresponding files in my workspace.
>
> Thanks,
>
> -Joe
>
>
>  Latest Gervill CVS (July 21, 2008) vs my workspace:
> ========================================
>
> AudioFileSoundbankReader.java
> AudioFloatConverter.java
> AudioFloatFormatConverter.java
> AudioFloatInputStream.java
> AudioSynthesizer.java
> AudioSynthesizerPropertyInfo.java
> DLSInfo.java
> DLSInstrument.java
> DLSModulator.java
> DLSRegion.java
> DLSSample.java
> DLSSampleLoop.java
> DLSSampleOptions.java
> DLSSoundbank.java
> DLSSoundbankReader.java
> EmergencySoundbank.java
> FFT.java
> InvalidDataException.java
> InvalidFormatException.java
> JARSoundbankReader.java
> ModelAbstractChannelMixer.java
> ModelAbstractOscillator.java
> ModelByteBuffer.java
> ModelByteBufferWavetable.java
> ModelChannelMixer.java
> ModelConnectionBlock.java
> ModelDestination.java
> ModelDirectedPlayer.java
> ModelDirector.java
> ModelIdentifier.java
> ModelInstrument.java
> ModelInstrumentComparator.java
> ModelMappedInstrument.java
> ModelOscillator.java
> ModelOscillatorStream.java
> ModelPatch.java
> ModelPerformer.java
> ModelSource.java
> ModelStandardDirector.java
> ModelStandardTransform.java
> ModelTransform.java
> ModelWavetable.java
> RIFFInvalidDataException.java
> RIFFInvalidFormatException.java
> RIFFReader.java
> RIFFWriter.java
> SF2GlobalRegion.java
> SF2Instrument.java
> SF2InstrumentRegion.java
> SF2Layer.java
> SF2LayerRegion.java
> SF2Modulator.java
> SF2Region.java
> SF2Sample.java
> SF2Soundbank.java
> SF2SoundbankReader.java
> SimpleInstrument.java
> SimpleSoundbank.java
> SoftAbstractResampler.java
> SoftAudioBuffer.java
> SoftAudioProcessor.java
> SoftAudioPusher.java
> SoftChannel.java
> SoftChannelProxy.java
> SoftChorus.java
> SoftControl.java
> SoftCubicResampler.java
> 8c8
> <  * particular file as suabject to the "Classpath" exception as provided
> ---
>  >  * particular file as subject to the "Classpath" exception as provided
> SoftEnvelopeGenerator.java
> SoftFilter.java
> SoftInstrument.java
> SoftJitterCorrector.java
> SoftLanczosResampler.java
> SoftLimiter.java
> SoftLinearResampler.java
> SoftLinearResampler2.java
> SoftLowFrequencyOscillator.java
> SoftMainMixer.java
> SoftMidiAudioFileReader.java
> SoftMixingClip.java
> SoftMixingDataLine.java
> SoftMixingMainMixer.java
> SoftMixingMixer.java
> SoftMixingMixerProvider.java
> SoftMixingSourceDataLine.java
> SoftPerformer.java
> SoftPointResampler.java
> SoftProcess.java
> SoftProvider.java
> SoftReceiver.java
> SoftResampler.java
> SoftResamplerStreamer.java
> SoftReverb.java
> SoftShortMessage.java
> SoftSincResampler.java
> SoftSynthesizer.java
> SoftTuning.java
> SoftVoice.java
>
>
>  IcedTea 6 58510fd936ff overlays vs my workspace
> ======================================
>
> AudioFileSoundbankReader.java
> AudioFloatConverter.java
> AudioFloatFormatConverter.java
> AudioFloatInputStream.java
> AudioSynthesizer.java
> AudioSynthesizerPropertyInfo.java
> DLSInfo.java
> DLSInstrument.java
> DLSModulator.java
> DLSRegion.java
> DLSSample.java
> DLSSampleLoop.java
> DLSSampleOptions.java
> DLSSoundbank.java
> DLSSoundbankReader.java
> 50,51d49
> <         } catch(IOException ioe) {
> <             return null;
> EmergencySoundbank.java
> FFT.java
> InvalidDataException.java
> InvalidFormatException.java
> JARSoundbankReader.java
> ModelAbstractChannelMixer.java
> ModelAbstractOscillator.java
> ModelByteBuffer.java
> ModelByteBufferWavetable.java
> ModelChannelMixer.java
> ModelConnectionBlock.java
> ModelDestination.java
> ModelDirectedPlayer.java
> ModelDirector.java
> ModelIdentifier.java
> ModelInstrument.java
> ModelInstrumentComparator.java
> ModelMappedInstrument.java
> ModelOscillator.java
> ModelOscillatorStream.java
> ModelPatch.java
> ModelPerformer.java
> ModelSource.java
> ModelStandardDirector.java
> ModelStandardTransform.java
> ModelTransform.java
> ModelWavetable.java
> RIFFInvalidDataException.java
> RIFFInvalidFormatException.java
> RIFFReader.java
> RIFFWriter.java
> SF2GlobalRegion.java
> SF2Instrument.java
> SF2InstrumentRegion.java
> SF2Layer.java
> SF2LayerRegion.java
> SF2Modulator.java
> SF2Region.java
> SF2Sample.java
> SF2Soundbank.java
> SF2SoundbankReader.java
> 49,50d48
> <         } catch(IOException ioe) {
> <             return null;
> SimpleInstrument.java
> SimpleSoundbank.java
> SoftAbstractResampler.java
> SoftAudioBuffer.java
> SoftAudioProcessor.java
> SoftAudioPusher.java
> SoftChannel.java
> 1197,1199c1197
> <             // Should only return lower 7 bits,
> <             // even when controller is "boosted" higher.
> <             return this.controller[controller] & 127;
> ---
>  >             return this.controller[controller];
> SoftChannelProxy.java
> SoftChorus.java
> SoftControl.java
> SoftCubicResampler.java
> 8c8
> <  * particular file as suabject to the "Classpath" exception as provided
> ---
>  >  * particular file as subject to the "Classpath" exception as provided
> SoftEnvelopeGenerator.java
> SoftFilter.java
> SoftInstrument.java
> SoftJitterCorrector.java
> SoftLanczosResampler.java
> SoftLimiter.java
> SoftLinearResampler.java
> SoftLinearResampler2.java
> SoftLowFrequencyOscillator.java
> SoftMainMixer.java
> SoftMidiAudioFileReader.java
> SoftMixingClip.java
> SoftMixingDataLine.java
> SoftMixingMainMixer.java
> SoftMixingMixer.java
> 357,359d356
> <                     DataLine.Info info = new DataLine.Info(
> <                             SourceDataLine.class, format);
> <
> 368,369c365,413
> <                             line = (SourceDataLine)
> defaultmixer.getLine(info);
> <                         else
> ---
>  >                         {
>  >                             // Search for suitable line
>  >
>  >                             DataLine.Info idealinfo = null;
>  >                             AudioFormat idealformat = null;
>  >
>  >                             Line.Info[] lineinfos =
> defaultmixer.getSourceLineInfo();
>  >                             idealFound:
>  >                             for (int i = 0; i < lineinfos.length; i++) {
>  >                                 if(lineinfos[i].getLineClass() ==
> SourceDataLine.class)
>  >                                 {
>  >                                     DataLine.Info info =
> (DataLine.Info)lineinfos[i];
>  >                                     AudioFormat[] formats =
> info.getFormats();
>  >                                     for (int j = 0; j <
> formats.length; j++) {
>  >                                         AudioFormat format = formats[j];
>  >                                         if(format.getChannels() == 2 ||
>  >                                                 format.getChannels()
> == AudioSystem.NOT_SPECIFIED)
>  >
> if(format.getEncoding().equals(Encoding.PCM_SIGNED) ||
>  >
> format.getEncoding().equals(Encoding.PCM_UNSIGNED))
>  >                                         if(format.getSampleRate() ==
> AudioSystem.NOT_SPECIFIED ||
>  >
> format.getSampleRate() == 48000.0)
>  >
> if(format.getSampleSizeInBits() == AudioSystem.NOT_SPECIFIED ||
>  >
> format.getSampleSizeInBits() == 16)
>  >                                         {
>  >                                             idealinfo = info;
>  >                                             int ideal_channels =
> format.getChannels();
>  >                                             boolean ideal_signed =
> format.getEncoding().equals(Encoding.PCM_SIGNED);
>  >                                             float ideal_rate =
> format.getSampleRate();
>  >                                             boolean ideal_endian =
> format.isBigEndian();
>  >                                             int ideal_bits =
> format.getSampleSizeInBits();
>  >                                             if(ideal_bits ==
> AudioSystem.NOT_SPECIFIED) ideal_bits = 16;
>  >                                             if(ideal_channels ==
> AudioSystem.NOT_SPECIFIED) ideal_channels = 2;
>  >                                             if(ideal_rate ==
> AudioSystem.NOT_SPECIFIED) ideal_rate = 48000;
>  >                                             idealformat = new
> AudioFormat(ideal_rate, ideal_bits,
>  >                                                     ideal_channels,
> ideal_signed, ideal_endian);
>  >                                             break idealFound;
>  >                                         }
>  >                                     }
>  >                                 }
>  >                             }
>  >
>  >                             if(idealformat != null)
>  >                             {
>  >                                 format = idealformat;
>  >                                 line = (SourceDataLine)
> defaultmixer.getLine(idealinfo);
>  >                             }
>  >                         }
>  >
>  >                         if(line == null)
> SoftMixingMixerProvider.java
> SoftMixingSourceDataLine.java
> SoftPerformer.java
> SoftPointResampler.java
> SoftProcess.java
> SoftProvider.java
> SoftReceiver.java
> SoftResampler.java
> SoftResamplerStreamer.java
> SoftReverb.java
> SoftShortMessage.java
> SoftSincResampler.java
> SoftSynthesizer.java
> 540a541,546
>  >             File userhome = null;
>  >             File emg_soundbank_file = null;
>  >
>  >             /*
>  >              *  Try to load saved generated soundbank
>  >              */
> 541a548,563
>  >                 userhome = new File(System.getProperty("user.home"),
>  >                      ".gervill");
>  >                 emg_soundbank_file = new File(userhome,
> "soundbank-emg.sf2");
>  >                 Soundbank sbk =
> MidiSystem.getSoundbank(emg_soundbank_file);
>  >                 defaultSoundBank = sbk;
>  >                 return defaultSoundBank;
>  >             } catch (AccessControlException e) {
>  >             } catch (Exception e) {
>  >                 //e.printStackTrace();
>  >             }
>  >
>  >             try {
>  >
>  >                 /*
>  >                  *  Generate emergency soundbank
>  >                  */
> 542a565,574
>  >
>  >                 /*
>  >                  *  Save generated soundbank to disk for faster
> future use.
>  >                  */
>  >                 if(defaultSoundBank != null)
>  >                 {
>  >                     if(!userhome.exists()) userhome.mkdirs();
>  >                     if(!emg_soundbank_file.exists())
>  >
> ((SF2Soundbank)defaultSoundBank).save(emg_soundbank_file);
>  >                 }
> 594,596d625
> <         if (soundbank == null || !isSoundbankSupported(soundbank))
> <             throw new IllegalArgumentException("Unsupported soundbank:
> " + soundbank);
> <
> 621,623d649
> <         if (soundbank == null || !isSoundbankSupported(soundbank))
> <             throw new IllegalArgumentException("Unsupported soundbank:
> " + soundbank);
> <
> SoftTuning.java
> SoftVoice.java
> WaveExtensibleFileReader.java
> diff:
> /net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java:
> No such file or directory
> WaveFloatFileReader.java
> 74a75
>  >         long framerate = 1;
> 89c90
> <                 /* framerate = */chunk.readUnsignedInt();
> ---
>  >                 framerate = chunk.readUnsignedInt();
> 106c107
> <                 framesize, samplerate, false);
> ---
>  >                 framesize, framerate, false);
> WaveFloatFileWriter.java
> diff:
> /net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java:
> No such file or directory
>
>
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.524 / Virus Database: 270.5.4/1566 - Release Date: 22.7.2008 06:00
>



No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.5/1569 - Release Date: 23.7.2008 13:31


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Alex Menkov-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Karl Helgason wrote:

>>> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader has been
>>> moved to src.floatwav in the Gervill CVS. Because they aren't directly related with
>>> Gervill Synthesizer. They simply add support for float encoded Wave files.
>>> And WaveExtensibleFileReader is also a proposal how we should store
>>> channel mask in AudioFormat properties (used for multi-channel wave files).
>> So, should I add these files to OpenJDK 6?
>>
>
> It depends, Alexey thought we should rather add support for PCM Float support
> to current com.sun.media.sound.WaveFileReader and WaveFileWriter classes
> than introducing new one.

All this wave readers (current PCM/ALAW/ULAW and Float & Extensible from
Gervill) could be combined in different ways - basing on current WaveFileReader
or basing on WaveFloatFileReader or WaveExtensibleFileReader.
Main goal is to avoid functionality duplication.


 >>> And WaveExtensibleFileReader is also a proposal how we should store
 >>> channel mask in AudioFormat properties (used for multi-channel wave files).

Wow.. I've overlooked this :)



Regards
Alex

Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Karl Helgason-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Joe,

I have fixed the jtreg tests in Gervill CVS so they use a dummy SourceDataLine instead of real one.

cheers,
Karl
________________________________________
Frá: Joe.Darcy@... [Joe.Darcy@...]
Sent: 25. júlí 2008 05:51
Viðtakandi: Karl Helgason
Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
Efni: Re: SV: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

Hi Karl.

Karl Helgason wrote:
> Hi Joe,
>
> Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are then copied from Gervill CVS.
> Any fixes that have been done in Gervill overlays in IcedTea 6 has also been done Gervill CVS.
> Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can be seen in the CHANGES file.

Right, I want to update to the latest and greatest version of Gervill,
with all the fixes you and Mark have worked on :-)  Just to be clear,
given that the IcedTea overlays the the Gervill CVS are different, you
recommend I upgrade OpenJDK 6 to match the latest Gervill CVS.

> I have fixed the "suabject" typo in the SoftCubicResampler.java in the Gervill CVS master.
> Where did you find raw types in the code, there aren't supposed to be any.
>
> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader has been
> moved to src.floatwav in the Gervill CVS. Because they aren't directly related with
> Gervill Synthesizer. They simply add support for float encoded Wave files.
> And WaveExtensibleFileReader is also a proposal how we should store
> channel mask in AudioFormat properties (used for multi-channel wave files).

So, should I add these files to OpenJDK 6?

> SoftMixingMixer is a experimental mixer to replace the functionality of the
> Java Sound Audio Engine mixer. It performs software audio mixing,
> which is useful when the audio hardware doesn't support mixing.
> It is not yet fully ready. And thus is disabled in the IcedTea.

Okay; I'll leave the service files as they are now.

> Those 9 regression tests fails because we aren't able to open audio device
> with default format.
> This is the code that fails:
>   AudioFormat format = new AudioFormat(44100, 16, 2, true, false)
>   line = AudioSystem.getSourceDataLine(getFormat());
> It will be interesting to know if this code fails under those conditions which
> the regression tests fail in.

I haven't been able to exactly charactterize when the tests pass.
Running as root on Linu x seems to work, as does logging in via the
console on Solaris.  However, ssh based logins seem problematic.  How do
you run these tests?  Often we run the JDK regression tests remotely
over ssh, etc. so it is preferable for the tess to be able to pass in
those circumstances too to avoid spurious failures.

> And it will also be interesting to know if these tests also fails
> if you enable the SoftMixingMixerProvider mixer provider.

IIRC, in various iterations, I changed the service files to enable the
soft mixing mixer and those 9 tests still failed across platforms.

Cheers,

-Joe

> regards,
> Karl
>
> ________________________________________
> Frá: sound-dev-bounces@... [sound-dev-bounces@...] Fyrir hönd Joe Darcy [Joe.Darcy@...]
> Sent: 22. júlí 2008 22:53
> Viðtakandi: audio-engine-dev@...
> Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
> Efni: <Sound Dev> Updating Gervill for OpenJDK 6 build 12
>
> Hello.
>
> With my OpenJDK 6 release manager hat on, I've been working to update
> the version of Gervill used to OpenJDK 6 to a newer version that passes
> the JCK tests, etc. and I'd like some review of my integration work.
> Before this exercise, I don't have any prior experience with sound code.
>
> A few comments, the copyright header in file SoftCubicResampler.java in
> the Gervill CVS master contains the typo "suabject" instead of
> "subject."  From some casual examination of the code, it seems to use
> raw types throughout, that is "List" rather than "List<String>", etc.
> It would be better to covert to using generics; I think IDEs have
> refactorings to help this now.
>
> There are some differences between the latest Gervill CVS from the
> project's site and the Gervill overlays in IcedTea 6.  In particular,
> IcedTea has changes to SoftMixingMixer.java and SoftSynthesizer.java as
> well as some additional files, WaveExtensibleFileReader.java and
> WaveFloatFileWriter.java.  I'd prefer to limit future merging work
> between the three code bases, Gervill CVS, OpenJDK 6, and IcedTea
> overlays, so in the context of updating Gervill for OpenJDK 6 b12, I
> think it would be good to resolve these remaining few differences.  The
> test directories are the same in all three code bases, except I don't
> pick up a missing newline at the end of
> ./SoftCubicResampler/Interpolate.java.
>
> During the update I ran into some testing issues, both with the original
> Gervill integration in OpenJDK 6 b10 as well as the new code for b12.
> Specifically, the 9 regression tests
>
> javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java
> javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java
> javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java
> javax/sound/midi/Gervill/SoftSynthesizer/Open.java
>
> can fail, seemingly dependent on how one logs into the machine.  What
> are the necessary and sufficient conditions for permissions to run these
> tests?  When they occur, the failures I see look like:
>
>  Windows
> =========
>
> java.lang.IllegalArgumentException: No line matching interface
> SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
> 4 bytes/frame, little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
>     at
> javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
>     at Open.main(Open.java:53)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
>     at java.lang.Thread.run(Thread.java:636)
>
>  Linux
> ======
>
> STDERR:
> java: conf.c:3109: snd_config_update_free: Assertion `update->count > 0
> && update->finfo' failed.
>
> TEST RESULT: Failed. Unexpected exit from test [exit code: 134]
>
>  Solaris
> =======
>
> java.lang.IllegalArgumentException: No line matching interface
> SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
> 4 bytes/frame, little-endian is supported.
>     at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
>     at
> javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
>     at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
>     at Open.main(Open.java:53)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
>     at java.lang.Thread.run(Thread.java:636)
>
> These failures occur with the essentially Gervill CVS files I'm using as
> well as the IcedTea versions.
>
> I've uploaded my webrev compared to the OpenJDK 6 b11 sources to
>
> http://dcstaff.invokedynamic.info/index.php?title=Image:darcy-6717691.tgz
>
> Below are the diffs of between Gervill CVS and my workspace and the
> recent IcedTea overlays and my workspace; I just loop over the Java
> files in the base directory, print out the file name, and then the
> result of diff-ing with the corresponding files in my workspace.
>
> Thanks,
>
> -Joe
>
>
>  Latest Gervill CVS (July 21, 2008) vs my workspace:
> ========================================
>
> AudioFileSoundbankReader.java
> AudioFloatConverter.java
> AudioFloatFormatConverter.java
> AudioFloatInputStream.java
> AudioSynthesizer.java
> AudioSynthesizerPropertyInfo.java
> DLSInfo.java
> DLSInstrument.java
> DLSModulator.java
> DLSRegion.java
> DLSSample.java
> DLSSampleLoop.java
> DLSSampleOptions.java
> DLSSoundbank.java
> DLSSoundbankReader.java
> EmergencySoundbank.java
> FFT.java
> InvalidDataException.java
> InvalidFormatException.java
> JARSoundbankReader.java
> ModelAbstractChannelMixer.java
> ModelAbstractOscillator.java
> ModelByteBuffer.java
> ModelByteBufferWavetable.java
> ModelChannelMixer.java
> ModelConnectionBlock.java
> ModelDestination.java
> ModelDirectedPlayer.java
> ModelDirector.java
> ModelIdentifier.java
> ModelInstrument.java
> ModelInstrumentComparator.java
> ModelMappedInstrument.java
> ModelOscillator.java
> ModelOscillatorStream.java
> ModelPatch.java
> ModelPerformer.java
> ModelSource.java
> ModelStandardDirector.java
> ModelStandardTransform.java
> ModelTransform.java
> ModelWavetable.java
> RIFFInvalidDataException.java
> RIFFInvalidFormatException.java
> RIFFReader.java
> RIFFWriter.java
> SF2GlobalRegion.java
> SF2Instrument.java
> SF2InstrumentRegion.java
> SF2Layer.java
> SF2LayerRegion.java
> SF2Modulator.java
> SF2Region.java
> SF2Sample.java
> SF2Soundbank.java
> SF2SoundbankReader.java
> SimpleInstrument.java
> SimpleSoundbank.java
> SoftAbstractResampler.java
> SoftAudioBuffer.java
> SoftAudioProcessor.java
> SoftAudioPusher.java
> SoftChannel.java
> SoftChannelProxy.java
> SoftChorus.java
> SoftControl.java
> SoftCubicResampler.java
> 8c8
> <  * particular file as suabject to the "Classpath" exception as provided
> ---
>  >  * particular file as subject to the "Classpath" exception as provided
> SoftEnvelopeGenerator.java
> SoftFilter.java
> SoftInstrument.java
> SoftJitterCorrector.java
> SoftLanczosResampler.java
> SoftLimiter.java
> SoftLinearResampler.java
> SoftLinearResampler2.java
> SoftLowFrequencyOscillator.java
> SoftMainMixer.java
> SoftMidiAudioFileReader.java
> SoftMixingClip.java
> SoftMixingDataLine.java
> SoftMixingMainMixer.java
> SoftMixingMixer.java
> SoftMixingMixerProvider.java
> SoftMixingSourceDataLine.java
> SoftPerformer.java
> SoftPointResampler.java
> SoftProcess.java
> SoftProvider.java
> SoftReceiver.java
> SoftResampler.java
> SoftResamplerStreamer.java
> SoftReverb.java
> SoftShortMessage.java
> SoftSincResampler.java
> SoftSynthesizer.java
> SoftTuning.java
> SoftVoice.java
>
>
>  IcedTea 6 58510fd936ff overlays vs my workspace
> ======================================
>
> AudioFileSoundbankReader.java
> AudioFloatConverter.java
> AudioFloatFormatConverter.java
> AudioFloatInputStream.java
> AudioSynthesizer.java
> AudioSynthesizerPropertyInfo.java
> DLSInfo.java
> DLSInstrument.java
> DLSModulator.java
> DLSRegion.java
> DLSSample.java
> DLSSampleLoop.java
> DLSSampleOptions.java
> DLSSoundbank.java
> DLSSoundbankReader.java
> 50,51d49
> <         } catch(IOException ioe) {
> <             return null;
> EmergencySoundbank.java
> FFT.java
> InvalidDataException.java
> InvalidFormatException.java
> JARSoundbankReader.java
> ModelAbstractChannelMixer.java
> ModelAbstractOscillator.java
> ModelByteBuffer.java
> ModelByteBufferWavetable.java
> ModelChannelMixer.java
> ModelConnectionBlock.java
> ModelDestination.java
> ModelDirectedPlayer.java
> ModelDirector.java
> ModelIdentifier.java
> ModelInstrument.java
> ModelInstrumentComparator.java
> ModelMappedInstrument.java
> ModelOscillator.java
> ModelOscillatorStream.java
> ModelPatch.java
> ModelPerformer.java
> ModelSource.java
> ModelStandardDirector.java
> ModelStandardTransform.java
> ModelTransform.java
> ModelWavetable.java
> RIFFInvalidDataException.java
> RIFFInvalidFormatException.java
> RIFFReader.java
> RIFFWriter.java
> SF2GlobalRegion.java
> SF2Instrument.java
> SF2InstrumentRegion.java
> SF2Layer.java
> SF2LayerRegion.java
> SF2Modulator.java
> SF2Region.java
> SF2Sample.java
> SF2Soundbank.java
> SF2SoundbankReader.java
> 49,50d48
> <         } catch(IOException ioe) {
> <             return null;
> SimpleInstrument.java
> SimpleSoundbank.java
> SoftAbstractResampler.java
> SoftAudioBuffer.java
> SoftAudioProcessor.java
> SoftAudioPusher.java
> SoftChannel.java
> 1197,1199c1197
> <             // Should only return lower 7 bits,
> <             // even when controller is "boosted" higher.
> <             return this.controller[controller] & 127;
> ---
>  >             return this.controller[controller];
> SoftChannelProxy.java
> SoftChorus.java
> SoftControl.java
> SoftCubicResampler.java
> 8c8
> <  * particular file as suabject to the "Classpath" exception as provided
> ---
>  >  * particular file as subject to the "Classpath" exception as provided
> SoftEnvelopeGenerator.java
> SoftFilter.java
> SoftInstrument.java
> SoftJitterCorrector.java
> SoftLanczosResampler.java
> SoftLimiter.java
> SoftLinearResampler.java
> SoftLinearResampler2.java
> SoftLowFrequencyOscillator.java
> SoftMainMixer.java
> SoftMidiAudioFileReader.java
> SoftMixingClip.java
> SoftMixingDataLine.java
> SoftMixingMainMixer.java
> SoftMixingMixer.java
> 357,359d356
> <                     DataLine.Info info = new DataLine.Info(
> <                             SourceDataLine.class, format);
> <
> 368,369c365,413
> <                             line = (SourceDataLine)
> defaultmixer.getLine(info);
> <                         else
> ---
>  >                         {
>  >                             // Search for suitable line
>  >
>  >                             DataLine.Info idealinfo = null;
>  >                             AudioFormat idealformat = null;
>  >
>  >                             Line.Info[] lineinfos =
> defaultmixer.getSourceLineInfo();
>  >                             idealFound:
>  >                             for (int i = 0; i < lineinfos.length; i++) {
>  >                                 if(lineinfos[i].getLineClass() ==
> SourceDataLine.class)
>  >                                 {
>  >                                     DataLine.Info info =
> (DataLine.Info)lineinfos[i];
>  >                                     AudioFormat[] formats =
> info.getFormats();
>  >                                     for (int j = 0; j <
> formats.length; j++) {
>  >                                         AudioFormat format = formats[j];
>  >                                         if(format.getChannels() == 2 ||
>  >                                                 format.getChannels()
> == AudioSystem.NOT_SPECIFIED)
>  >
> if(format.getEncoding().equals(Encoding.PCM_SIGNED) ||
>  >
> format.getEncoding().equals(Encoding.PCM_UNSIGNED))
>  >                                         if(format.getSampleRate() ==
> AudioSystem.NOT_SPECIFIED ||
>  >
> format.getSampleRate() == 48000.0)
>  >
> if(format.getSampleSizeInBits() == AudioSystem.NOT_SPECIFIED ||
>  >
> format.getSampleSizeInBits() == 16)
>  >                                         {
>  >                                             idealinfo = info;
>  >                                             int ideal_channels =
> format.getChannels();
>  >                                             boolean ideal_signed =
> format.getEncoding().equals(Encoding.PCM_SIGNED);
>  >                                             float ideal_rate =
> format.getSampleRate();
>  >                                             boolean ideal_endian =
> format.isBigEndian();
>  >                                             int ideal_bits =
> format.getSampleSizeInBits();
>  >                                             if(ideal_bits ==
> AudioSystem.NOT_SPECIFIED) ideal_bits = 16;
>  >                                             if(ideal_channels ==
> AudioSystem.NOT_SPECIFIED) ideal_channels = 2;
>  >                                             if(ideal_rate ==
> AudioSystem.NOT_SPECIFIED) ideal_rate = 48000;
>  >                                             idealformat = new
> AudioFormat(ideal_rate, ideal_bits,
>  >                                                     ideal_channels,
> ideal_signed, ideal_endian);
>  >                                             break idealFound;
>  >                                         }
>  >                                     }
>  >                                 }
>  >                             }
>  >
>  >                             if(idealformat != null)
>  >                             {
>  >                                 format = idealformat;
>  >                                 line = (SourceDataLine)
> defaultmixer.getLine(idealinfo);
>  >                             }
>  >                         }
>  >
>  >                         if(line == null)
> SoftMixingMixerProvider.java
> SoftMixingSourceDataLine.java
> SoftPerformer.java
> SoftPointResampler.java
> SoftProcess.java
> SoftProvider.java
> SoftReceiver.java
> SoftResampler.java
> SoftResamplerStreamer.java
> SoftReverb.java
> SoftShortMessage.java
> SoftSincResampler.java
> SoftSynthesizer.java
> 540a541,546
>  >             File userhome = null;
>  >             File emg_soundbank_file = null;
>  >
>  >             /*
>  >              *  Try to load saved generated soundbank
>  >              */
> 541a548,563
>  >                 userhome = new File(System.getProperty("user.home"),
>  >                      ".gervill");
>  >                 emg_soundbank_file = new File(userhome,
> "soundbank-emg.sf2");
>  >                 Soundbank sbk =
> MidiSystem.getSoundbank(emg_soundbank_file);
>  >                 defaultSoundBank = sbk;
>  >                 return defaultSoundBank;
>  >             } catch (AccessControlException e) {
>  >             } catch (Exception e) {
>  >                 //e.printStackTrace();
>  >             }
>  >
>  >             try {
>  >
>  >                 /*
>  >                  *  Generate emergency soundbank
>  >                  */
> 542a565,574
>  >
>  >                 /*
>  >                  *  Save generated soundbank to disk for faster
> future use.
>  >                  */
>  >                 if(defaultSoundBank != null)
>  >                 {
>  >                     if(!userhome.exists()) userhome.mkdirs();
>  >                     if(!emg_soundbank_file.exists())
>  >
> ((SF2Soundbank)defaultSoundBank).save(emg_soundbank_file);
>  >                 }
> 594,596d625
> <         if (soundbank == null || !isSoundbankSupported(soundbank))
> <             throw new IllegalArgumentException("Unsupported soundbank:
> " + soundbank);
> <
> 621,623d649
> <         if (soundbank == null || !isSoundbankSupported(soundbank))
> <             throw new IllegalArgumentException("Unsupported soundbank:
> " + soundbank);
> <
> SoftTuning.java
> SoftVoice.java
> WaveExtensibleFileReader.java
> diff:
> /net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java:
> No such file or directory
> WaveFloatFileReader.java
> 74a75
>  >         long framerate = 1;
> 89c90
> <                 /* framerate = */chunk.readUnsignedInt();
> ---
>  >                 framerate = chunk.readUnsignedInt();
> 106c107
> <                 framesize, samplerate, false);
> ---
>  >                 framesize, framerate, false);
> WaveFloatFileWriter.java
> diff:
> /net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java:
> No such file or directory
>
>
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.524 / Virus Database: 270.5.4/1566 - Release Date: 22.7.2008 06:00
>



No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.5/1569 - Release Date: 23.7.2008 13:31


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Karl.

Karl Helgason wrote:
Hi Joe,

I have fixed the jtreg tests in Gervill CVS so they use a dummy SourceDataLine instead of real one.
  

Yes, I synced up my workspace with your latest CVS changes and all the Gervill regression tests now pass when run through our jprt build/test system :-)

I've updated a revised webrev to invokedynamic.info.

Thanks,

-Joe

cheers,
Karl
________________________________________
Frá: Joe.Darcy@... [Joe.Darcy@...]
Sent: 25. júlí 2008 05:51
Viðtakandi: Karl Helgason
Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
Efni: Re: SV: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

Hi Karl.

Karl Helgason wrote:
  
Hi Joe,

Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are then copied from Gervill CVS.
Any fixes that have been done in Gervill overlays in IcedTea 6 has also been done Gervill CVS.
Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can be seen in the CHANGES file.
    

Right, I want to update to the latest and greatest version of Gervill,
with all the fixes you and Mark have worked on :-)  Just to be clear,
given that the IcedTea overlays the the Gervill CVS are different, you
recommend I upgrade OpenJDK 6 to match the latest Gervill CVS.

  
I have fixed the "suabject" typo in the SoftCubicResampler.java in the Gervill CVS master.
Where did you find raw types in the code, there aren't supposed to be any.

WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader has been
moved to src.floatwav in the Gervill CVS. Because they aren't directly related with
Gervill Synthesizer. They simply add support for float encoded Wave files.
And WaveExtensibleFileReader is also a proposal how we should store
channel mask in AudioFormat properties (used for multi-channel wave files).
    

So, should I add these files to OpenJDK 6?
  

  
SoftMixingMixer is a experimental mixer to replace the functionality of the
Java Sound Audio Engine mixer. It performs software audio mixing,
which is useful when the audio hardware doesn't support mixing.
It is not yet fully ready. And thus is disabled in the IcedTea.
    

Okay; I'll leave the service files as they are now.

  
Those 9 regression tests fails because we aren't able to open audio device
with default format.
This is the code that fails:
  AudioFormat format = new AudioFormat(44100, 16, 2, true, false)
  line = AudioSystem.getSourceDataLine(getFormat());
It will be interesting to know if this code fails under those conditions which
the regression tests fail in.
    

I haven't been able to exactly charactterize when the tests pass.
Running as root on Linu x seems to work, as does logging in via the
console on Solaris.  However, ssh based logins seem problematic.  How do
you run these tests?  Often we run the JDK regression tests remotely
over ssh, etc. so it is preferable for the tess to be able to pass in
those circumstances too to avoid spurious failures.

  
And it will also be interesting to know if these tests also fails
if you enable the SoftMixingMixerProvider mixer provider.
    

IIRC, in various iterations, I changed the service files to enable the
soft mixing mixer and those 9 tests still failed across platforms.

Cheers,

-Joe

  
regards,
Karl

________________________________________
Frá: sound-dev-bounces@... [sound-dev-bounces@...] Fyrir h&#246;nd Joe Darcy [Joe.Darcy@...]
Sent: 22. júlí 2008 22:53
Viðtakandi: audio-engine-dev@...
Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
Efni: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

Hello.

With my OpenJDK 6 release manager hat on, I've been working to update
the version of Gervill used to OpenJDK 6 to a newer version that passes
the JCK tests, etc. and I'd like some review of my integration work.
Before this exercise, I don't have any prior experience with sound code.

A few comments, the copyright header in file SoftCubicResampler.java in
the Gervill CVS master contains the typo "suabject" instead of
"subject."  From some casual examination of the code, it seems to use
raw types throughout, that is "List" rather than "List<String>", etc.
It would be better to covert to using generics; I think IDEs have
refactorings to help this now.

There are some differences between the latest Gervill CVS from the
project's site and the Gervill overlays in IcedTea 6.  In particular,
IcedTea has changes to SoftMixingMixer.java and SoftSynthesizer.java as
well as some additional files, WaveExtensibleFileReader.java and
WaveFloatFileWriter.java.  I'd prefer to limit future merging work
between the three code bases, Gervill CVS, OpenJDK 6, and IcedTea
overlays, so in the context of updating Gervill for OpenJDK 6 b12, I
think it would be good to resolve these remaining few differences.  The
test directories are the same in all three code bases, except I don't
pick up a missing newline at the end of
./SoftCubicResampler/Interpolate.java.

During the update I ran into some testing issues, both with the original
Gervill integration in OpenJDK 6 b10 as well as the new code for b12.
Specifically, the 9 regression tests

javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java
javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java
javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java
javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java
javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java
javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java
javax/sound/midi/Gervill/SoftSynthesizer/Open.java

can fail, seemingly dependent on how one logs into the machine.  What
are the necessary and sufficient conditions for permissions to run these
tests?  When they occur, the failures I see look like:

 Windows
=========

java.lang.IllegalArgumentException: No line matching interface
SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
4 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at
javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
    at Open.main(Open.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at
com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
    at java.lang.Thread.run(Thread.java:636)

 Linux
======

STDERR:
java: conf.c:3109: snd_config_update_free: Assertion `update->count > 0
&& update->finfo' failed.

TEST RESULT: Failed. Unexpected exit from test [exit code: 134]

 Solaris
=======

java.lang.IllegalArgumentException: No line matching interface
SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo,
4 bytes/frame, little-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at
javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:762)
    at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:744)
    at Open.main(Open.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at
com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:96)
    at java.lang.Thread.run(Thread.java:636)

These failures occur with the essentially Gervill CVS files I'm using as
well as the IcedTea versions.

I've uploaded my webrev compared to the OpenJDK 6 b11 sources to

http://dcstaff.invokedynamic.info/index.php?title=Image:darcy-6717691.tgz

Below are the diffs of between Gervill CVS and my workspace and the
recent IcedTea overlays and my workspace; I just loop over the Java
files in the base directory, print out the file name, and then the
result of diff-ing with the corresponding files in my workspace.

Thanks,

-Joe


 Latest Gervill CVS (July 21, 2008) vs my workspace:
========================================

AudioFileSoundbankReader.java
AudioFloatConverter.java
AudioFloatFormatConverter.java
AudioFloatInputStream.java
AudioSynthesizer.java
AudioSynthesizerPropertyInfo.java
DLSInfo.java
DLSInstrument.java
DLSModulator.java
DLSRegion.java
DLSSample.java
DLSSampleLoop.java
DLSSampleOptions.java
DLSSoundbank.java
DLSSoundbankReader.java
EmergencySoundbank.java
FFT.java
InvalidDataException.java
InvalidFormatException.java
JARSoundbankReader.java
ModelAbstractChannelMixer.java
ModelAbstractOscillator.java
ModelByteBuffer.java
ModelByteBufferWavetable.java
ModelChannelMixer.java
ModelConnectionBlock.java
ModelDestination.java
ModelDirectedPlayer.java
ModelDirector.java
ModelIdentifier.java
ModelInstrument.java
ModelInstrumentComparator.java
ModelMappedInstrument.java
ModelOscillator.java
ModelOscillatorStream.java
ModelPatch.java
ModelPerformer.java
ModelSource.java
ModelStandardDirector.java
ModelStandardTransform.java
ModelTransform.java
ModelWavetable.java
RIFFInvalidDataException.java
RIFFInvalidFormatException.java
RIFFReader.java
RIFFWriter.java
SF2GlobalRegion.java
SF2Instrument.java
SF2InstrumentRegion.java
SF2Layer.java
SF2LayerRegion.java
SF2Modulator.java
SF2Region.java
SF2Sample.java
SF2Soundbank.java
SF2SoundbankReader.java
SimpleInstrument.java
SimpleSoundbank.java
SoftAbstractResampler.java
SoftAudioBuffer.java
SoftAudioProcessor.java
SoftAudioPusher.java
SoftChannel.java
SoftChannelProxy.java
SoftChorus.java
SoftControl.java
SoftCubicResampler.java
8c8
<  * particular file as suabject to the "Classpath" exception as provided
---
 >  * particular file as subject to the "Classpath" exception as provided
SoftEnvelopeGenerator.java
SoftFilter.java
SoftInstrument.java
SoftJitterCorrector.java
SoftLanczosResampler.java
SoftLimiter.java
SoftLinearResampler.java
SoftLinearResampler2.java
SoftLowFrequencyOscillator.java
SoftMainMixer.java
SoftMidiAudioFileReader.java
SoftMixingClip.java
SoftMixingDataLine.java
SoftMixingMainMixer.java
SoftMixingMixer.java
SoftMixingMixerProvider.java
SoftMixingSourceDataLine.java
SoftPerformer.java
SoftPointResampler.java
SoftProcess.java
SoftProvider.java
SoftReceiver.java
SoftResampler.java
SoftResamplerStreamer.java
SoftReverb.java
SoftShortMessage.java
SoftSincResampler.java
SoftSynthesizer.java
SoftTuning.java
SoftVoice.java


 IcedTea 6 58510fd936ff overlays vs my workspace
======================================

AudioFileSoundbankReader.java
AudioFloatConverter.java
AudioFloatFormatConverter.java
AudioFloatInputStream.java
AudioSynthesizer.java
AudioSynthesizerPropertyInfo.java
DLSInfo.java
DLSInstrument.java
DLSModulator.java
DLSRegion.java
DLSSample.java
DLSSampleLoop.java
DLSSampleOptions.java
DLSSoundbank.java
DLSSoundbankReader.java
50,51d49
<         } catch(IOException ioe) {
<             return null;
EmergencySoundbank.java
FFT.java
InvalidDataException.java
InvalidFormatException.java
JARSoundbankReader.java
ModelAbstractChannelMixer.java
ModelAbstractOscillator.java
ModelByteBuffer.java
ModelByteBufferWavetable.java
ModelChannelMixer.java
ModelConnectionBlock.java
ModelDestination.java
ModelDirectedPlayer.java
ModelDirector.java
ModelIdentifier.java
ModelInstrument.java
ModelInstrumentComparator.java
ModelMappedInstrument.java
ModelOscillator.java
ModelOscillatorStream.java
ModelPatch.java
ModelPerformer.java
ModelSource.java
ModelStandardDirector.java
ModelStandardTransform.java
ModelTransform.java
ModelWavetable.java
RIFFInvalidDataException.java
RIFFInvalidFormatException.java
RIFFReader.java
RIFFWriter.java
SF2GlobalRegion.java
SF2Instrument.java
SF2InstrumentRegion.java
SF2Layer.java
SF2LayerRegion.java
SF2Modulator.java
SF2Region.java
SF2Sample.java
SF2Soundbank.java
SF2SoundbankReader.java
49,50d48
<         } catch(IOException ioe) {
<             return null;
SimpleInstrument.java
SimpleSoundbank.java
SoftAbstractResampler.java
SoftAudioBuffer.java
SoftAudioProcessor.java
SoftAudioPusher.java
SoftChannel.java
1197,1199c1197
<             // Should only return lower 7 bits,
<             // even when controller is "boosted" higher.
<             return this.controller[controller] & 127;
---
 >             return this.controller[controller];
SoftChannelProxy.java
SoftChorus.java
SoftControl.java
SoftCubicResampler.java
8c8
<  * particular file as suabject to the "Classpath" exception as provided
---
 >  * particular file as subject to the "Classpath" exception as provided
SoftEnvelopeGenerator.java
SoftFilter.java
SoftInstrument.java
SoftJitterCorrector.java
SoftLanczosResampler.java
SoftLimiter.java
SoftLinearResampler.java
SoftLinearResampler2.java
SoftLowFrequencyOscillator.java
SoftMainMixer.java
SoftMidiAudioFileReader.java
SoftMixingClip.java
SoftMixingDataLine.java
SoftMixingMainMixer.java
SoftMixingMixer.java
357,359d356
<                     DataLine.Info info = new DataLine.Info(
<                             SourceDataLine.class, format);
<
368,369c365,413
<                             line = (SourceDataLine)
defaultmixer.getLine(info);
<                         else
---
 >                         {
 >                             // Search for suitable line
 >
 >                             DataLine.Info idealinfo = null;
 >                             AudioFormat idealformat = null;
 >
 >                             Line.Info[] lineinfos =
defaultmixer.getSourceLineInfo();
 >                             idealFound:
 >                             for (int i = 0; i < lineinfos.length; i++) {
 >                                 if(lineinfos[i].getLineClass() ==
SourceDataLine.class)
 >                                 {
 >                                     DataLine.Info info =
(DataLine.Info)lineinfos[i];
 >                                     AudioFormat[] formats =
info.getFormats();
 >                                     for (int j = 0; j <
formats.length; j++) {
 >                                         AudioFormat format = formats[j];
 >                                         if(format.getChannels() == 2 ||
 >                                                 format.getChannels()
== AudioSystem.NOT_SPECIFIED)
 >
if(format.getEncoding().equals(Encoding.PCM_SIGNED) ||
 >
format.getEncoding().equals(Encoding.PCM_UNSIGNED))
 >                                         if(format.getSampleRate() ==
AudioSystem.NOT_SPECIFIED ||
 >
format.getSampleRate() == 48000.0)
 >
if(format.getSampleSizeInBits() == AudioSystem.NOT_SPECIFIED ||
 >
format.getSampleSizeInBits() == 16)
 >                                         {
 >                                             idealinfo = info;
 >                                             int ideal_channels =
format.getChannels();
 >                                             boolean ideal_signed =
format.getEncoding().equals(Encoding.PCM_SIGNED);
 >                                             float ideal_rate =
format.getSampleRate();
 >                                             boolean ideal_endian =
format.isBigEndian();
 >                                             int ideal_bits =
format.getSampleSizeInBits();
 >                                             if(ideal_bits ==
AudioSystem.NOT_SPECIFIED) ideal_bits = 16;
 >                                             if(ideal_channels ==
AudioSystem.NOT_SPECIFIED) ideal_channels = 2;
 >                                             if(ideal_rate ==
AudioSystem.NOT_SPECIFIED) ideal_rate = 48000;
 >                                             idealformat = new
AudioFormat(ideal_rate, ideal_bits,
 >                                                     ideal_channels,
ideal_signed, ideal_endian);
 >                                             break idealFound;
 >                                         }
 >                                     }
 >                                 }
 >                             }
 >
 >                             if(idealformat != null)
 >                             {
 >                                 format = idealformat;
 >                                 line = (SourceDataLine)
defaultmixer.getLine(idealinfo);
 >                             }
 >                         }
 >
 >                         if(line == null)
SoftMixingMixerProvider.java
SoftMixingSourceDataLine.java
SoftPerformer.java
SoftPointResampler.java
SoftProcess.java
SoftProvider.java
SoftReceiver.java
SoftResampler.java
SoftResamplerStreamer.java
SoftReverb.java
SoftShortMessage.java
SoftSincResampler.java
SoftSynthesizer.java
540a541,546
 >             File userhome = null;
 >             File emg_soundbank_file = null;
 >
 >             /*
 >              *  Try to load saved generated soundbank
 >              */
541a548,563
 >                 userhome = new File(System.getProperty("user.home"),
 >                      ".gervill");
 >                 emg_soundbank_file = new File(userhome,
"soundbank-emg.sf2");
 >                 Soundbank sbk =
MidiSystem.getSoundbank(emg_soundbank_file);
 >                 defaultSoundBank = sbk;
 >                 return defaultSoundBank;
 >             } catch (AccessControlException e) {
 >             } catch (Exception e) {
 >                 //e.printStackTrace();
 >             }
 >
 >             try {
 >
 >                 /*
 >                  *  Generate emergency soundbank
 >                  */
542a565,574
 >
 >                 /*
 >                  *  Save generated soundbank to disk for faster
future use.
 >                  */
 >                 if(defaultSoundBank != null)
 >                 {
 >                     if(!userhome.exists()) userhome.mkdirs();
 >                     if(!emg_soundbank_file.exists())
 >
((SF2Soundbank)defaultSoundBank).save(emg_soundbank_file);
 >                 }
594,596d625
<         if (soundbank == null || !isSoundbankSupported(soundbank))
<             throw new IllegalArgumentException("Unsupported soundbank:
" + soundbank);
<
621,623d649
<         if (soundbank == null || !isSoundbankSupported(soundbank))
<             throw new IllegalArgumentException("Unsupported soundbank:
" + soundbank);
<
SoftTuning.java
SoftVoice.java
WaveExtensibleFileReader.java
diff:
/net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveExtensibleFileReader.java:
No such file or directory
WaveFloatFileReader.java
74a75
 >         long framerate = 1;
89c90
<                 /* framerate = */chunk.readUnsignedInt();
---
 >                 framerate = chunk.readUnsignedInt();
106c107
<                 framesize, samplerate, false);
---
 >                 framesize, framerate, false);
WaveFloatFileWriter.java
diff:
/net/hest.sfbay/w/darcy/ws/6-open.new/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileWriter.java:
No such file or directory



No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.4/1566 - Release Date: 22.7.2008 06:00

    



No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.5/1569 - Release Date: 23.7.2008 13:31

  


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Karl.

Karl Helgason wrote:
> Hi Joe,
>
> Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are then copied from Gervill CVS.
> Any fixes that have been done in Gervill overlays in IcedTea 6 has also been done Gervill CVS.
> Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can be seen in the CHANGES file.
>
> I have fixed the "suabject" typo in the SoftCubicResampler.java in the Gervill CVS master.
> Where did you find raw types in the code, there aren't supposed to be any.
>  

If you compile the source with "javac Xlint:unchecked" it will list the
52 or so places with unchecked conversions, mostly from raw uses of
Vector, ArrayList, Map, and doPrivileged.

-Joe

Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Alex Menkov wrote:

>
> Karl Helgason wrote:
>>>> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader
>>>> has been
>>>> moved to src.floatwav in the Gervill CVS. Because they aren't
>>>> directly related with
>>>> Gervill Synthesizer. They simply add support for float encoded Wave
>>>> files.
>>>> And WaveExtensibleFileReader is also a proposal how we should store
>>>> channel mask in AudioFormat properties (used for multi-channel wave
>>>> files).
>>> So, should I add these files to OpenJDK 6?
>>>
>>
>> It depends, Alexey thought we should rather add support for PCM Float
>> support
>> to current com.sun.media.sound.WaveFileReader and WaveFileWriter classes
>> than introducing new one.
>
> All this wave readers (current PCM/ALAW/ULAW and Float & Extensible
> from Gervill) could be combined in different ways - basing on current
> WaveFileReader or basing on WaveFloatFileReader or
> WaveExtensibleFileReader.
> Main goal is to avoid functionality duplication.

I'm personally agnostic toward how this functionality is implemented.  
Alex and Karl, how about I add these files along with the other changes
I'm making?

-Joe

>
> >>> And WaveExtensibleFileReader is also a proposal how we should store
> >>> channel mask in AudioFormat properties (used for multi-channel
> wave files).
>
> Wow.. I've overlooked this :)
>
>
>
> Regards
> Alex


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Joe Darcy wrote:

> Hi Karl.
>
> Karl Helgason wrote:
>> Hi Joe,
>>
>> Gervill CVS has the newest code and Gervill overlays in IcedTea 6 are
>> then copied from Gervill CVS.
>> Any fixes that have been done in Gervill overlays in IcedTea 6 has
>> also been done Gervill CVS.
>> Gervill in OpenJDK 6 b10 was based on version 0.9 of Gervill as can
>> be seen in the CHANGES file.
>>
>> I have fixed the "suabject" typo in the SoftCubicResampler.java in
>> the Gervill CVS master.
>> Where did you find raw types in the code, there aren't supposed to be
>> any.
>>  
>
> If you compile the source with "javac Xlint:unchecked" it will list
> the 52 or so places with unchecked conversions, mostly from raw uses
> of Vector, ArrayList, Map, and doPrivileged.
>
>

Correction; the Gervill sources are clean regarding unchecked warnings.  
The warnings I see are from other files in the com.sun.media.sound package.

Sorry for the mistake,

-Joe


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Karl Helgason-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Adding PCM Float support into current WaveFileReader.java, WaveFileWriter.java
would be best. And it is just question of adding few lines.
But until then I think you can use WaveFloatFileReader.java,  WaveFloatFileWriter.java.
________________________________________
Frá: Joe.Darcy@... [Joe.Darcy@...]
Sent: 29. júlí 2008 00:25
Viðtakandi: Alex Menkov; Karl Helgason
Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
Efni: Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

Alex Menkov wrote:

>
> Karl Helgason wrote:
>>>> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader
>>>> has been
>>>> moved to src.floatwav in the Gervill CVS. Because they aren't
>>>> directly related with
>>>> Gervill Synthesizer. They simply add support for float encoded Wave
>>>> files.
>>>> And WaveExtensibleFileReader is also a proposal how we should store
>>>> channel mask in AudioFormat properties (used for multi-channel wave
>>>> files).
>>> So, should I add these files to OpenJDK 6?
>>>
>>
>> It depends, Alexey thought we should rather add support for PCM Float
>> support
>> to current com.sun.media.sound.WaveFileReader and WaveFileWriter classes
>> than introducing new one.
>
> All this wave readers (current PCM/ALAW/ULAW and Float & Extensible
> from Gervill) could be combined in different ways - basing on current
> WaveFileReader or basing on WaveFloatFileReader or
> WaveExtensibleFileReader.
> Main goal is to avoid functionality duplication.

I'm personally agnostic toward how this functionality is implemented.
Alex and Karl, how about I add these files along with the other changes
I'm making?

-Joe

>
> >>> And WaveExtensibleFileReader is also a proposal how we should store
> >>> channel mask in AudioFormat properties (used for multi-channel
> wave files).
>
> Wow.. I've overlooked this :)
>
>
>
> Regards
> Alex



No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.5.6/1576 - Release Date: 27.7.2008 16:16


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Karl Helgason wrote:
> Adding PCM Float support into current WaveFileReader.java, WaveFileWriter.java
> would be best. And it is just question of adding few lines.
> But until then I think you can use WaveFloatFileReader.java,  WaveFloatFileWriter.java.

Just to be clear, you recommend for now I add WaveFloatFileReader.java
and  WaveFloatFileWriter.java. (from src.floatwav/ rather than src/) but
  not include WaveExtensibleFileReader.java.

-Joe

> ________________________________________
> Frá: Joe.Darcy@... [Joe.Darcy@...]
> Sent: 29. júlí 2008 00:25
> Viðtakandi: Alex Menkov; Karl Helgason
> Afrit: sound-dev@...; Alexey.Menkov@...; Dalibor.Topic@...
> Efni: Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12
>
> Alex Menkov wrote:
>> Karl Helgason wrote:
>>>>> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader
>>>>> has been
>>>>> moved to src.floatwav in the Gervill CVS. Because they aren't
>>>>> directly related with
>>>>> Gervill Synthesizer. They simply add support for float encoded Wave
>>>>> files.
>>>>> And WaveExtensibleFileReader is also a proposal how we should store
>>>>> channel mask in AudioFormat properties (used for multi-channel wave
>>>>> files).
>>>> So, should I add these files to OpenJDK 6?
>>>>
>>> It depends, Alexey thought we should rather add support for PCM Float
>>> support
>>> to current com.sun.media.sound.WaveFileReader and WaveFileWriter classes
>>> than introducing new one.
>> All this wave readers (current PCM/ALAW/ULAW and Float & Extensible
>> from Gervill) could be combined in different ways - basing on current
>> WaveFileReader or basing on WaveFloatFileReader or
>> WaveExtensibleFileReader.
>> Main goal is to avoid functionality duplication.
>
> I'm personally agnostic toward how this functionality is implemented.
> Alex and Karl, how about I add these files along with the other changes
> I'm making?
>
> -Joe
>
>>>>> And WaveExtensibleFileReader is also a proposal how we should store
>>>>> channel mask in AudioFormat properties (used for multi-channel
>> wave files).
>>
>> Wow.. I've overlooked this :)
>>
>>
>>
>> Regards
>> Alex
>
>
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.524 / Virus Database: 270.5.6/1576 - Release Date: 27.7.2008 16:16
>


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Joseph D. Darcy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello.

I've synced up with Karl's regression test changes, added the changes
for the three Wave* files, and integrated the updated version of Gervill
into the internal OpenJDK 6 b12 code base.  All Gervill regression tests
now pass on all platforms :-)

The source for build 12 should be posted within a week or two.

Thanks,

-Joe

Joseph D. Darcy wrote:

> Karl Helgason wrote:
>> Adding PCM Float support into current WaveFileReader.java,
>> WaveFileWriter.java
>> would be best. And it is just question of adding few lines.
>> But until then I think you can use WaveFloatFileReader.java,  
>> WaveFloatFileWriter.java.
>
> Just to be clear, you recommend for now I add WaveFloatFileReader.java
> and  WaveFloatFileWriter.java. (from src.floatwav/ rather than src/) but
>  not include WaveExtensibleFileReader.java.
>
> -Joe
>
>> ________________________________________
>> Frá: Joe.Darcy@... [Joe.Darcy@...]
>> Sent: 29. júlí 2008 00:25
>> Viðtakandi: Alex Menkov; Karl Helgason
>> Afrit: sound-dev@...; Alexey.Menkov@...;
>> Dalibor.Topic@...
>> Efni: Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12
>>
>> Alex Menkov wrote:
>>> Karl Helgason wrote:
>>>>>> WaveExtensibleFileReader,WaveFloatFileWriter,WaveFloatFileReader
>>>>>> has been
>>>>>> moved to src.floatwav in the Gervill CVS. Because they aren't
>>>>>> directly related with
>>>>>> Gervill Synthesizer. They simply add support for float encoded Wave
>>>>>> files.
>>>>>> And WaveExtensibleFileReader is also a proposal how we should store
>>>>>> channel mask in AudioFormat properties (used for multi-channel wave
>>>>>> files).
>>>>> So, should I add these files to OpenJDK 6?
>>>>>
>>>> It depends, Alexey thought we should rather add support for PCM Float
>>>> support
>>>> to current com.sun.media.sound.WaveFileReader and WaveFileWriter
>>>> classes
>>>> than introducing new one.
>>> All this wave readers (current PCM/ALAW/ULAW and Float & Extensible
>>> from Gervill) could be combined in different ways - basing on current
>>> WaveFileReader or basing on WaveFloatFileReader or
>>> WaveExtensibleFileReader.
>>> Main goal is to avoid functionality duplication.
>>
>> I'm personally agnostic toward how this functionality is implemented.
>> Alex and Karl, how about I add these files along with the other changes
>> I'm making?
>>
>> -Joe
>>
>>>>>> And WaveExtensibleFileReader is also a proposal how we should store
>>>>>> channel mask in AudioFormat properties (used for multi-channel
>>> wave files).
>>>
>>> Wow.. I've overlooked this :)
>>>
>>>
>>>
>>> Regards
>>> Alex
>>
>>
>>
>> No virus found in this incoming message.
>> Checked by AVG.
>> Version: 7.5.524 / Virus Database: 270.5.6/1576 - Release Date:
>> 27.7.2008 16:16
>>
>


Re: <Sound Dev> Updating Gervill for OpenJDK 6 build 12

by Dalibor Topic-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Joseph D. Darcy wrote:
> Hello.
>
> I've synced up with Karl's regression test changes, added the changes
> for the three Wave* files, and integrated the updated version of
> Gervill into the internal OpenJDK 6 b12 code base.  All Gervill
> regression tests now pass on all platforms :-)
>
> The source for build 12 should be posted within a week or two.
Thanks, Joe, you rock ;)

cheers,
dalibor topic

--
*******************************************************************
Dalibor Topic                   Tel: (+49 40) 23 646 738
Java F/OSS Ambassador           AIM: robiladonaim
Sun Microsystems GmbH           Mobile: (+49 177) 2664 192
Nagelsweg 55                    http://openjdk.java.net
D-20097 Hamburg                 mailto:Dalibor.Topic@...
Sitz der Gesellschaft: Sonnenallee 1, D-85551 Kirchheim-Heimstetten
Amtsgericht München: HRB 161028
Geschäftsführer: Thomas Schröder, Wolfgang Engels, Dr. Roland Bömer
Vorsitzender des Aufsichtsrates: Martin Häring