Mercurial > hg > release > icedtea6-1.5
view overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt @ 1541:8259687f8f78
Import Gervill fixes from CVS. See CHANGES.txt:
6823446: Gervill SoftLowFrequencyOscillator fails when freq is
set to 0 cent or 8.1758 Hz.
6823445: Gervill SoftChannel/ResetAllControllers jtreg test
fails after portamento fix from last merge.
6821030: Merge OpenJDK Gervill with upstream sources, Q1CY2009
- Fix: Notes get stuck on when we overflow the synthesizer
with rapid note on /off messages.
JTreg test has been created:
test/com/sun/media/sound/SoftChannel/NoteOverFlowTest
- Fix: Portamento controller reset to wrong value in
SoftChannel.resetAllControllers.
This caused incorrect glider effect in some midi files.
For example in TuningApplet1 in TET-7 keyboard,
when note was pressed for first time a glider effect could be
heard.
- Fix: Delay modulation calculation in SoftChorus.LFODelay where
incorrect.
- Fix: Removed unnecessary volatile keywords in SoftChorus.
author | Mark Wielaard <mark@klomp.org> |
---|---|
date | Mon, 18 May 2009 08:48:55 +0200 |
parents | cfe2c755ee47 |
children |
line wrap: on
line source
6823446: Gervill SoftLowFrequencyOscillator fails when freq is set to 0 cent or 8.1758 Hz. 6823445: Gervill SoftChannel/ResetAllControllers jtreg test fails after portamento fix from last merge. 6821030: Merge OpenJDK Gervill with upstream sources, Q1CY2009 - Fix: Notes get stuck on when we overflow the synthesizer with rapid note on/off messages. JTreg test has been created: test/com/sun/media/sound/SoftChannel/NoteOverFlowTest - Fix: Portamento controller reset to wrong value in SoftChannel.resetAllControllers. This caused incorrect glider effect in some midi files. For example in TuningApplet1 in TET-7 keyboard, when note was pressed for first time a glider effect could be heard. - Fix: Delay modulation calculation in SoftChorus.LFODelay where incorrect. - Fix: Removed unnecessary volatile keywords in SoftChorus. - Fix: Throw IllegalArgumentException Exception on invalid soundbank to: SoftSynthesizer.unloadAllInstruments(Soundbank soundbank) SoftSynthesizer.unloadInstruments(Soundbank soundbank, Patch[] patchList) just like done in: SoftSynthesizer.unloadInstrument(Instrument instrument). - Change: SoftMainMixer, SoftVoice optimized for mono voices. - Change: SoftFilter optimized. - Fix: Turn SoftJitterCorrector, SoftAudioPusher threads into a daemon threads. These threads prevented the VM to exit when synthesizer was open. See: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=213 - Add: More JTreg tests added: EmergencySoundbank SoftFilter AudioFloatConverter.ToFloatArray (improved) - Change: SoftReverb optimized, about 2 times faster. - Fix: ModelByteBuffer.skip called super.skip instead to call to RandomAccessFile directly. JTreg tests added: ModelByteBuffer/RandomFileInputStream/*.java Version 1.0.2 (released in OpenJDK 6 b12) - Fix: ModelByteBuffer.len was being modified in inner class RandomFileInputStream. The variable was made final and RandomFileInputStream.read methods where fixed. - Fix: ArrayOutOfException error in ModelInstrument.getKeys(), Keys array was to small, it couldn't hold all possible midi notes (0..127). Version 1.0.1 (released as 1.0) - Fix: Created dummy SourceDataline so that following jtreg test can be tested without using a real Audio Device SourceDataLine. 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 - Fix: Make open SoftSynthesizer garbage-collectable when user don't have reference to it and it is not producing any sound. - Fix: SoftReverb silent detection improved. - Added: SoftSynthesizer.getPropertyInfo returns current properties values if it is open. - Fix: Restrict input values in SoftChannel to 7 and 14 bit in these methods: noteOn noteOff setPolyPressure setChannelPressure controlChange programChange(program) programChange(bank, program) setPitchBend - Fix: Store generated soundbank to disk for faster future use. - Cleanup: Make inner classes static AudioFloatFormatConverter.AudioFloatFormatConverterInputStream AudioFloatFormatConverter.AudioFloatInputStreamChannelMixer AudioFloatFormatConverter.AudioFloatInputStreamResampler SimpleInstrument.SimpleInstrumentPart SoftChorus.VariableDelay SoftChorus.LFODelay SoftMixingDataLine.AudioFloatInputStreamResampler SoftMixingSourceDataLine.NonBlockingFloatInputStream SoftReverb.AllPass SoftReverb.Comb SoftReverb.Delay - Cleanup: Remove unused fields in: SoftSincResampler.din, SoftLanczosResampler.din, SoftMainMixer.finetuning, SoftMainMixer.coarsetuning SoftJitterCorrector.JitterStream.nullbuff, SoftAbstractResampler.ModelAbstractResampler.loopread SoftAbstractResampler.ModelAbstractResampler.streammarked - Cleanup: Remove dead code from FFT. - Cleanup: Make constant fields in SoftFilter final. - Cleanup: Let SoftSynthesizer.info be final. - Cleanup: Let SoftProvider.info be final. - Fix: Unnecessary call to sourceDataLine.drain() in SoftSynthesizer causes random hangs in SoftSynthesizer.open jtreg test. This happens when the synthesizer is opened and right after closed. This will not happen if there is a delay between open and close call. - Fix: ModelByteBufferAudioFileSoundbankReader, SoftAudioPusher, SoftJitterCorrector don't ignore stream.read return value. - Fix: NullPointerException in SoftSynthesizer.unloadInstrument if instrument = null - Fix: SoftJitterCorrector.getSoundbank(URL) may fail to close stream. - Fix: Futile attempts to guard buffers variable in SoftJitterCorrector. - Fix: RiffReader/SF2SoundbankReader/DLSSoundbank should use readfully instead of read when reading from stream. JTreg tests where created to test for this. - Added: Software Mixing Mixer - Removed: PATSoundBankReader removed because no format license is available. It is also undocumented format. - Added: AudioFloatFormatConverter, used to convert between PCM_SIGNED, PCM_UNSIGNED, PCM_FLOAT in 8/16/24/32 bit (big/little endian), and resample using (linear/cubic/sinc...) if needed. - Fix: AudioFloatFormatConverter.getTargetFormats(Encoding, AudioFormat) returned audio formats in encoding not asked for. - Added: WaveExtensibleReader, used to read WAV files using WAVE_FORMAT_EXTENSIBLE format. - Added: WaveFloatFileWriter, used to writing WAV files with PCM_FLOAT encoding. - Change: Make SoftAudioProcessor (limiter, reverb, chorus, agc) more general. - Fix: Don't restrict reading dls/sf2 soundbank to only files with .dls and .sf2 endings. - Fix: AudioFloatConverter tests incorrectly AudioFormat frameSize against SampleSizeInBits Support for 64-byte float added, and support for 32+ bit PCM samples. SampleSizeInBits not dividable by 8 are now handled correctly. - Fix: DLSID(GUID) values incorrectly read from files in DLSSoundBank. - Fix: WaveFloatFileReader incorrectly sets framrate. - Fix: DLSSoundbank writes avgBytesPerSec incorrectly if SampleSizeInBits is not dividable by 8. - Fix: SoftChannel didn't reset concept of LSB control to 0 when MSB control value is set (according to MIDI 1.0 Detailed Spec. page 12) - Fix: SoftChannel, added check for illegal noteNumbers. If illegal notenumber was used in NoteOn/NoteOff a ArrayOutOfIndex exception was thrown. Version 1.0 (released in OpenJDK 6 b10) - Fix: Default tempo in SoftMidiFileReader was supposed to be 500000 mpq or 120 bpm - Fix: Change type of info variable in SoftSynthesize into MidiDevice.Info - Fix: Fix instanceof check of p1 variable in ModelInstrumentComparator - Fix: Remove redundant constant variable in ModelByteBufferWaveTable Version 0.9 - Fix: JTreg SoftSynthesizer\ImplicitOpenClose.java did not test correctly. - Fix: SoftSynthesizer.isSoundbankSupported now only returns false if there is any instrument which is not supported. - Fix: SoftSynthesizer.remapInstrument did not work correctly. - Fix: SoftSynthesizer.loadInstrument SoftSynthesizer.loadInstruments SoftSynthesizer.loadAllInstruments SoftSynthesizer.unloadInstrument SoftSynthesizer.unloadInstruments SoftSynthesizer.unloadAllInstruments SoftSynthesizer.getAvailableInstruments SoftSynthesizer.getLoadedInstruments now throws IllegalArgumentException if instrument is not supported and false if instrument can't be loaded for some other reason. - Fix: SoftSynthesizer.getReceivers() SoftSynthesizer.getMicrosecondPosition() SoftSynthesizer.getVoiceStatus() SoftSynthesizer.getChannels() SoftMidiAudioFileReader.getAudioInputStream(Sequence seq) now no longer throw IllegalStateException. - Fix: SoftSynthesizer.getChannels() and SoftSynthesizer.getVoiceStatus() now no longer return internal array. - Fix: CPU spiking caused by denormal floats in SoftReverb. - Fix: Calling getReceiver before opening the synthesizer results in NullPointerException. JTreg test added: SoftSynthesizer/GetReceiver2 - Fix: Removed checksum check on BULK TUNING DUMP (NON-REAL-TIME) Because MIDI Tuning Spec was ambigous about how to calculate the checksum and different programs tested calculated different checksum. JTreg test SoftTuning/Load1 fixed. VERSION 0.8 - Fix: Active Sense Messages where incorrectly handled. JTreg test: SoftReceiver/Send_ActiveSense.java - Fix: SoftAudioPusher doesn't longer try to prevent blocking. - Added: SoftJitterCorrector added to fix jitter on long buffers. VERSION 0.7 - Fix: General MIDI mode, and voice_allocation_mode flag wasn't reseted on open/close cycle. - Fix: Added support for implicit open/close (as described in http://java.sun.com/javase/6/docs/api/javax/sound/midi/MidiDevice.html) (JTreg test also added) This done by implementing com.sun.media.sound.ReferenceCountingDevice interface. - Fix: SoftReceiver.close doesn't throw exception if closed. (now behaves like SoftSynthesizer.close) - Fix: Close variable wasn't accessed in Thread safe way in: SoftReceiver, SoftSynthesizer. - Fix: Hang in SoftSynthesizer.close. SoftAudioPusher must not be closed synchronized against control_mutex this may result in synchronized conflict between pusher and caller thread. - Fix: Bad handling of mono output in SoftVoice.processAudioLogic, this error was found running the new SoftSynthesizer/TestRender1 jtreg test. - Added: ModelDirector to support conditional layers/performers. - Added: ReleaseTrigger property to ModelPerformer. - Added: ModelAbstractOscillator to simplify creation custom oscillators. - Added: ModelChannelMixer to support for example non-voice oriented instruments. - Added: Support for more than 16 midi channels. - Added: JARSoundBankReader. - Change default latency from 400 to 200 mec. VERSION 0.6 - Added RIFFWriter(OutputStream) constructor. - Added save(OutputStream out) to DLSSoundbank and SF2Soundbank. - Renamed : isAddDefaultConnections to setDefaultConnectionsEnabled - Renamed : getAddDefaultConnections to isDefaultConnectionsEnabled - Created JTreg Unit Tests - Fixed error found in Unit Tests * AudioFloatConversion8U.toFloatArray, did not convert correctly * SoftSynthesizer.remapInstrument did not work The error was in ModelMappedInstrument * SoftSynthesizer.getMaxReceivers did not return -1 * SoftTuning.checksumOK calculated incorrect checksums. * RIFFReader.close didn't work * AudioFloatInputStream.getFrameLength returned incorrect value. * ModelByteBuffer.writeTo didn't work when ModelByteBuffer uses file pointer. * ModelIdentifier.equals, didn't compare the variable "instance". * SimpleSoundbank.removeResource did not remove resource. * RIFFWriter.close never closed underlying stream. VERSION 0.5 - New instruments in Emergency Soundbank: * Acoustic Grand Piano * Bright Acoustic Piano * Honky-tonk Piano * Guitar * Distortion Guitar * Trumpet * Trombone * Brass Section * Horn * Sax * Oboe * Bassoon * Clarinet * Flute * Timpani * Melodic Toms * Reverse Cymbal * Orch Hit - Faster Linear Interpolation with no float to int casting. Thanks to Bruno Schoedlbauer for pointing out that float to int casting can be costly. - LargeSoundBankReader removed, Loading soundbank in large mode using urls removed. - Soundbank aren't loaded into memory until loadInstrument/loadAllInstrument is called in SoftSynthesizer. This enable loading only single instrument from soundbank collection into memory. - New "large mode" property added to SoftSynthesizer. - "getInstrument" method in DLS/SF2/SimpleSoundbank now returns ordered list by program,bank,percussion. - Fix AccessControlException in "SoftSynthesizer.getDefaultSoundbank", which occurred when using SoftSynthesizer in Applets. VERSION 0.4 - Fixed ArrayOutOfBoundsException in SoftAbstractResmpler. - Fixed NullPointerException in SoundFont.save(File). Saving global zone for layers resulted in NullPointerException. - Fixed PATSoundbankReader.getInputStream so it doesn't throw InvalidFormatException. This prevented use of MidiSystem.getSoundBank(InputStream). - Fix: Delay wasn't implemented in AHDSR envelopes. - Loading soundbank in large mode supported using MidiSystem.getSoundBank(URL) Where url is on the form: file:/C:/soundbank.sf2?largemode=true - Reverb,Chorus,AGC can be turned on/off. - MIDI files can be opened as audio streams thru javax.sound.sampled.spi.AudioFileReader. - Optimizations, rendering is up to 50 percent faster. - Emergency SoundBank. VERSION 0.3 - SoftSynthesizer doesn't implement mixer interface anymore, instead the method "openStream" has been added. - New AudioSynthesizer interface. - SoftSynthesizer.getVoiceStatus() is now thread-safe. - SoftAudioFeeder renamed to SoftAudioPusher and made more generic. - Support for multi-receiver in SoftSynthesizer. - More cleanup in SoftSynthesizer. - Fixed loops in large soundbanks. - WaveFloatFileReader added to META-INF/services VERSION 0.2 - Large format support see: LargeSoundbankReader - Fix soundfont modulator mapping direction mapping was wrong - Fix handling of unsigned 16 bit streams - Improved GUS patch support - Add support for ping-pong/bi-directional and reverse loops VERSION 0.1 - Downloadable Sound Level 2.2. - SoundFont 2.04 (24 bit) - Gravis Ultrasound-compatible patches - Use Audio files (AIFF, AU and WAV) as SoundBanks - General Midi Level 2 - MIDI Tuning Standard - Drumkits can be used on any channel - Sinc interpolation with anti-aliasing