--- libgig/trunk/ChangeLog 2019/07/25 10:52:10 3524 +++ libgig/trunk/ChangeLog 2021/06/19 12:02:19 3963 @@ -1,3 +1,195 @@ +Version SVN trunk (?) + + * src/gig.cpp, src/gig.h: + - Region::DeleteDimensionZone(): Fix clang sanatizer warning. + - Region::SplitDimensionZone(): Fix clang sanatizer warning. + - Sample: Fix unnecessary RAM consumption in case of 24 bit samples + (InternalDecompressionBuffer is no longer needed for 24 bit samples since + SVN r902 / libgig release 3.1.0). + - Use GetSubChunkAt() instead of GetFirstSubChunk() / GetNextSubChunk() in + entire gig.cpp file. + - Use GetSubListAt() instead of GetFirstSubList() / GetNextSubList() in + entire gig.cpp file. + - Added method Instrument::GetRegionAt(). + - Marked methods Instrument::GetFirstRegion() and + Instrument::GetNextRegion() as deprecated. + - Use GetRegionAt() instead of GetFirstRegion() / GetNextRegion() in entire + gig.cpp file. + - Changed signature of method File::GetSample(uint) to + File::GetSample(size_t,progress_t*). + - Marked methods File::GetFirstSample() and File::GetNextSample() as + deprecated. + - Use File::GetSample() instead of File::GetFirstSample() / + File::GetNextSample() in entire gig.cpp file. + - Added method Group::GetSample(). + - Marked methods Group::GetFirstSample() and Group::GetNextSample() as + deprecated. + - Use Group::GetSample() instead of Group::GetFirstSample() / + Group::GetNextSample() in entire gig.cpp file. + - Changed signature of method File::GetGroup(uint) to + File::GetGroup(size_t). + - Fixed File::GetGroup(size_t) to be reentrant-safe. + - Marked methods GetFirstGroup() and GetNextGroup() as deprecated. + - Fixed GetGroup(String) to be reentrant-safe. + - Use GetGroup() instead of GetFirstGroup() / GetNextGroup() in entire + gig.cpp file. + - Changed signature of method File::GetInstrument(uint,progress_t*) to + File::GetInstrument(size_t,progress_t*). + - Fixed File::GetInstrument(size_t,progress_t*) to be reentrant-safe. + - Marked methods File::GetFirstInstrument() and File::GetNextInstrument() + as deprecated. + - Use File::GetInstrument() instead of File::GetFirstInstrument() / + File::GetNextInstrument() in entire gig.cpp file. + - Optimized method ScriptGroup::GetScript() to have constant time + efficiency. + - Changed signature of method File::GetScriptGroup(uint) to + File::GetScriptGroup(size_t). + - Optimized method File::GetScriptGroup(size_t) to have constant time + efficiency. + - Changed signature of method ScriptGroup::GetScript(uint) to + ScriptGroup::GetScript(size_t). + - Changed signature of method Instrument::GetScriptOfSlot(uint) to + Instrument::GetScriptOfSlot(size_t). + - Changed signature of method Instrument::SwapScriptSlots(uint,uint) to + Instrument::SwapScriptSlots(size_t,size_t). + - Changed signature of method Instrument::RemoveScriptSlot(uint) to + Instrument::RemoveScriptSlot(size_t). + - Changed signature of method Instrument::ScriptSlotCount() to return + size_t instead of uint. + - Changed signature of method Instrument::IsScriptSlotBypassed(uint) to + Instrument::IsScriptSlotBypassed(size_t). + - Changed signature of method Instrument::SetScriptSlotBypassed(uint,bool) + to Instrument::SetScriptSlotBypassed(size_t,bool). + - Changed signature of method + Instrument::IsScriptPatchVariableSet(int,String) to + Instrument::IsScriptPatchVariableSet(size_t,String). + - Changed signature of method Instrument::GetScriptPatchVariables(int) to + Instrument::GetScriptPatchVariables(size_t). + - Changed signature of method + Instrument::GetScriptPatchVariable(int,String) to + Instrument::GetScriptPatchVariable(size_t,String). + - Changed signature of method + Instrument::SetScriptPatchVariable(int,String,String) to + Instrument::SetScriptPatchVariable(size_t,String,String). + - Changed signature of method + Instrument::UnsetScriptPatchVariable(int,String) to + Instrument::UnsetScriptPatchVariable(ssize_t,String). + + * src/SF.cpp, src/SF.h: + - File::DeleteInstrument(): Fix clang sanatizer warning. + + * src/DLS.cpp, src/DLS.h: + - Use GetSubChunkAt() instead of GetFirstSubChunk() / GetNextSubChunk() in + entire DLS.cpp file. + - Use GetSubListAt() instead of GetFirstSubList() / GetNextSubList() in + entire DLS.cpp file. + - Added method Instrument::GetRegionAt(). + - Marked methods Instrument::GetFirstRegion() and + Instrument::GetNextRegion() as deprecated. + - Use GetRegionAt() instead of GetFirstRegion() / GetNextRegion() in entire + DLS.cpp file. + - Added method File::GetSample(). + - Marked methods File::GetFirstSample() and File::GetNextSample() as + deprecated. + - Use File::GetSample() instead of File::GetFirstSample() / + File::GetNextSample() in entire DLS.cpp file. + - Added method Articulator::GetArticulation(). + - Marked methods Articulator::GetFirstArticulation() and + Articulator::GetNextArticulation() as deprecated. + - Added method File::GetInstrument(). + - Marked methods File::GetFirstInstrument() and File::GetNextInstrument() + as deprecated. + - Added method Instrument::CountRegions(). + + * 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. + - Added methods File::IsIOPerThread() and File::SetIOPerThread(bool); the + latter allows to automatically use a separate file I/O stream state for + each thread. + - Added method List::GetSubChunkAt(). + - Added method List::GetSubListAt(). + - Marked methods List::GetFirstSubChunk(), List::GetNextSubChunk(), + List::GetFirstSubList() and List::GetNextSubList() as deprecated. + - Use GetSubListAt() instead of GetFirstSubList() / GetNextSubList() in + entire RIFF.cpp file. + +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: