--- libgig/trunk/ChangeLog 2005/06/12 13:06:57 632 +++ libgig/trunk/ChangeLog 2014/05/22 12:14:04 2572 @@ -1,5 +1,352 @@ +Version CVS HEAD (?) + * general changes: + - minor Makefile fix for parallel make + - Mac OS X: link with CoreFoundation (for the UUID function) + - removed gcc 4.7 warnings + - modernized configure script + - removed usage of deprecated Automake variable INCLUDES + - added new command line tool "gigmerge" + - added "const" keyword to several methods + - added new command line tool "gig2mono" + - added man page for "sf2dump" + - added new command line tool "korgdump" (and a man page for it) + - added new command line tool "korg2gig" (and a man page for it) + - moved source files of command line tools to new subdir src/tools + + * SoundFont file format: + - initial implementation + - changed region lookup API to avoid malloc in RT threads + - fixed GetEG1Sustain which didn't return correct value + - bugfix: GetPan always returned -1, 0 or 1 + + * KORG file format: + - initial support for sample based instruments in KORG's file format + (.KMP and .KSF files) + + * AKAI file format: + - Added Linux/POSIX ported version of libakai. Note that libakai is released + under LGPL terms while libgig is released under GPL terms. To handle this + license difference appropriately the AKAI support part is built as + separate DLL (.so file). + + * src/gig.cpp: + - bugfix: VCF velocity dynamic range and VCF velocity curve + weren't saved correctly + - implemented File::AddDuplicateInstrument() + - bugfix: negative EG3 depth values were not correctly parsed or + saved + - added write support for CtrlTrigger midi rule + - added read and write support for Legato and Alternator midi + rules + - bugfix: sample groups were sometimes created multiple times or with + wrong textual group name + - added new method File::AddContentOf() for merging .gig files + - GIG FORMAT EXTENSION: added additional MIDI controllers for leverage + controller types (only works with LinuxSampler & gigedit, will not + work with Gigasampler/GigaStudio) + - added new method File::GetGroup(String name) for getting group by name + - added new method Region::GetDimensionDefinition(dimension_t type) + - bugfix: don't alter region pointer in DimensionRegion::CopyAssign() + - added some more sanity checks in Region::AddDimension() + - added new method Region::DeleteDimensionZone(dimension_t, int) + - added new method Region::SplitDimensionZone(dimension_t, int) + - Fixed crash caused by Region::GetDimensionRegionByValue() that happened + with certain velocity split sounds under certain conditions (added bound + constraints to prevent that) + + * src/DLS.cpp, src/DLS.h: + - added new method File::GetFileName() + - fixed minor "memory leak on exception" bug found with cppcheck + - added new method File::GetExtensionFile(int index) + - added new method File::SetFileName() allowing to call File::Save() + later on without passing a file name + - added inline helper methods overlaps() for struct range_t + + * src/RIFF.cpp, src/RIFF.h: + - bugfix: avoid calling read() with count 0 when writing a file, + as this may hang on some systems + - fixed memory leak and memory handling errors when file loading + fails + - added new method Chunk::ReadString + - added new method File::SetFileName() allowing to call File::Save() + later on without passing a file name + - added new method File::IsNew() + - added support for loading RIFF-like files with a bit different layout + than "real" RIFF files (used for KORG format support) + - added new method Chunk::GetFile() + - added new method Chunk::GetLayout() + + * src/gigextract.cpp: + - export sample loop, unity note and fine tune with libsndfile + + * src/riftree.cpp: + - added more command line options for being able to also dump other kind + of file formats similar but not equal to the RIFF format + +Version 3.3.0 (30 Jul 2009) + + * general changes: + - fixed compilation with gcc 4.3 + - fixes for building with Visual C++ + - minor fix in configure for building DLL on Windows + + * src/gig.cpp, src/gig.h: + - added partial support for MIDI rules, only the Controller + Triggered rule is supported so far + - bugfix: removed another iterator invalidation in DeleteSample + - bugfix in Sample::LoadSampleData*(): reset sample read position to + sample start before trying to (re)load sample data from file (#82) + - bugfix: EG3 depth parameter was not saved correctly + - fixed crash which occured when streaming a gig sample with + bi-directional (a.k.a. 'pingpong') loop type (fixes #102) + + * src/RIFF.cpp, src/RIFF.h: + - bugfix: saving to the same file after the file size had been + increased made the file corrupt (#82) + - bugfix: refuse Chunk::Read() in case chunk has just been added, that + is not written physically yet (#82) + - bugfix: saving to the same file after the file size had been + decreased sometimes also made the file corrupt! + - bugfix: undefined behavior (e.g. endless loop) when opening zero + length files, now throws a RIFF::Exception instead (fixes bug #121) + - bugfix: destructor for base class RIFF::Chunk accessed members + of derived class RIFF::File, which is bad, and caused crashes + when using Visual C++ + - bugfix: files that contain zero length RIFF lists were not read + correctly (fixes #127) (bug was introduced 2009-03-13) + +Version 3.2.1 (5 Dec 2007) + + * src/RIFF.cpp, src/RIFF.h: + - avoid Windows to perform unnecessary file stream caching which would + decrease disk streaming performance on Windows systems otherwise + + * src/gig.cpp, src/gig.h: + - added File::SetAutoLoad() and File::GetAutoLoad() for allowing + applications to retrieve very superficial informations like amount of + instruments and their names in a very fast way + +Version 3.2.0 (14 Oct 2007) + + * packaging changes: + - added Mac OSX XCode project files (patch by Toshi Nagata) + - Dev-C++ (win32) project file is automatically updated with + the version info from configure.in + - the configure script can now be used in Windows with MSYS + - added a mainpage for the Doxygen API documentation + + * src/DLS.cpp, src/DLS.h: + - added Sampler::AddSampleLoop() and Sampler::DeleteSampleLoop() methods + - fixed write support for big-endian systems + - improved handling of fixed length info strings - separate default + lengths can be specified for each INFO chunk + - added Resource::GenerateDLSID function + - write support fix: allow regions without mapped samples + - added method SetKeyRange() to the Region class which should be used + instead of setting the KeyRange member variable directly + - MoveRegion() method of Region class is now private + - added SetGain() method to Sampler class + - fixed crash when saving a file after a sample loop was added + + * src/gig.cpp, src/gig.h: + - fixed segmentation fault in the gig::File destructor sequence which + happened when gig::Group informations were accessed before + - fixed write support for big-endian systems + - defined lengths of a fixed set of info strings. These strings + are saved when the file is written, even if they are empty. + - added missing parameter initalizations in sample, region and + instrument constructors + - clear unused fields when saving samples and regions + - fixed write support bugs: v3 dimension limits and chunksize + weren't saved, leverage controller of type controlchange + couldn't be saved, group name list chunk was placed wrong, + dimension region chunks also placed wrong + - added initialization of some fixed info strings in file and + instrument + - write support: files created by libgig will now have the RIFF + chunks in correct order + - write support: two previously unknown fields in dimension + definition are now saved + - added constants for gig file versions + - write support: the 3crc and einf chunks are now created or + updated when a file is saved (3crc contains sample checksums, + einf contains file statistics) + - write support: DLSID is now generated on the file and the + instruments + - write support: improved the default values for dimension region + parameters + - more write support fixes: crossfade parameters were not saved, + v3 dimension limits were not correctly initialized and saved + when dimensions were added or deleted, v3 wave pool offsets were + not saved correctly + - write support: 24 bit samples can now be written + - write support: version 3 is now the default for new files + - more write support fixes: the 3ewg chunk is now bigger for v3, + dimension regions without mapped samples are now allowed, 3gnl + list in v3 files now always has 128 entries, several parameters + where incorrectly saved due to an operator precedence mistake + - DeleteSample now removes all references to the deleted sample + - AddDimension now copies all parameters from existing dimension + regions and also makes sure that the samplechannel dimension is + placed first in the list of dimensions. + - added method GetParent() to class 'DimensionRegion', which returns its + parent Region + - fixed Instrument::UpdateRegionKeyTable() method which did not reset + unused areas + - added various setter methods to DimensionRegion class which take care + of updating lookup tables / caches. + + * src/RIFF.cpp, src/RIFF.h: + - added File::SetByteOrder method + - Windows fix: saving a new file didn't work + + * src/gigdump.cpp: + - added some missing dimension strings + +Version 3.1.1 (24 Mar 2007) + + * packaging changes: + - ported to Windows using native Windows functions for file IO + (provided Dev-C++ + mingw project file) + - only export relevant files to Doxygen API documentation + + * src/gig.cpp, src/gig.h: + - custom velocity splits now works for gig v3 files too + - added support for custom splits points for other dimensions than + velocity (gig v3 feature) + - added "smart midi" and "round robin keyboard" dimensions + - added new method File::DeleteGroupOnly() which only deletes the given + group but moves all its members to another group, the other method, + that is File::DeleteGroup() now removes not just the group, but also + all the samples that belong to that group + - fixed crash which occured on interfering File::DeleteSample() and + File::GetNextSample() calls (due to iterator invalidation) + - fixed group names which were not saved + - fixed group destructor which did not remove the RIFF chunk associated + with the group + - added Instrument::MoveRegion method + - fixed constructor for Region, which did not initialize correctly + when used from Instrument::AddRegion + - when saving, override the gig::Regions sample reference simply by + the region's first dimension region's sample (avoids an exception + when trying to save a new instrument) + - fixed AddDimension() method which did not fill out all mandatory + dimension definition fields + + * src/DLS.cpp, src/DLS.h: + - added Instrument::MoveRegion method + - fixed software info field which was wrongly stored on instruments, + causing an exception when trying to save a new instrument + + * src/RIFF.cpp, src/RIFF.h: + - fixed RIFF::Chunk destructor which did not unregister previously + resized chunks, leading to a "zero size chunk" exception when + File::Save() was called + - added List::MoveSubChunk method + +Version 3.1.0 (24 Nov 2006) + + * packaging changes: + - changed deprecated copyright attribute to license; + added ldconfig to post-(un)install steps on libgig.spec (RPM) + + * src/gig.cpp, src/gig.h: + - added support for more than one set of custom velocity splits + inside a region (for example different velocity split levels for + pedal up and pedal down) + - sample loop parameters are now taken from the DimensionRegion + instead of the wave chunk + - keyswitching dimension is changed from split type "normal" to + "bit" + - real support for 24 bit samples - samples are not truncated to + 16 bits anymore + - support for reading of ".art" files. (Merging of .art and .gig + files are not implemented yet.) + - several fixes for the write support + - support for sample groups added + + * src/DLS.cpp, src/DLS.h: + - support for reading of ".art" files + - removed incorrect use of memccpy in the write support (patch by + Jeremy Kerr) + - several fixes for the write support + + * src/gigextract.cpp: + - real support for 24 bit samples + + * src/gigdump.cpp: + - print global file informations + - print sample groups + + * general changes: + - added CPPUnit test cases (at the moment primarily for automatic check + of Gigasampler write support) + +Version 3.0.0 (28 Apr 2006) + + * general changes: + - added write support (that is for creating and modifying RIFF, DLS and + gig files) + - loading DLS and gig files is now much more permissive, DLS and gig + files are now loaded even if mandatory RIFF chunks are missing + - fixed some memory management errors, one of them was causing a + crash when a multi-file gig was deallocated + + * src/gig.cpp, src/gig.h: + - fixed the GetVelocityCutoff function, it wasn't always using the + VCFVelocityScale parameter when no cutoff controller was defined + - support for the gig v3 feature to have a number of dimension + splits not equal to a power of two + - added write support (highly experimental) + + * src/DLS.cpp, src/DLS.h: + - fixed loading of Articulation Connections ( list chunks were + seeked instead of ordinary data chunks) + - added write support (highly experimental) + + * src/RIFF.cpp, src/RIFF.h: + - added write support + - Chunk::LoadChunkData() can now be called again to resize the buffer + after a Chunk::Resize() and before the File::Save() call to allow + placing the new data in the chunk's write buffer and perform the + resize and write operations in one rush + + * src/gigdump.cpp: + - fixed to show the correct amount of dimension regions instead of 32 + (patch by James Wylder) + + * src/dlsdump.cpp: + - show for every region the name of the referenced sample + - show file name in quotation marks + +Version 2.0.2 (15 Aug 2005) + + * packaging changes: + - require automake (>= 1.5) for 'make -f Makefile.cvs' + (mandatory for 'dist-bzip2' automake option) + + * src/gig.cpp, src/gig.h: + - support for gig v3 multi-file format (.gig, .gx01, .gx02, ...), + the extension files are read automatically when the samples are + loaded + - fixed the 24 bit decompression, the result should now be exact + instead of an approximation + - added VCFCutoffControllerInvert parameter and GetVelocityCutoff + function to DimensionRegion + + * src/DLS.cpp, src/DLS.h: + - the upper bits of the pool table indices are read (used as + extension file numbers for gig v3) + + * src/RIFF.cpp, src/RIFF.h: + - the file name is remembered in the RIFF::File object + Version 2.0.1 (12 Jun 2005) + * packaging changes: + - include debian/ directory on 'make dist' + - create a bzip2 tarball on 'make dist' + * src/gigextract.cpp: - show also version of libsndfile or build version of libaudiofile when using the -v switch