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

Diff of /libgig/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1098 by schoenebeck, Thu Mar 15 00:32:06 2007 UTC revision 3327 by schoenebeck, Sun Jul 23 18:18:30 2017 UTC
# Line 1  Line 1 
1  Version CVS HEAD (?)  Version SVN trunk
2      * general changes:
3        - removed 2 GB limitation when loading a gig or DLS file
4        - using now native integer size where appropriate
5        - fixed minor issues with man pages (patch by Debian maintainer)
6        - fixed various spelling mistakes (patch by Debian maintainer)
7        - Added new "Serialization" framework (and equally named namespace)
8          which allows to serialize and deserialize native C++ objects
9          in a portable, easy and flexible way.
10        - print compiler warning if no RTTI available
11        - Fixed potential crash in command line tools gig2stereo, korg2gig,
12          korgdump and sf2extract.
13    
14      * src/gig.cpp, src/gig.h:
15        - fixed bug in Script::SetGroup: the script chunk wasn't moved
16        - fixed compilation error with clang 3.4
17        - GIG FORMAT EXTENSION: added support for saving gig file larger than 4 GB
18          as one single monolithic gig file. In case .gig file is >= 2GB expect a
19          large monolithic file, otherwise if .gig file is < 2 GB check for
20          "extension" files (.gx01, .gx02, ...) instead.
21        - fixed Region::UpdateUpdateVelocityTable() which did not work correctly
22          if there were dimensions after the velocity dimension: it only created
23          valid velocity tables for cases of dimensions lower than the velocity
24          dimension.
25        - added new method Sample::VerifyWaveData() which allows to check whether
26          a sample had been damaged for some reason
27        - Fix: samples' CRC checksums were damaged on file structure changes.
28        - Fix: samples' CRC checksums were misordered when a Sample was deleted.
29        - Added new method Sample::GetWaveDataCRC32Checksum().
30        - Changed default value of EG2Release (filter release time) to 60s.
31        - Instruments' default pitch bend range is now +-2 semi tones.
32        - Fixed CRC checksums being wrong sometimes.
33        - Fix: method File::AddContentOf() did not clone script groups and scripts
34          of passed original file.
35        - Added support for serializing & deserializing DimensionRegion
36          objects (and crossfade_t and leverage_ctrl_t objects).
37        - Added enum reflection API functions for retrieving enum declaration type
38          information at runtime (enumCount(), enumKey(), enumKeys(), enumValue()).
39        - Exception class now has a variadic constructor which allows to add
40          textual format specifiers like with printf().
41        - On unknown leverage controller exception: show precise unknown leverage
42          controller number found.
43        - Ignore invalid leverage controller types and just show a warning on the
44          console instead of throwing an exception.
45        - Added new struct eg_opt_t and new class member variable
46          DimensionRegion::EG1Options and DimensionRegion::EG2Options as an
47          extension to the gig file format, which allows to override the default
48          behavior of the first two EGs' state machines.
49    
50      * src/DLS.cpp, src/DLS.h:
51        - Sample: wave pool offsets are now 64 bits (to allow support for files
52          larger than 4 GB).
53        - Exception class now has a variadic constructor which allows to add
54          textual format specifiers like with printf().
55          
56      * src/RIFF.cpp, src/RIFF.h:
57        - added support for RIFF files larger than 4 GB, by default the required
58          internal RIFF file offset size is automatically detected (that is RIFF
59          files < 4 GB automatically use 32 bit offsets while files >= 4 GB
60          automatically use 64 bit offsets), a particular offset size can be forced
61          with a new option added to the RIFF File constructor though
62        - when saving a modified, grown RIFF file, the temporary file size during
63          Save() operation will no longer be larger than the final grown file size
64        - Exception class now has a variadic constructor which allows to add
65          textual format specifiers like with printf().
66    
67      * src/Serialization.cpp, src/Serialization.h:
68        - Archive: Added method isModified().
69        - Archive: Added method setAutoValue().
70        - Archive: Added method setIntValue().
71        - Archive: Added method setRealValue().
72        - Archive: Added method setBoolValue().
73        - Archive: Added method setEnumValue().
74        - Archive: Added method valueAsString().
75        - Archive::rawData(): Automatically re-encode new raw data stream if
76          archive had been modified (i.e. by remove(), setAutoValue(), etc.).
77        - Object: Added method memberByUID().
78        - Object: remove() method is now protected.
79        - Archive: Added method removeMember().
80        - Archive: Added methods name() and setName().
81        - Archive: Added methods comment() and setComment().
82        - Archive: Added methods timeStampCreated(), timeStampModified(),
83          dateTimeCreated() and dateTimeModified().
84        - Archive: Added methods valueAsInt(), valueAsReal() and valueAsBool().
85        - DataType: Implemented demangling C++ type names (for methods
86          asLongDescr() and customTypeName(bool demangle=false)).
87        - Archive::setAutoValue(): Handle human readable boolean text
88          representations like "yes", "no", "true", "false" as expected.
89        - Exception class now has a variadic constructor which allows to add
90          textual format specifiers like with printf().
91    
92      * src/tools/akaidump.cpp, src/tools/akaiextract.cpp:
93        - improved output of non-ascii characters in usage messages
94        - fixed printf format strings
95    
96      * src/tools/korg2gig.cpp:
97        - fixed c++11 narrowing warnings
98        - fixed fine tuning which was not translated at all
99    
100      * src/tools/gigdump.cpp:
101        - additionally print VelocityUpperLimit and DimensionUpperLimits of all
102          dimension regions
103        - additionally print RIFF chunk file offset and RIFF chunk size of sample
104          data
105        - added and implemented new parameter "--verify" which allows to check
106          the raw wave form data integrity of all samples
107        - added and implemented new parameter "--rebuild-checksums" which allows
108          to recalculate the CRC32 checksum of all samples' raw wave data and
109          rebuilding the gig file's global checksum table (i.e. in case the
110          file's checksum table was damaged)
111        - print samples' CRC32 checksums
112        - Print the new EG behavior options (eg_opt_t).
113    
114      * src/tools/gigextract.cpp:
115        - Fix: if sample name contains a path separator (slash or backslash) then
116          replace them by a minus sign to avoid file system issues.
117    
118      * src/tools/gig2stereo.cpp:
119        - Also merge mono sample pairs with non matching loop information if
120          argument --incompatible was given.
121    
122      * packaging changes:
123        - Automake: set environment variable GCC_COLORS=auto to allow GCC to
124          auto detect whether it (sh/c)ould output its messages in color.
125    
126    Version 4.0.0 (14 Jul 2015)
127      * general changes:
128        - minor Makefile fix for parallel make
129        - Mac OS X: link with CoreFoundation (for the UUID function)
130        - removed gcc 4.7 warnings
131        - modernized configure script
132        - removed usage of deprecated Automake variable INCLUDES
133        - added new command line tool "gigmerge"
134        - added "const" keyword to several methods
135        - added new command line tool "gig2mono"
136        - added man page for "sf2dump"
137        - added new command line tool "korgdump" (and a man page for it)
138        - added new command line tool "korg2gig" (and a man page for it)
139        - moved source files of command line tools to new subdir src/tools
140        - libgig.so and libakai.so files are now installed under
141          $(prefix)/lib/libgig/ by default.
142        - Header files are now installed under $(prefix)/include/libgig/ by default.
143        - Fixed various packaging issues regarding installation directories
144          (fixes #218).
145        - added new command line tool "gig2stereo" (and a man page for it)
146        - unit tests: fixed wrong return value when test suite app exits
147          (patch by Ryan Schmidt)
148        - added new command line tool "sf2extract" (and a man page for it)
149    
150      * SoundFont file format:
151        - initial implementation
152        - changed region lookup API to avoid malloc in RT threads
153        - fixed GetEG1Sustain which didn't return correct value
154        - bugfix: GetPan always returned -1, 0 or 1
155    
156      * KORG file format:
157        - initial support for sample based instruments in KORG's file format
158          (.KMP and .KSF files)
159    
160      * AKAI file format:
161        - Added Linux/POSIX ported version of libakai. Note that libakai is released
162          under LGPL terms while libgig is released under GPL terms. To handle this
163          license difference appropriately the AKAI support part is built as
164          separate DLL (.so file).
165        - Fixed Mac OSX support so that the Akai lib files and tools compile without
166          any exotic third party libraries.
167        - Fixed various compilation errors for Windows.
168        - POSIX fix: open() requires third (mode) argument if used with O_CREAT
169          (fixes #219).
170    
171      * src/gig.cpp:
172        - bugfix: VCF velocity dynamic range and VCF velocity curve
173          weren't saved correctly
174        - implemented File::AddDuplicateInstrument()
175        - bugfix: negative EG3 depth values were not correctly parsed or
176          saved
177        - added write support for CtrlTrigger midi rule
178        - added read and write support for Legato and Alternator midi
179          rules
180        - bugfix: sample groups were sometimes created multiple times or with
181          wrong textual group name
182        - added new method File::AddContentOf() for merging .gig files
183        - GIG FORMAT EXTENSION: added additional MIDI controllers for leverage
184          controller types (only works with LinuxSampler & gigedit, will not
185          work with Gigasampler/GigaStudio)
186        - added new method File::GetGroup(String name) for getting group by name
187        - added new method Region::GetDimensionDefinition(dimension_t type)
188        - bugfix: don't alter region pointer in DimensionRegion::CopyAssign()
189        - added some more sanity checks in Region::AddDimension()
190        - added new method Region::DeleteDimensionZone(dimension_t, int)
191        - added new method Region::SplitDimensionZone(dimension_t, int)
192        - Fixed crash caused by Region::GetDimensionRegionByValue() that happened
193          with certain velocity split sounds under certain conditions (added bound
194          constraints to prevent that)
195        - GIG FORMAT EXTENSION: added support for real-time instrument scripts.
196        - added new method Region::GetDimensionRegionIndexByValue()
197        - added new method Script::GetGroup()
198        - added new method Region::SetDimensionType()
199        - Added support for custom progress notification while saving to gig file.
200        - Bugfix: Adding a new region in between two existing regions caused the
201          new one being dropped after save operation and the gig file being tainted
202          (chunks at wrong location in the RIFF tree).
203        - Added new method Instrument::MoveTo() which allows to rearrange the order
204          of instruments within the same gig file.
205    
206      * src/DLS.cpp, src/DLS.h:
207        - added new method File::GetFileName()
208        - fixed minor "memory leak on exception" bug found with cppcheck
209        - added new method File::GetExtensionFile(int index)
210        - added new method File::SetFileName() allowing to call File::Save()
211          later on without passing a file name
212        - added inline helper methods overlaps() for struct range_t
213        - Added support for custom progress notification while saving to DLS file.
214        - Bugfix: Adding a new region in between two existing regions caused the
215          new one being dropped after save operation and the gig file being tainted
216          (chunks at wrong location in the RIFF tree).
217    
218      * src/SF.cpp, src/SF.h:
219        - added new method Sample::ReadNoClear()
220    
221      * src/RIFF.cpp, src/RIFF.h:
222        - bugfix: avoid calling read() with count 0 when writing a file,
223          as this may hang on some systems
224        - fixed memory leak and memory handling errors when file loading
225          fails
226        - added new method Chunk::ReadString
227        - added new method File::SetFileName() allowing to call File::Save()
228          later on without passing a file name
229        - added new method File::IsNew()
230        - added support for loading RIFF-like files with a bit different layout
231          than "real" RIFF files (used for KORG format support)
232        - added new method Chunk::GetFile()
233        - added new method Chunk::GetLayout()
234        - added 2nd, alternative method for List::MoveSubChunk(), the old 1st one
235          allows to move a subchunk within the current List, whereas the new 2nd
236          one allows to move the subchunk from the current list to another list
237        - POSIX: only assume -1 result value as error on open() calls
238        - POSIX: show operating system's error reason if opening a file failed
239        - Added support for custom progress notification while saving to RIFF file.
240        - Fixed embarrassing old bug: POSIX read() errors were never detected on
241          Chunk::Read() calls due to signment incompatible variable.
242        - Cleanup of an old DLL binary backward compatibility hack.
243    
244      * src/gigextract.cpp:
245        - export sample loop, unity note and fine tune with libsndfile
246    
247      * src/riftree.cpp:
248        - added more command line options for being able to also dump other kind
249          of file formats similar but not equal to the RIFF format
250    
251    Version 3.3.0 (30 Jul 2009)
252    
253      * general changes:
254        - fixed compilation with gcc 4.3
255        - fixes for building with Visual C++
256        - minor fix in configure for building DLL on Windows
257    
258      * src/gig.cpp, src/gig.h:
259        - added partial support for MIDI rules, only the Controller
260          Triggered rule is supported so far
261        - bugfix: removed another iterator invalidation in DeleteSample
262        - bugfix in Sample::LoadSampleData*(): reset sample read position to
263          sample start before trying to (re)load sample data from file (#82)
264        - bugfix: EG3 depth parameter was not saved correctly
265        - fixed crash which occured when streaming a gig sample with
266          bi-directional (a.k.a. 'pingpong') loop type (fixes #102)
267    
268      * src/RIFF.cpp, src/RIFF.h:
269        - bugfix: saving to the same file after the file size had been
270          increased made the file corrupt (#82)
271        - bugfix: refuse Chunk::Read() in case chunk has just been added, that
272          is not written physically yet (#82)
273        - bugfix: saving to the same file after the file size had been
274          decreased sometimes also made the file corrupt!
275        - bugfix: undefined behavior (e.g. endless loop) when opening zero
276          length files, now throws a RIFF::Exception instead (fixes bug #121)
277        - bugfix: destructor for base class RIFF::Chunk accessed members
278          of derived class RIFF::File, which is bad, and caused crashes
279          when using Visual C++
280        - bugfix: files that contain zero length RIFF lists were not read
281          correctly (fixes #127) (bug was introduced 2009-03-13)
282    
283    Version 3.2.1 (5 Dec 2007)
284    
285      * src/RIFF.cpp, src/RIFF.h:
286        - avoid Windows to perform unnecessary file stream caching which would
287          decrease disk streaming performance on Windows systems otherwise
288    
289      * src/gig.cpp, src/gig.h:
290        - added File::SetAutoLoad() and File::GetAutoLoad() for allowing
291          applications to retrieve very superficial informations like amount of
292          instruments and their names in a very fast way
293    
294    Version 3.2.0 (14 Oct 2007)
295    
296      * packaging changes:
297        - added Mac OSX XCode project files (patch by Toshi Nagata)
298        - Dev-C++ (win32) project file is automatically updated with
299          the version info from configure.in
300        - the configure script can now be used in Windows with MSYS
301        - added a mainpage for the Doxygen API documentation
302    
303      * src/DLS.cpp, src/DLS.h:
304        - added Sampler::AddSampleLoop() and Sampler::DeleteSampleLoop() methods
305        - fixed write support for big-endian systems
306        - improved handling of fixed length info strings - separate default
307          lengths can be specified for each INFO chunk
308        - added Resource::GenerateDLSID function
309        - write support fix: allow regions without mapped samples
310        - added method SetKeyRange() to the Region class which should be used
311          instead of setting the KeyRange member variable directly
312        - MoveRegion() method of Region class is now private
313        - added SetGain() method to Sampler class
314        - fixed crash when saving a file after a sample loop was added
315    
316      * src/gig.cpp, src/gig.h:
317        - fixed segmentation fault in the gig::File destructor sequence which
318          happened when gig::Group informations were accessed before
319        - fixed write support for big-endian systems
320        - defined lengths of a fixed set of info strings. These strings
321          are saved when the file is written, even if they are empty.
322        - added missing parameter initalizations in sample, region and
323          instrument constructors
324        - clear unused fields when saving samples and regions
325        - fixed write support bugs: v3 dimension limits and chunksize
326          weren't saved, leverage controller of type controlchange
327          couldn't be saved, group name list chunk was placed wrong,
328          dimension region chunks also placed wrong
329        - added initialization of some fixed info strings in file and
330          instrument
331        - write support: files created by libgig will now have the RIFF
332          chunks in correct order
333        - write support: two previously unknown fields in dimension
334          definition are now saved
335        - added constants for gig file versions
336        - write support: the 3crc and einf chunks are now created or
337          updated when a file is saved (3crc contains sample checksums,
338          einf contains file statistics)
339        - write support: DLSID is now generated on the file and the
340          instruments
341        - write support: improved the default values for dimension region
342          parameters
343        - more write support fixes: crossfade parameters were not saved,
344          v3 dimension limits were not correctly initialized and saved
345          when dimensions were added or deleted, v3 wave pool offsets were
346          not saved correctly
347        - write support: 24 bit samples can now be written
348        - write support: version 3 is now the default for new files
349        - more write support fixes: the 3ewg chunk is now bigger for v3,
350          dimension regions without mapped samples are now allowed, 3gnl
351          list in v3 files now always has 128 entries, several parameters
352          where incorrectly saved due to an operator precedence mistake
353        - DeleteSample now removes all references to the deleted sample
354        - AddDimension now copies all parameters from existing dimension
355          regions and also makes sure that the samplechannel dimension is
356          placed first in the list of dimensions.
357        - added method GetParent() to class 'DimensionRegion', which returns its
358          parent Region
359        - fixed Instrument::UpdateRegionKeyTable() method which did not reset
360          unused areas
361        - added various setter methods to DimensionRegion class which take care
362          of updating lookup tables / caches.
363    
364      * src/RIFF.cpp, src/RIFF.h:
365        - added File::SetByteOrder method
366        - Windows fix: saving a new file didn't work
367    
368      * src/gigdump.cpp:
369        - added some missing dimension strings
370    
371    Version 3.1.1 (24 Mar 2007)
372    
373    * packaging changes:    * packaging changes:
374      - ported to Windows using native Windows functions for file IO      - ported to Windows using native Windows functions for file IO
# Line 17  Version CVS HEAD (?) Line 387  Version CVS HEAD (?)
387      - fixed crash which occured on interfering File::DeleteSample() and      - fixed crash which occured on interfering File::DeleteSample() and
388        File::GetNextSample() calls (due to iterator invalidation)        File::GetNextSample() calls (due to iterator invalidation)
389      - fixed group names which were not saved      - fixed group names which were not saved
390        - fixed group destructor which did not remove the RIFF chunk associated
391          with the group
392        - added Instrument::MoveRegion method
393        - fixed constructor for Region, which did not initialize correctly
394          when used from Instrument::AddRegion
395        - when saving, override the gig::Regions sample reference simply by
396          the region's first dimension region's sample (avoids an exception
397          when trying to save a new instrument)
398        - fixed AddDimension() method which did not fill out all mandatory
399          dimension definition fields
400    
401      * src/DLS.cpp, src/DLS.h:
402        - added Instrument::MoveRegion method
403        - fixed software info field which was wrongly stored on instruments,
404          causing an exception when trying to save a new instrument
405    
406    * src/RIFF.cpp, src/RIFF.h:    * src/RIFF.cpp, src/RIFF.h:
407      - fixed RIFF::Chunk destructor which did not unregister previously      - fixed RIFF::Chunk destructor which did not unregister previously
408        resized chunks, leading to a "zero size chunk" exception when        resized chunks, leading to a "zero size chunk" exception when
409        File::Save() was called        File::Save() was called
410        - added List::MoveSubChunk method
411    
412  Version 3.1.0 (24 Nov 2006)  Version 3.1.0 (24 Nov 2006)
413    

Legend:
Removed from v.1098  
changed lines
  Added in v.3327

  ViewVC Help
Powered by ViewVC