--- libgig/trunk/ChangeLog 2017/10/07 16:30:43 3351 +++ libgig/trunk/ChangeLog 2021/05/12 18:55:31 3904 @@ -1,4 +1,164 @@ -Version SVN trunk +Version SVN trunk (?) + + * src/gig.cpp, src/gig.h: + - Region::DeleteDimensionZone(): Fix clang sanatizer warning. + - Region::SplitDimensionZone(): Fix clang sanatizer warning. + + * src/SF.cpp, src/SF.h: + - File::DeleteInstrument(): Fix clang sanatizer warning. + + * src/RIFF.cpp, src/RIFF.h: + - Chunk::LoadChunkData(): Fix clang sanatizer warning. + - List::LoadSubChunks(): Fix potential garbage data access if reading a + RIFF chunk ID failed. + +Version 4.3.0 (9 May 2021) + + * general changes: + - Require at least a C++11 compliant compiler. + - Require some UUID generating function by underlying system. + + * src/gig.cpp, src/gig.h: + - GIG FORMAT EXTENSION: Added attributes DimensionRegion::LFO1WaveForm, + DimensionRegion::LFO2WaveForm and DimensionRegion::LFO3WaveForm, which + allow to define override LFOs' wave form (e.g. saw or square instead of + the default wave form which was always sine in the original + Gigasampler/GigaStudio software). + - GIG FORMAT EXTENSION: Added attributes DimensionRegion::LFO1Phase, + DimensionRegion::LFO2Phase and DimensionRegion::LFO3Phase, which allow to + move the start point horizontally of the LFOs' waves (0° ... 360°). + - GIG FORMAT EXTENSION: Added attribute DimensionRegion::LFO3FlipPhase + (the original Gigasampler/GigaStudio software only had that flip phase + option for LFO1 and LFO2). + - Added methods DimensionRegion::UsesAnyGigFormatExtension(), + Region::UsesAnyGigFormatExtension(), + Instrument::UsesAnyGigFormatExtension() and + File::UsesAnyGigFormatExtension() (however only as private methods yet, + see comments on methods why). + - GIG FORMAT EXTENSION: added LinuxSampler specific filter type + implementations to enum vcf_type_t: vcf_type_lowpass_1p, + vcf_type_lowpass_2p, vcf_type_lowpass_4p, vcf_type_lowpass_6p, + vcf_type_highpass_1p, vcf_type_highpass_2p, vcf_type_highpass_4p, + vcf_type_highpass_6p, vcf_type_bandpass_2p, vcf_type_bandreject_2p. + - Compatibility fix: GigaStudio always expects 128 '3gnm' RIFF chunks + (patch by Ivan Maguidhir). + - Compatibility fix: GigaStudio 3 expects '3dnm' and '3ddp' RIFF chunks + (original patch by Ivan Maguidhir). + - Region::DeleteDimensionZone() and Region::SplitDimensionZone(): Fixed + dimensions being in different order after deleting a dimension zone. + - Script: Generate a persistent UUID for each script. + - GIG FORMAT EXTENSION: Added support for script 'patch' variables and + accordingly added new methods to Instrument class: + IsScriptPatchVariableSet(), GetScriptPatchVariables(), + GetScriptPatchVariable(), SetScriptPatchVariable(), + UnsetScriptPatchVariable(); stored persistently as new 'SCPV' RIFF chunk + as child of our '3LS ' list chunk on Instrument level. + - Fixed undefined behaviour when modifying script slots on an instrument + that had been cloned and not been saved yet (e.g. unintended modification + of original instrument's script slots, and crash on Instrument destruction + due to double free of pScriptRefs). + + * src/Serialization.cpp, src/Serialization.h: + - Fixed broken Archive(RawData) constructor which always threw an + Exception. + - Added built-in support for C++ String objects (a.k.a. std::string + from the STL) and bumped Srx format version to 1.1 for that reason. + - Fixed assertion fault on some systems if a member variable defined was + serialized which was declared as size_t or ssize_t data type. + - Added new method Archive::operation() which allows applications to + distinguish between serialization vs. deserialization in their + serialize() method implementations. + - Added built-in support for C++ Array<> objects (a.k.a. std::vector from + the STL). + - Member offsets are now signed and for (newly added support of) member + variables on the heap -1 is always used as offset instead. + - Added built-in support for C++ Set<> objects (a.k.a. std::set from the + STL). + - DataType: Added optional 2nd custom type name. + - Added built-in support for C++ Map<> objects (a.k.a. std::map from the + STL). + + * src/helper.h: + - Fix compile error with GCC 9 due to ignored result value of vasprintf() + function call. + + * src/tools/gigdump.cpp: + - Print dimension region properties LFO1WaveForm, LFO2WaveForm, + LFO3WaveForm, LFO1Phase, LFO2Phase, LFO3Phase, LFO1FlipPhase, + LFO2FlipPhase and LFO3FlipPhase. + +Version 4.2.0 (25 Jul 2019) + + * general changes: + - Added MSVC build support (anonymous patch from mailing list). + - Introduced CMake build support (yet constrained for building with MSVC) + (anonymous patch from mailing list). + - Fix: Don't automatically delete RIFF chunks from DLS/gig classes' + destructors. Added new virtual method DeleteChunks() to those classes + for this which must be explicitly called instead to remove their RIFF + chunks. + - Fix: Many methods of DLS/gig classes assumed a RIFF chunk read position + of zero; which is unsafe per se. + - Added C++11 "override" keyword where appropriate. + - Fixed crash in RIFF, DLS and gig classes which occurred on certain + of their actions when not passing a progress_t callback structure. + + * src/gig.cpp, src/gig.h: + - Fixed Doxygen API comments for enum types (currently latest Doxygen + [v1.8.13] only supports C comments in macro arguments expansion, but + not C++ comments; see lexer rules in src/pre.l of + the Doxygen source code, which currently also filter out new line + \n chars). + - Added new method File::CountSamples(). + - Added new method File::CountInstruments(). + - Fixed gig v4 files falsely being handled as v2 format + (patch by Ivan Maguidhir). + - Added gig v4 version identifier (File::VERSION_4). + - GIG FORMAT EXTENSION: Added attribute + DimensionRegion::SustainReleaseTrigger which allows to define whether + a sustain pedal up event shall cause a release trigger sample to be + played (default: don't play release trigger sample by sustain pedal). + - GIG FORMAT EXTENSION: Added attribute + DimensionRegion::NoNoteOffReleaseTrigger which allows to disable the + regular behaviour of playing release trigger sample on MIDI note-off + events. + - Introduced support for writing extension files (.gx01, .gx02, ...) + (original patch by Ivan Maguidhir). + - Many gig classes derive now from DLS::Storage (see DLS changes below). + - Added File::GetRiffFile() method. + + * src/DLS.cpp, src/DLS.h: + - File: Fixed implicitly allocated RIFF::File object never been freed. + - Added new abstract interface base class DLS::Storage which is derived by + the respective classes for implementing (the old) UpdateChunks() and the + new DeleteChunks() method. + - Added File::GetRiffFile() method. + + * src/sf2.cpp, src/sf2.h: + - Added Sample::GetFile() method. + - Added File::GetRiffFile() method. + + * src/Serialization.cpp, src/Serialization.h: + - Hide pure internal declarations from header file to avoid numerous + compiler warnings when building and linking against the public API. + - Fixed comparision logic bug + - Fixed memory leak in DataType::customTypeName(). + + * src/RIFF.cpp, src/RIFF.h: + - Fix: Calling File::SetMode() left an undefined file handle on Windows and + caused a resource leak + - Avoid compiler warning when building for 32 bit windows. + - Added new method progress_t::subdivide(). + - Fix: API doc comment for Chunk::GetFilePos() was completely wrong. + - progress_t: Added a 2nd (overridden) progress_t::subdivide() method which + allows a more fine graded control into which portions the subtasks are + divided to. + + * src/tools/gigdump.cpp: + - Added command line option --instrument-names which causes only + instrument names and their index numbers to be printed. + +Version 4.1.0 (25 Nov 2017) * general changes: - removed 2 GB limitation when loading a gig or DLS file - using now native integer size where appropriate @@ -61,7 +221,7 @@ larger than 4 GB). - Exception class now has a variadic constructor which allows to add textual format specifiers like with printf(). - + * src/RIFF.cpp, src/RIFF.h: - added support for RIFF files larger than 4 GB, by default the required internal RIFF file offset size is automatically detected (that is RIFF @@ -100,6 +260,9 @@ - DataType fix: Retain backward compatibility to older versions of native C++ classes/structs. + * src/Akai.cpp: + - Fixed compilation error with recent, more strict compilers. + * src/tools/akaidump.cpp, src/tools/akaiextract.cpp: - improved output of non-ascii characters in usage messages - fixed printf format strings