/[svn]/libgig/trunk/ChangeLog
ViewVC logotype

Contents of /libgig/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3978 - (show annotations) (download)
Mon Jul 19 14:35:37 2021 UTC (2 years, 8 months ago) by schoenebeck
File size: 47158 byte(s)
* DLS: Fixed iterator invalidation (i.e. crash) caused by adding /
  removing instruments (only triggered if now deprecated
  File::GetFirstInstrument() / File::GetNextInstrument() methods were still
  used).

1 Version SVN trunk (?)
2
3 * src/gig.cpp, src/gig.h:
4 - Region::DeleteDimensionZone(): Fix clang sanatizer warning.
5 - Region::SplitDimensionZone(): Fix clang sanatizer warning.
6 - Sample: Fix unnecessary RAM consumption in case of 24 bit samples
7 (InternalDecompressionBuffer is no longer needed for 24 bit samples since
8 SVN r902 / libgig release 3.1.0).
9 - Use GetSubChunkAt() instead of GetFirstSubChunk() / GetNextSubChunk() in
10 entire gig.cpp file.
11 - Use GetSubListAt() instead of GetFirstSubList() / GetNextSubList() in
12 entire gig.cpp file.
13 - Added method Instrument::GetRegionAt().
14 - Marked methods Instrument::GetFirstRegion() and
15 Instrument::GetNextRegion() as deprecated.
16 - Use GetRegionAt() instead of GetFirstRegion() / GetNextRegion() in entire
17 gig.cpp file.
18 - Changed signature of method File::GetSample(uint) to
19 File::GetSample(size_t,progress_t*).
20 - Marked methods File::GetFirstSample() and File::GetNextSample() as
21 deprecated.
22 - Use File::GetSample() instead of File::GetFirstSample() /
23 File::GetNextSample() in entire gig.cpp file.
24 - Added method Group::GetSample().
25 - Marked methods Group::GetFirstSample() and Group::GetNextSample() as
26 deprecated.
27 - Use Group::GetSample() instead of Group::GetFirstSample() /
28 Group::GetNextSample() in entire gig.cpp file.
29 - Changed signature of method File::GetGroup(uint) to
30 File::GetGroup(size_t).
31 - Fixed File::GetGroup(size_t) to be reentrant-safe.
32 - Marked methods GetFirstGroup() and GetNextGroup() as deprecated.
33 - Fixed GetGroup(String) to be reentrant-safe.
34 - Use GetGroup() instead of GetFirstGroup() / GetNextGroup() in entire
35 gig.cpp file.
36 - Changed signature of method File::GetInstrument(uint,progress_t*) to
37 File::GetInstrument(size_t,progress_t*).
38 - Fixed File::GetInstrument(size_t,progress_t*) to be reentrant-safe.
39 - Marked methods File::GetFirstInstrument() and File::GetNextInstrument()
40 as deprecated.
41 - Use File::GetInstrument() instead of File::GetFirstInstrument() /
42 File::GetNextInstrument() in entire gig.cpp file.
43 - Optimized method ScriptGroup::GetScript() to have constant time
44 efficiency.
45 - Changed signature of method File::GetScriptGroup(uint) to
46 File::GetScriptGroup(size_t).
47 - Optimized method File::GetScriptGroup(size_t) to have constant time
48 efficiency.
49 - Changed signature of method ScriptGroup::GetScript(uint) to
50 ScriptGroup::GetScript(size_t).
51 - Changed signature of method Instrument::GetScriptOfSlot(uint) to
52 Instrument::GetScriptOfSlot(size_t).
53 - Changed signature of method Instrument::SwapScriptSlots(uint,uint) to
54 Instrument::SwapScriptSlots(size_t,size_t).
55 - Changed signature of method Instrument::RemoveScriptSlot(uint) to
56 Instrument::RemoveScriptSlot(size_t).
57 - Changed signature of method Instrument::ScriptSlotCount() to return
58 size_t instead of uint.
59 - Changed signature of method Instrument::IsScriptSlotBypassed(uint) to
60 Instrument::IsScriptSlotBypassed(size_t).
61 - Changed signature of method Instrument::SetScriptSlotBypassed(uint,bool)
62 to Instrument::SetScriptSlotBypassed(size_t,bool).
63 - Changed signature of method
64 Instrument::IsScriptPatchVariableSet(int,String) to
65 Instrument::IsScriptPatchVariableSet(size_t,String).
66 - Changed signature of method Instrument::GetScriptPatchVariables(int) to
67 Instrument::GetScriptPatchVariables(size_t).
68 - Changed signature of method
69 Instrument::GetScriptPatchVariable(int,String) to
70 Instrument::GetScriptPatchVariable(size_t,String).
71 - Changed signature of method
72 Instrument::SetScriptPatchVariable(int,String,String) to
73 Instrument::SetScriptPatchVariable(size_t,String,String).
74 - Changed signature of method
75 Instrument::UnsetScriptPatchVariable(int,String) to
76 Instrument::UnsetScriptPatchVariable(ssize_t,String).
77 - Fixed iterator invalidation (i.e. crash) caused by adding / removing
78 samples (only triggered if now deprecated File::GetFirstSample() /
79 File::GetNextSample() methods were still used).
80 - Fixed Sample::Write() method not having updated sample's CRC (correctly)
81 if sample was previously resized.
82 - Fixed iterator invalidation (i.e. crash) caused by adding / removing /
83 moving regions (only triggered if now deprecated File::GetFirstRegion() /
84 File::GetNextRegion() methods were still used).
85
86 * src/SF.cpp, src/SF.h:
87 - File::DeleteInstrument(): Fix clang sanatizer warning.
88
89 * src/DLS.cpp, src/DLS.h:
90 - Use GetSubChunkAt() instead of GetFirstSubChunk() / GetNextSubChunk() in
91 entire DLS.cpp file.
92 - Use GetSubListAt() instead of GetFirstSubList() / GetNextSubList() in
93 entire DLS.cpp file.
94 - Added method Instrument::GetRegionAt().
95 - Marked methods Instrument::GetFirstRegion() and
96 Instrument::GetNextRegion() as deprecated.
97 - Use GetRegionAt() instead of GetFirstRegion() / GetNextRegion() in entire
98 DLS.cpp file.
99 - Added method File::GetSample().
100 - Marked methods File::GetFirstSample() and File::GetNextSample() as
101 deprecated.
102 - Use File::GetSample() instead of File::GetFirstSample() /
103 File::GetNextSample() in entire DLS.cpp file.
104 - Added method Articulator::GetArticulation().
105 - Marked methods Articulator::GetFirstArticulation() and
106 Articulator::GetNextArticulation() as deprecated.
107 - Added method File::GetInstrument().
108 - Marked methods File::GetFirstInstrument() and File::GetNextInstrument()
109 as deprecated.
110 - Added method Instrument::CountRegions().
111 - Fixed iterator invalidation (i.e. crash) caused by adding / removing
112 samples (only triggered if now deprecated File::GetFirstSample() /
113 File::GetNextSample() methods were still used).
114 - Fixed iterator invalidation (i.e. crash) caused by adding / removing /
115 moving regions (only triggered if now deprecated File::GetFirstRegion() /
116 File::GetNextRegion() methods were still used).
117 - Fixed iterator invalidation (i.e. crash) caused by adding / removing
118 instruments (only triggered if now deprecated File::GetFirstInstrument() /
119 File::GetNextInstrument() methods were still used).
120
121 * src/RIFF.cpp, src/RIFF.h:
122 - Chunk::LoadChunkData(): Fix clang sanatizer warning.
123 - List::LoadSubChunks(): Fix potential garbage data access if reading a
124 RIFF chunk ID failed.
125 - Added methods File::IsIOPerThread() and File::SetIOPerThread(bool); the
126 latter allows to automatically use a separate file I/O stream state for
127 each thread.
128 - Added method List::GetSubChunkAt().
129 - Added method List::GetSubListAt().
130 - Marked methods List::GetFirstSubChunk(), List::GetNextSubChunk(),
131 List::GetFirstSubList() and List::GetNextSubList() as deprecated.
132 - Use GetSubListAt() instead of GetFirstSubList() / GetNextSubList() in
133 entire RIFF.cpp file.
134
135 Version 4.3.0 (9 May 2021)
136
137 * general changes:
138 - Require at least a C++11 compliant compiler.
139 - Require some UUID generating function by underlying system.
140
141 * src/gig.cpp, src/gig.h:
142 - GIG FORMAT EXTENSION: Added attributes DimensionRegion::LFO1WaveForm,
143 DimensionRegion::LFO2WaveForm and DimensionRegion::LFO3WaveForm, which
144 allow to define override LFOs' wave form (e.g. saw or square instead of
145 the default wave form which was always sine in the original
146 Gigasampler/GigaStudio software).
147 - GIG FORMAT EXTENSION: Added attributes DimensionRegion::LFO1Phase,
148 DimensionRegion::LFO2Phase and DimensionRegion::LFO3Phase, which allow to
149 move the start point horizontally of the LFOs' waves (0�� ... 360��).
150 - GIG FORMAT EXTENSION: Added attribute DimensionRegion::LFO3FlipPhase
151 (the original Gigasampler/GigaStudio software only had that flip phase
152 option for LFO1 and LFO2).
153 - Added methods DimensionRegion::UsesAnyGigFormatExtension(),
154 Region::UsesAnyGigFormatExtension(),
155 Instrument::UsesAnyGigFormatExtension() and
156 File::UsesAnyGigFormatExtension() (however only as private methods yet,
157 see comments on methods why).
158 - GIG FORMAT EXTENSION: added LinuxSampler specific filter type
159 implementations to enum vcf_type_t: vcf_type_lowpass_1p,
160 vcf_type_lowpass_2p, vcf_type_lowpass_4p, vcf_type_lowpass_6p,
161 vcf_type_highpass_1p, vcf_type_highpass_2p, vcf_type_highpass_4p,
162 vcf_type_highpass_6p, vcf_type_bandpass_2p, vcf_type_bandreject_2p.
163 - Compatibility fix: GigaStudio always expects 128 '3gnm' RIFF chunks
164 (patch by Ivan Maguidhir).
165 - Compatibility fix: GigaStudio 3 expects '3dnm' and '3ddp' RIFF chunks
166 (original patch by Ivan Maguidhir).
167 - Region::DeleteDimensionZone() and Region::SplitDimensionZone(): Fixed
168 dimensions being in different order after deleting a dimension zone.
169 - Script: Generate a persistent UUID for each script.
170 - GIG FORMAT EXTENSION: Added support for script 'patch' variables and
171 accordingly added new methods to Instrument class:
172 IsScriptPatchVariableSet(), GetScriptPatchVariables(),
173 GetScriptPatchVariable(), SetScriptPatchVariable(),
174 UnsetScriptPatchVariable(); stored persistently as new 'SCPV' RIFF chunk
175 as child of our '3LS ' list chunk on Instrument level.
176 - Fixed undefined behaviour when modifying script slots on an instrument
177 that had been cloned and not been saved yet (e.g. unintended modification
178 of original instrument's script slots, and crash on Instrument destruction
179 due to double free of pScriptRefs).
180
181 * src/Serialization.cpp, src/Serialization.h:
182 - Fixed broken Archive(RawData) constructor which always threw an
183 Exception.
184 - Added built-in support for C++ String objects (a.k.a. std::string
185 from the STL) and bumped Srx format version to 1.1 for that reason.
186 - Fixed assertion fault on some systems if a member variable defined was
187 serialized which was declared as size_t or ssize_t data type.
188 - Added new method Archive::operation() which allows applications to
189 distinguish between serialization vs. deserialization in their
190 serialize() method implementations.
191 - Added built-in support for C++ Array<> objects (a.k.a. std::vector from
192 the STL).
193 - Member offsets are now signed and for (newly added support of) member
194 variables on the heap -1 is always used as offset instead.
195 - Added built-in support for C++ Set<> objects (a.k.a. std::set from the
196 STL).
197 - DataType: Added optional 2nd custom type name.
198 - Added built-in support for C++ Map<> objects (a.k.a. std::map from the
199 STL).
200
201 * src/helper.h:
202 - Fix compile error with GCC 9 due to ignored result value of vasprintf()
203 function call.
204
205 * src/tools/gigdump.cpp:
206 - Print dimension region properties LFO1WaveForm, LFO2WaveForm,
207 LFO3WaveForm, LFO1Phase, LFO2Phase, LFO3Phase, LFO1FlipPhase,
208 LFO2FlipPhase and LFO3FlipPhase.
209
210 Version 4.2.0 (25 Jul 2019)
211
212 * general changes:
213 - Added MSVC build support (anonymous patch from mailing list).
214 - Introduced CMake build support (yet constrained for building with MSVC)
215 (anonymous patch from mailing list).
216 - Fix: Don't automatically delete RIFF chunks from DLS/gig classes'
217 destructors. Added new virtual method DeleteChunks() to those classes
218 for this which must be explicitly called instead to remove their RIFF
219 chunks.
220 - Fix: Many methods of DLS/gig classes assumed a RIFF chunk read position
221 of zero; which is unsafe per se.
222 - Added C++11 "override" keyword where appropriate.
223 - Fixed crash in RIFF, DLS and gig classes which occurred on certain
224 of their actions when not passing a progress_t callback structure.
225
226 * src/gig.cpp, src/gig.h:
227 - Fixed Doxygen API comments for enum types (currently latest Doxygen
228 [v1.8.13] only supports C comments in macro arguments expansion, but
229 not C++ comments; see <FindDefineArgs> lexer rules in src/pre.l of
230 the Doxygen source code, which currently also filter out new line
231 \n chars).
232 - Added new method File::CountSamples().
233 - Added new method File::CountInstruments().
234 - Fixed gig v4 files falsely being handled as v2 format
235 (patch by Ivan Maguidhir).
236 - Added gig v4 version identifier (File::VERSION_4).
237 - GIG FORMAT EXTENSION: Added attribute
238 DimensionRegion::SustainReleaseTrigger which allows to define whether
239 a sustain pedal up event shall cause a release trigger sample to be
240 played (default: don't play release trigger sample by sustain pedal).
241 - GIG FORMAT EXTENSION: Added attribute
242 DimensionRegion::NoNoteOffReleaseTrigger which allows to disable the
243 regular behaviour of playing release trigger sample on MIDI note-off
244 events.
245 - Introduced support for writing extension files (.gx01, .gx02, ...)
246 (original patch by Ivan Maguidhir).
247 - Many gig classes derive now from DLS::Storage (see DLS changes below).
248 - Added File::GetRiffFile() method.
249
250 * src/DLS.cpp, src/DLS.h:
251 - File: Fixed implicitly allocated RIFF::File object never been freed.
252 - Added new abstract interface base class DLS::Storage which is derived by
253 the respective classes for implementing (the old) UpdateChunks() and the
254 new DeleteChunks() method.
255 - Added File::GetRiffFile() method.
256
257 * src/sf2.cpp, src/sf2.h:
258 - Added Sample::GetFile() method.
259 - Added File::GetRiffFile() method.
260
261 * src/Serialization.cpp, src/Serialization.h:
262 - Hide pure internal declarations from header file to avoid numerous
263 compiler warnings when building and linking against the public API.
264 - Fixed comparision logic bug
265 - Fixed memory leak in DataType::customTypeName().
266
267 * src/RIFF.cpp, src/RIFF.h:
268 - Fix: Calling File::SetMode() left an undefined file handle on Windows and
269 caused a resource leak
270 - Avoid compiler warning when building for 32 bit windows.
271 - Added new method progress_t::subdivide().
272 - Fix: API doc comment for Chunk::GetFilePos() was completely wrong.
273 - progress_t: Added a 2nd (overridden) progress_t::subdivide() method which
274 allows a more fine graded control into which portions the subtasks are
275 divided to.
276
277 * src/tools/gigdump.cpp:
278 - Added command line option --instrument-names which causes only
279 instrument names and their index numbers to be printed.
280
281 Version 4.1.0 (25 Nov 2017)
282 * general changes:
283 - removed 2 GB limitation when loading a gig or DLS file
284 - using now native integer size where appropriate
285 - fixed minor issues with man pages (patch by Debian maintainer)
286 - fixed various spelling mistakes (patch by Debian maintainer)
287 - Added new "Serialization" framework (and equally named namespace)
288 which allows to serialize and deserialize native C++ objects
289 in a portable, easy and flexible way.
290 - print compiler warning if no RTTI available
291 - Fixed potential crash in command line tools gig2stereo, korg2gig,
292 korgdump and sf2extract.
293 - Fixed CVE-2017-12950, CVE-2017-12952, CVE-2017-12953
294 (original patch by Paul Brossier, slightly modified).
295 - Debian: Fixed packaging error about invalid substitution variable
296 "Source-Version".
297 - Raised Debian compatibility level to Debian 9 "Stretch".
298
299 * src/gig.cpp, src/gig.h:
300 - fixed bug in Script::SetGroup: the script chunk wasn't moved
301 - fixed compilation error with clang 3.4
302 - GIG FORMAT EXTENSION: added support for saving gig file larger than 4 GB
303 as one single monolithic gig file. In case .gig file is >= 2GB expect a
304 large monolithic file, otherwise if .gig file is < 2 GB check for
305 "extension" files (.gx01, .gx02, ...) instead.
306 - fixed Region::UpdateUpdateVelocityTable() which did not work correctly
307 if there were dimensions after the velocity dimension: it only created
308 valid velocity tables for cases of dimensions lower than the velocity
309 dimension.
310 - added new method Sample::VerifyWaveData() which allows to check whether
311 a sample had been damaged for some reason
312 - Fix: samples' CRC checksums were damaged on file structure changes.
313 - Fix: samples' CRC checksums were misordered when a Sample was deleted.
314 - Added new method Sample::GetWaveDataCRC32Checksum().
315 - Changed default value of EG2Release (filter release time) to 60s.
316 - Instruments' default pitch bend range is now +-2 semi tones.
317 - Fixed CRC checksums being wrong sometimes.
318 - Fix: method File::AddContentOf() did not clone script groups and scripts
319 of passed original file.
320 - Added support for serializing & deserializing DimensionRegion
321 objects (and crossfade_t and leverage_ctrl_t objects).
322 - Added enum reflection API functions for retrieving enum declaration type
323 information at runtime (enumCount(), enumKey(), enumKeys(), enumValue()).
324 - Exception class now has a variadic constructor which allows to add
325 textual format specifiers like with printf().
326 - On unknown leverage controller exception: show precise unknown leverage
327 controller number found.
328 - Ignore invalid leverage controller types and just show a warning on the
329 console instead of throwing an exception.
330 - Added new struct eg_opt_t and new class member variable
331 DimensionRegion::EG1Options and DimensionRegion::EG2Options as an
332 extension to the gig file format, which allows to override the default
333 behavior of the first two EGs' state machines.
334 - Fixed undefined behavior when loading a gig file with invalid
335 velocity curve parameters (fixes CVE-2017-12951).
336 - Fixed undefined behavior when loading a gig file with invalid wave
337 pool index number (fixes CVE-2017-12954).
338
339 * src/DLS.cpp, src/DLS.h:
340 - Sample: wave pool offsets are now 64 bits (to allow support for files
341 larger than 4 GB).
342 - Exception class now has a variadic constructor which allows to add
343 textual format specifiers like with printf().
344
345 * src/RIFF.cpp, src/RIFF.h:
346 - added support for RIFF files larger than 4 GB, by default the required
347 internal RIFF file offset size is automatically detected (that is RIFF
348 files < 4 GB automatically use 32 bit offsets while files >= 4 GB
349 automatically use 64 bit offsets), a particular offset size can be forced
350 with a new option added to the RIFF File constructor though
351 - when saving a modified, grown RIFF file, the temporary file size during
352 Save() operation will no longer be larger than the final grown file size
353 - Exception class now has a variadic constructor which allows to add
354 textual format specifiers like with printf().
355
356 * src/Serialization.cpp, src/Serialization.h:
357 - Archive: Added method isModified().
358 - Archive: Added method setAutoValue().
359 - Archive: Added method setIntValue().
360 - Archive: Added method setRealValue().
361 - Archive: Added method setBoolValue().
362 - Archive: Added method setEnumValue().
363 - Archive: Added method valueAsString().
364 - Archive::rawData(): Automatically re-encode new raw data stream if
365 archive had been modified (i.e. by remove(), setAutoValue(), etc.).
366 - Object: Added method memberByUID().
367 - Object: remove() method is now protected.
368 - Archive: Added method removeMember().
369 - Archive: Added methods name() and setName().
370 - Archive: Added methods comment() and setComment().
371 - Archive: Added methods timeStampCreated(), timeStampModified(),
372 dateTimeCreated() and dateTimeModified().
373 - Archive: Added methods valueAsInt(), valueAsReal() and valueAsBool().
374 - DataType: Implemented demangling C++ type names (for methods
375 asLongDescr() and customTypeName(bool demangle=false)).
376 - Archive::setAutoValue(): Handle human readable boolean text
377 representations like "yes", "no", "true", "false" as expected.
378 - Exception class now has a variadic constructor which allows to add
379 textual format specifiers like with printf().
380 - DataType fix: Retain backward compatibility to older versions of native
381 C++ classes/structs.
382
383 * src/Akai.cpp:
384 - Fixed compilation error with recent, more strict compilers.
385
386 * src/tools/akaidump.cpp, src/tools/akaiextract.cpp:
387 - improved output of non-ascii characters in usage messages
388 - fixed printf format strings
389
390 * src/tools/korg2gig.cpp:
391 - fixed c++11 narrowing warnings
392 - fixed fine tuning which was not translated at all
393
394 * src/tools/gigdump.cpp:
395 - additionally print VelocityUpperLimit and DimensionUpperLimits of all
396 dimension regions
397 - additionally print RIFF chunk file offset and RIFF chunk size of sample
398 data
399 - added and implemented new parameter "--verify" which allows to check
400 the raw wave form data integrity of all samples
401 - added and implemented new parameter "--rebuild-checksums" which allows
402 to recalculate the CRC32 checksum of all samples' raw wave data and
403 rebuilding the gig file's global checksum table (i.e. in case the
404 file's checksum table was damaged)
405 - print samples' CRC32 checksums
406 - Print the new EG behavior options (eg_opt_t).
407
408 * src/tools/gigextract.cpp:
409 - Fix: if sample name contains a path separator (slash or backslash) then
410 replace them by a minus sign to avoid file system issues.
411
412 * src/tools/gig2stereo.cpp:
413 - Also merge mono sample pairs with non matching loop information if
414 argument --incompatible was given.
415
416 * packaging changes:
417 - Automake: set environment variable GCC_COLORS=auto to allow GCC to
418 auto detect whether it (sh/c)ould output its messages in color.
419
420 Version 4.0.0 (14 Jul 2015)
421 * general changes:
422 - minor Makefile fix for parallel make
423 - Mac OS X: link with CoreFoundation (for the UUID function)
424 - removed gcc 4.7 warnings
425 - modernized configure script
426 - removed usage of deprecated Automake variable INCLUDES
427 - added new command line tool "gigmerge"
428 - added "const" keyword to several methods
429 - added new command line tool "gig2mono"
430 - added man page for "sf2dump"
431 - added new command line tool "korgdump" (and a man page for it)
432 - added new command line tool "korg2gig" (and a man page for it)
433 - moved source files of command line tools to new subdir src/tools
434 - libgig.so and libakai.so files are now installed under
435 $(prefix)/lib/libgig/ by default.
436 - Header files are now installed under $(prefix)/include/libgig/ by default.
437 - Fixed various packaging issues regarding installation directories
438 (fixes #218).
439 - added new command line tool "gig2stereo" (and a man page for it)
440 - unit tests: fixed wrong return value when test suite app exits
441 (patch by Ryan Schmidt)
442 - added new command line tool "sf2extract" (and a man page for it)
443
444 * SoundFont file format:
445 - initial implementation
446 - changed region lookup API to avoid malloc in RT threads
447 - fixed GetEG1Sustain which didn't return correct value
448 - bugfix: GetPan always returned -1, 0 or 1
449
450 * KORG file format:
451 - initial support for sample based instruments in KORG's file format
452 (.KMP and .KSF files)
453
454 * AKAI file format:
455 - Added Linux/POSIX ported version of libakai. Note that libakai is released
456 under LGPL terms while libgig is released under GPL terms. To handle this
457 license difference appropriately the AKAI support part is built as
458 separate DLL (.so file).
459 - Fixed Mac OSX support so that the Akai lib files and tools compile without
460 any exotic third party libraries.
461 - Fixed various compilation errors for Windows.
462 - POSIX fix: open() requires third (mode) argument if used with O_CREAT
463 (fixes #219).
464
465 * src/gig.cpp:
466 - bugfix: VCF velocity dynamic range and VCF velocity curve
467 weren't saved correctly
468 - implemented File::AddDuplicateInstrument()
469 - bugfix: negative EG3 depth values were not correctly parsed or
470 saved
471 - added write support for CtrlTrigger midi rule
472 - added read and write support for Legato and Alternator midi
473 rules
474 - bugfix: sample groups were sometimes created multiple times or with
475 wrong textual group name
476 - added new method File::AddContentOf() for merging .gig files
477 - GIG FORMAT EXTENSION: added additional MIDI controllers for leverage
478 controller types (only works with LinuxSampler & gigedit, will not
479 work with Gigasampler/GigaStudio)
480 - added new method File::GetGroup(String name) for getting group by name
481 - added new method Region::GetDimensionDefinition(dimension_t type)
482 - bugfix: don't alter region pointer in DimensionRegion::CopyAssign()
483 - added some more sanity checks in Region::AddDimension()
484 - added new method Region::DeleteDimensionZone(dimension_t, int)
485 - added new method Region::SplitDimensionZone(dimension_t, int)
486 - Fixed crash caused by Region::GetDimensionRegionByValue() that happened
487 with certain velocity split sounds under certain conditions (added bound
488 constraints to prevent that)
489 - GIG FORMAT EXTENSION: added support for real-time instrument scripts.
490 - added new method Region::GetDimensionRegionIndexByValue()
491 - added new method Script::GetGroup()
492 - added new method Region::SetDimensionType()
493 - Added support for custom progress notification while saving to gig file.
494 - Bugfix: Adding a new region in between two existing regions caused the
495 new one being dropped after save operation and the gig file being tainted
496 (chunks at wrong location in the RIFF tree).
497 - Added new method Instrument::MoveTo() which allows to rearrange the order
498 of instruments within the same gig file.
499
500 * src/DLS.cpp, src/DLS.h:
501 - added new method File::GetFileName()
502 - fixed minor "memory leak on exception" bug found with cppcheck
503 - added new method File::GetExtensionFile(int index)
504 - added new method File::SetFileName() allowing to call File::Save()
505 later on without passing a file name
506 - added inline helper methods overlaps() for struct range_t
507 - Added support for custom progress notification while saving to DLS file.
508 - Bugfix: Adding a new region in between two existing regions caused the
509 new one being dropped after save operation and the gig file being tainted
510 (chunks at wrong location in the RIFF tree).
511
512 * src/SF.cpp, src/SF.h:
513 - added new method Sample::ReadNoClear()
514
515 * src/RIFF.cpp, src/RIFF.h:
516 - bugfix: avoid calling read() with count 0 when writing a file,
517 as this may hang on some systems
518 - fixed memory leak and memory handling errors when file loading
519 fails
520 - added new method Chunk::ReadString
521 - added new method File::SetFileName() allowing to call File::Save()
522 later on without passing a file name
523 - added new method File::IsNew()
524 - added support for loading RIFF-like files with a bit different layout
525 than "real" RIFF files (used for KORG format support)
526 - added new method Chunk::GetFile()
527 - added new method Chunk::GetLayout()
528 - added 2nd, alternative method for List::MoveSubChunk(), the old 1st one
529 allows to move a subchunk within the current List, whereas the new 2nd
530 one allows to move the subchunk from the current list to another list
531 - POSIX: only assume -1 result value as error on open() calls
532 - POSIX: show operating system's error reason if opening a file failed
533 - Added support for custom progress notification while saving to RIFF file.
534 - Fixed embarrassing old bug: POSIX read() errors were never detected on
535 Chunk::Read() calls due to signment incompatible variable.
536 - Cleanup of an old DLL binary backward compatibility hack.
537
538 * src/gigextract.cpp:
539 - export sample loop, unity note and fine tune with libsndfile
540
541 * src/riftree.cpp:
542 - added more command line options for being able to also dump other kind
543 of file formats similar but not equal to the RIFF format
544
545 Version 3.3.0 (30 Jul 2009)
546
547 * general changes:
548 - fixed compilation with gcc 4.3
549 - fixes for building with Visual C++
550 - minor fix in configure for building DLL on Windows
551
552 * src/gig.cpp, src/gig.h:
553 - added partial support for MIDI rules, only the Controller
554 Triggered rule is supported so far
555 - bugfix: removed another iterator invalidation in DeleteSample
556 - bugfix in Sample::LoadSampleData*(): reset sample read position to
557 sample start before trying to (re)load sample data from file (#82)
558 - bugfix: EG3 depth parameter was not saved correctly
559 - fixed crash which occured when streaming a gig sample with
560 bi-directional (a.k.a. 'pingpong') loop type (fixes #102)
561
562 * src/RIFF.cpp, src/RIFF.h:
563 - bugfix: saving to the same file after the file size had been
564 increased made the file corrupt (#82)
565 - bugfix: refuse Chunk::Read() in case chunk has just been added, that
566 is not written physically yet (#82)
567 - bugfix: saving to the same file after the file size had been
568 decreased sometimes also made the file corrupt!
569 - bugfix: undefined behavior (e.g. endless loop) when opening zero
570 length files, now throws a RIFF::Exception instead (fixes bug #121)
571 - bugfix: destructor for base class RIFF::Chunk accessed members
572 of derived class RIFF::File, which is bad, and caused crashes
573 when using Visual C++
574 - bugfix: files that contain zero length RIFF lists were not read
575 correctly (fixes #127) (bug was introduced 2009-03-13)
576
577 Version 3.2.1 (5 Dec 2007)
578
579 * src/RIFF.cpp, src/RIFF.h:
580 - avoid Windows to perform unnecessary file stream caching which would
581 decrease disk streaming performance on Windows systems otherwise
582
583 * src/gig.cpp, src/gig.h:
584 - added File::SetAutoLoad() and File::GetAutoLoad() for allowing
585 applications to retrieve very superficial informations like amount of
586 instruments and their names in a very fast way
587
588 Version 3.2.0 (14 Oct 2007)
589
590 * packaging changes:
591 - added Mac OSX XCode project files (patch by Toshi Nagata)
592 - Dev-C++ (win32) project file is automatically updated with
593 the version info from configure.in
594 - the configure script can now be used in Windows with MSYS
595 - added a mainpage for the Doxygen API documentation
596
597 * src/DLS.cpp, src/DLS.h:
598 - added Sampler::AddSampleLoop() and Sampler::DeleteSampleLoop() methods
599 - fixed write support for big-endian systems
600 - improved handling of fixed length info strings - separate default
601 lengths can be specified for each INFO chunk
602 - added Resource::GenerateDLSID function
603 - write support fix: allow regions without mapped samples
604 - added method SetKeyRange() to the Region class which should be used
605 instead of setting the KeyRange member variable directly
606 - MoveRegion() method of Region class is now private
607 - added SetGain() method to Sampler class
608 - fixed crash when saving a file after a sample loop was added
609
610 * src/gig.cpp, src/gig.h:
611 - fixed segmentation fault in the gig::File destructor sequence which
612 happened when gig::Group informations were accessed before
613 - fixed write support for big-endian systems
614 - defined lengths of a fixed set of info strings. These strings
615 are saved when the file is written, even if they are empty.
616 - added missing parameter initalizations in sample, region and
617 instrument constructors
618 - clear unused fields when saving samples and regions
619 - fixed write support bugs: v3 dimension limits and chunksize
620 weren't saved, leverage controller of type controlchange
621 couldn't be saved, group name list chunk was placed wrong,
622 dimension region chunks also placed wrong
623 - added initialization of some fixed info strings in file and
624 instrument
625 - write support: files created by libgig will now have the RIFF
626 chunks in correct order
627 - write support: two previously unknown fields in dimension
628 definition are now saved
629 - added constants for gig file versions
630 - write support: the 3crc and einf chunks are now created or
631 updated when a file is saved (3crc contains sample checksums,
632 einf contains file statistics)
633 - write support: DLSID is now generated on the file and the
634 instruments
635 - write support: improved the default values for dimension region
636 parameters
637 - more write support fixes: crossfade parameters were not saved,
638 v3 dimension limits were not correctly initialized and saved
639 when dimensions were added or deleted, v3 wave pool offsets were
640 not saved correctly
641 - write support: 24 bit samples can now be written
642 - write support: version 3 is now the default for new files
643 - more write support fixes: the 3ewg chunk is now bigger for v3,
644 dimension regions without mapped samples are now allowed, 3gnl
645 list in v3 files now always has 128 entries, several parameters
646 where incorrectly saved due to an operator precedence mistake
647 - DeleteSample now removes all references to the deleted sample
648 - AddDimension now copies all parameters from existing dimension
649 regions and also makes sure that the samplechannel dimension is
650 placed first in the list of dimensions.
651 - added method GetParent() to class 'DimensionRegion', which returns its
652 parent Region
653 - fixed Instrument::UpdateRegionKeyTable() method which did not reset
654 unused areas
655 - added various setter methods to DimensionRegion class which take care
656 of updating lookup tables / caches.
657
658 * src/RIFF.cpp, src/RIFF.h:
659 - added File::SetByteOrder method
660 - Windows fix: saving a new file didn't work
661
662 * src/gigdump.cpp:
663 - added some missing dimension strings
664
665 Version 3.1.1 (24 Mar 2007)
666
667 * packaging changes:
668 - ported to Windows using native Windows functions for file IO
669 (provided Dev-C++ + mingw project file)
670 - only export relevant files to Doxygen API documentation
671
672 * src/gig.cpp, src/gig.h:
673 - custom velocity splits now works for gig v3 files too
674 - added support for custom splits points for other dimensions than
675 velocity (gig v3 feature)
676 - added "smart midi" and "round robin keyboard" dimensions
677 - added new method File::DeleteGroupOnly() which only deletes the given
678 group but moves all its members to another group, the other method,
679 that is File::DeleteGroup() now removes not just the group, but also
680 all the samples that belong to that group
681 - fixed crash which occured on interfering File::DeleteSample() and
682 File::GetNextSample() calls (due to iterator invalidation)
683 - fixed group names which were not saved
684 - fixed group destructor which did not remove the RIFF chunk associated
685 with the group
686 - added Instrument::MoveRegion method
687 - fixed constructor for Region, which did not initialize correctly
688 when used from Instrument::AddRegion
689 - when saving, override the gig::Regions sample reference simply by
690 the region's first dimension region's sample (avoids an exception
691 when trying to save a new instrument)
692 - fixed AddDimension() method which did not fill out all mandatory
693 dimension definition fields
694
695 * src/DLS.cpp, src/DLS.h:
696 - added Instrument::MoveRegion method
697 - fixed software info field which was wrongly stored on instruments,
698 causing an exception when trying to save a new instrument
699
700 * src/RIFF.cpp, src/RIFF.h:
701 - fixed RIFF::Chunk destructor which did not unregister previously
702 resized chunks, leading to a "zero size chunk" exception when
703 File::Save() was called
704 - added List::MoveSubChunk method
705
706 Version 3.1.0 (24 Nov 2006)
707
708 * packaging changes:
709 - changed deprecated copyright attribute to license;
710 added ldconfig to post-(un)install steps on libgig.spec (RPM)
711
712 * src/gig.cpp, src/gig.h:
713 - added support for more than one set of custom velocity splits
714 inside a region (for example different velocity split levels for
715 pedal up and pedal down)
716 - sample loop parameters are now taken from the DimensionRegion
717 instead of the wave chunk
718 - keyswitching dimension is changed from split type "normal" to
719 "bit"
720 - real support for 24 bit samples - samples are not truncated to
721 16 bits anymore
722 - support for reading of ".art" files. (Merging of .art and .gig
723 files are not implemented yet.)
724 - several fixes for the write support
725 - support for sample groups added
726
727 * src/DLS.cpp, src/DLS.h:
728 - support for reading of ".art" files
729 - removed incorrect use of memccpy in the write support (patch by
730 Jeremy Kerr)
731 - several fixes for the write support
732
733 * src/gigextract.cpp:
734 - real support for 24 bit samples
735
736 * src/gigdump.cpp:
737 - print global file informations
738 - print sample groups
739
740 * general changes:
741 - added CPPUnit test cases (at the moment primarily for automatic check
742 of Gigasampler write support)
743
744 Version 3.0.0 (28 Apr 2006)
745
746 * general changes:
747 - added write support (that is for creating and modifying RIFF, DLS and
748 gig files)
749 - loading DLS and gig files is now much more permissive, DLS and gig
750 files are now loaded even if mandatory RIFF chunks are missing
751 - fixed some memory management errors, one of them was causing a
752 crash when a multi-file gig was deallocated
753
754 * src/gig.cpp, src/gig.h:
755 - fixed the GetVelocityCutoff function, it wasn't always using the
756 VCFVelocityScale parameter when no cutoff controller was defined
757 - support for the gig v3 feature to have a number of dimension
758 splits not equal to a power of two
759 - added write support (highly experimental)
760
761 * src/DLS.cpp, src/DLS.h:
762 - fixed loading of Articulation Connections (<artl> list chunks were
763 seeked instead of ordinary <artl> data chunks)
764 - added write support (highly experimental)
765
766 * src/RIFF.cpp, src/RIFF.h:
767 - added write support
768 - Chunk::LoadChunkData() can now be called again to resize the buffer
769 after a Chunk::Resize() and before the File::Save() call to allow
770 placing the new data in the chunk's write buffer and perform the
771 resize and write operations in one rush
772
773 * src/gigdump.cpp:
774 - fixed to show the correct amount of dimension regions instead of 32
775 (patch by James Wylder)
776
777 * src/dlsdump.cpp:
778 - show for every region the name of the referenced sample
779 - show file name in quotation marks
780
781 Version 2.0.2 (15 Aug 2005)
782
783 * packaging changes:
784 - require automake (>= 1.5) for 'make -f Makefile.cvs'
785 (mandatory for 'dist-bzip2' automake option)
786
787 * src/gig.cpp, src/gig.h:
788 - support for gig v3 multi-file format (.gig, .gx01, .gx02, ...),
789 the extension files are read automatically when the samples are
790 loaded
791 - fixed the 24 bit decompression, the result should now be exact
792 instead of an approximation
793 - added VCFCutoffControllerInvert parameter and GetVelocityCutoff
794 function to DimensionRegion
795
796 * src/DLS.cpp, src/DLS.h:
797 - the upper bits of the pool table indices are read (used as
798 extension file numbers for gig v3)
799
800 * src/RIFF.cpp, src/RIFF.h:
801 - the file name is remembered in the RIFF::File object
802
803 Version 2.0.1 (12 Jun 2005)
804
805 * packaging changes:
806 - include debian/ directory on 'make dist'
807 - create a bzip2 tarball on 'make dist'
808
809 * src/gigextract.cpp:
810 - show also version of libsndfile or build version of libaudiofile when
811 using the -v switch
812 - fixed mutual link dependency to libsndfile / libaudiofile
813
814 * src/gig.cpp, src/gig.h:
815 - added DimensionRegion::GetVelocityRelease function
816
817 Version 2.0.0 (9 May 2005)
818
819 * packaging changes:
820 - fixed conditional linkage of either libsndfile or libaudiofile
821 (if none of the two exist, configure script will abort)
822 - man pages are now auto generated with the correct libgig version
823
824 * src/gig.cpp, src/gig.h:
825 - experimental support for Gigasampler v3 format;
826 64 bit file offsets are truncated to 32 bit, 24 bit samples are
827 truncated to 16 bit, up to 8 dimensions are read, additional
828 articulation informations are ignored at the moment
829 (patch by Andreas Persson)
830 - added some file format compatibility checks
831 - fixed vcf_type_lowpassturbo value (vcf_type_lowpassturbo was actually
832 never used, because the necessary check was made before
833 initialization)
834 - fixed crossfade points order (structure for big endian and little
835 endian systems was interchanged)
836 - fixed some memory leaks (patch by 'Gene', a.k.a Anders Alm)
837 - fixed crash which occured when patches did not have a sample assigned
838 to their region or dimension region (patch by Andreas Persson)
839 - support for compressed mono samples
840 - experimental support for compressed 24 bit samples
841 - fixed decompression on big-endian CPUs
842 - fixed decompression bug that truncated the last block of samples
843 - external decompression buffers can now be used for streaming samples
844 to avoid race conditions in case of multiple streaming threads
845 - added pre-calculated sample attenuation parameter
846 - added v3 "random" and "round robin" dimensions
847 - implemented progress indicator callback mechanism for loading
848 instruments and samples
849 - added functions libraryName() and libraryVersion()
850
851 * src/DLS.cpp, src/DLS.h:
852 - fixed File constructor which caused variable File::Instruments always
853 to be zero
854 - added functions libraryName() and libraryVersion()
855
856 * src/RIFF.cpp, src/RIFF.h:
857 - fixed method List::LoadSubChunks() which did not restore the original
858 position within the body of the given list chunk
859 - added functions libraryName() and libraryVersion()
860
861 * src/rifftree.cpp:
862 - added command line switch -v to show rifftree's revision and the used
863 libgig version
864
865 * src/dlsdump.cpp:
866 - added command line switch -v to show dlsdump's revision and the used
867 libgig version
868
869 * src/gigdump.cpp:
870 - added output of UnityNote, FineTune, Gain, SampleStartOffset an
871 LoopPlayCount
872 - added command line switch -v to show gigdump's revision and the used
873 libgig version
874
875 * src/gigextract.cpp:
876 - support for compressed mono samples and compressed 24 bit samples
877 - added command line switch -v to show gigextract's revision and the
878 used libgig version
879
880 Version 1.0.0 (26 Nov 2004)
881
882 * packaging changes:
883 - renamed 'libgig.pc.in' -> 'gig.pc.in' and renamed pkg-config lib name
884 'libgig' -> 'gig' as it's common practice to omit the 'lib' prefix
885 - fixed man pages automake install rule (which didn't work on Mandrake,
886 SuSE and Fedora)
887 - fixed generation of Doxygen API documentation (now also included in
888 RPM and Debian packages)
889
890 * src/gig.cpp, src/gig.h:
891 - fixed / improved accuracy of all three velocity to volume
892 transformation functions a.k.a. 'nonlinear','linear','special'
893 (patch by Andreas Persson)
894 - denormals are filtered from the velocity to volume tables
895 - bugfix for dimension region switching (wrong handling of the release
896 trigger dimension, no bit range check for dimensions of split type
897 'split_type_bit')
898 - fixed panorama value in DimensionRegion (invalid conversion from
899 signed 7 bit to signed 8 bit)
900 - added class attribute 'Layers' to class 'gig::Region'
901 - symbol prototyping of gig::Region (fixes build failure with qsampler)
902
903 * src/gigextract.cpp:
904 - added support for libsndfile (if libaudiofile and libsndfile are
905 available then libsndfile is preferred)
906
907 * src/gigdump.cpp:
908 - added printout for dimension informations (amount, type, bits, zones)
909 - added printout for velocity response curve parameters
910 - added printout for crossfade definitions
911 - added printout for panorama value for each DimensionRegion
912 - replaced printout of DLS Region layer by printout of amount of
913 Gigasampler layers
914
915 Version 0.7.1 (2 Jul 2004)
916
917 * packaging changes:
918 - added libgig.spec and libgig.pc package configurations for generating
919 Redhat packages
920 - header files included on installation.
921 - autotools-generated files removed from CVS repository.
922 - added support for generating Debian packages
923 - version of shared library can be set in configure.in
924
925 Version 0.7.0 (3 May 2004)
926
927 * general changes:
928 - various big endian specific corrections
929 (successfully tested now on PPC)
930 - minor adjustments to avoid compile errors on some systems
931 (using now pow() instead of powl() and --pedantic g++ compiler switch)
932 - libtoolized the library
933 - added man pages for the command line tools
934 (gigextract, gigdump, dlsdump, rifftree)
935
936 * src/gig.cpp, src/gig.h:
937 - fixed bug in decompression algorithm which caused it not to detect
938 the end of a stream
939 - added method GetVelocityAttenuation() to class 'DimensionRegion' which
940 takes the MIDI key velocity value as an argument and returns the
941 appropriate volume factor (0.0 ... 1.0) for the sample to be played
942 back, the velocity curve transformation functions used for this are
943 only an approximation so far
944 - fixed class attributes 'Sample::LoopStart', 'Sample::LoopEnd' and
945 'Sample::LoopSize' which reflected wrong values
946 - class attributes 'Sample::LoopStart' and 'Sample::LoopEnd' are now
947 measured in sample points instead of byte offset
948 - renamed misleading attribute name 'Sample::MIDIPitchFraction' to
949 'Sample::FineTune'
950 - added class attribute 'Sample::LoopSize'
951 - added method GetInstrument(uint index) to class 'File'
952 - added ReadAndLoop() method to class 'Sample' which is an extension to
953 the normal Read() method to honor the sample's looping information
954 while streaming from disk
955 - changed interface for 'attenuation_ctrl_t', 'eg1_ctrl_t' and
956 'eg2_ctrl_t': replaced this huge enumeration by a structure which
957 reflects the MIDI controller number in case of an ordinary control
958 change controller (this saves a huge switch-case block in the
959 application of the library user)
960 - renamed following attributes in class 'DimensionRegion':
961 'AttenuationContol' -> 'AttenuationController',
962 'InvertAttenuationControl' -> 'InvertAttenuationController',
963 'AttenuationControlTreshold' -> 'AttenuationControllerThreshold'
964 - minor fix in API documentation for method GetVelocityAttenuation() in
965 class 'DimensionRegion'
966
967 * src/RIFF.cpp, src/RIFF.h:
968 - added additional API documentation
969 - minor fix in Chunk::Read() method (only a minor efficiency issue)
970
971 * src/gigdump.cpp:
972 - added printout of samples' looping informations
973
974 Version 0.6.0 (3 Nov 2003)
975
976 * initial release

  ViewVC Help
Powered by ViewVC