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

Contents of /libgig/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2155 - (show annotations) (download)
Thu Jan 6 11:33:40 2011 UTC (13 years, 2 months ago) by persson
File size: 19437 byte(s)
* fixed memory leak and memory handling errors when file loading fails

1 Version CVS HEAD (?)
2 * general changes:
3 - minor Makefile fix for parallel make
4
5 * SoundFont file format
6 - initial implementation
7 - changed region lookup API to avoid malloc in RT threads
8
9 * src/gig.cpp:
10 - bugfix: VCF velocity dynamic range and VCF velocity curve
11 weren't saved correctly
12
13 * src/RIFF.cpp, src/RIFF.h:
14 - bugfix: avoid calling read() with count 0 when writing a file,
15 as this may hang on some systems
16 - fixed memory leak and memory handling errors when file loading
17 fails
18
19 Version 3.3.0 (30 Jul 2009)
20
21 * general changes:
22 - fixed compilation with gcc 4.3
23 - fixes for building with Visual C++
24 - minor fix in configure for building DLL on Windows
25
26 * src/gig.cpp, src/gig.h:
27 - added partial support for MIDI rules, only the Controller
28 Triggered rule is supported so far
29 - bugfix: removed another iterator invalidation in DeleteSample
30 - bugfix in Sample::LoadSampleData*(): reset sample read position to
31 sample start before trying to (re)load sample data from file (#82)
32 - bugfix: EG3 depth parameter was not saved correctly
33 - fixed crash which occured when streaming a gig sample with
34 bi-directional (a.k.a. 'pingpong') loop type (fixes #102)
35
36 * src/RIFF.cpp, src/RIFF.h:
37 - bugfix: saving to the same file after the file size had been
38 increased made the file corrupt (#82)
39 - bugfix: refuse Chunk::Read() in case chunk has just been added, that
40 is not written physically yet (#82)
41 - bugfix: saving to the same file after the file size had been
42 decreased sometimes also made the file corrupt!
43 - bugfix: undefined behavior (e.g. endless loop) when opening zero
44 length files, now throws a RIFF::Exception instead (fixes bug #121)
45 - bugfix: destructor for base class RIFF::Chunk accessed members
46 of derived class RIFF::File, which is bad, and caused crashes
47 when using Visual C++
48 - bugfix: files that contain zero length RIFF lists were not read
49 correctly (fixes #127) (bug was introduced 2009-03-13)
50
51 Version 3.2.1 (5 Dec 2007)
52
53 * src/RIFF.cpp, src/RIFF.h:
54 - avoid Windows to perform unnecessary file stream caching which would
55 decrease disk streaming performance on Windows systems otherwise
56
57 * src/gig.cpp, src/gig.h:
58 - added File::SetAutoLoad() and File::GetAutoLoad() for allowing
59 applications to retrieve very superficial informations like amount of
60 instruments and their names in a very fast way
61
62 Version 3.2.0 (14 Oct 2007)
63
64 * packaging changes:
65 - added Mac OSX XCode project files (patch by Toshi Nagata)
66 - Dev-C++ (win32) project file is automatically updated with
67 the version info from configure.in
68 - the configure script can now be used in Windows with MSYS
69 - added a mainpage for the Doxygen API documentation
70
71 * src/DLS.cpp, src/DLS.h:
72 - added Sampler::AddSampleLoop() and Sampler::DeleteSampleLoop() methods
73 - fixed write support for big-endian systems
74 - improved handling of fixed length info strings - separate default
75 lengths can be specified for each INFO chunk
76 - added Resource::GenerateDLSID function
77 - write support fix: allow regions without mapped samples
78 - added method SetKeyRange() to the Region class which should be used
79 instead of setting the KeyRange member variable directly
80 - MoveRegion() method of Region class is now private
81 - added SetGain() method to Sampler class
82 - fixed crash when saving a file after a sample loop was added
83
84 * src/gig.cpp, src/gig.h:
85 - fixed segmentation fault in the gig::File destructor sequence which
86 happened when gig::Group informations were accessed before
87 - fixed write support for big-endian systems
88 - defined lengths of a fixed set of info strings. These strings
89 are saved when the file is written, even if they are empty.
90 - added missing parameter initalizations in sample, region and
91 instrument constructors
92 - clear unused fields when saving samples and regions
93 - fixed write support bugs: v3 dimension limits and chunksize
94 weren't saved, leverage controller of type controlchange
95 couldn't be saved, group name list chunk was placed wrong,
96 dimension region chunks also placed wrong
97 - added initialization of some fixed info strings in file and
98 instrument
99 - write support: files created by libgig will now have the RIFF
100 chunks in correct order
101 - write support: two previously unknown fields in dimension
102 definition are now saved
103 - added constants for gig file versions
104 - write support: the 3crc and einf chunks are now created or
105 updated when a file is saved (3crc contains sample checksums,
106 einf contains file statistics)
107 - write support: DLSID is now generated on the file and the
108 instruments
109 - write support: improved the default values for dimension region
110 parameters
111 - more write support fixes: crossfade parameters were not saved,
112 v3 dimension limits were not correctly initialized and saved
113 when dimensions were added or deleted, v3 wave pool offsets were
114 not saved correctly
115 - write support: 24 bit samples can now be written
116 - write support: version 3 is now the default for new files
117 - more write support fixes: the 3ewg chunk is now bigger for v3,
118 dimension regions without mapped samples are now allowed, 3gnl
119 list in v3 files now always has 128 entries, several parameters
120 where incorrectly saved due to an operator precedence mistake
121 - DeleteSample now removes all references to the deleted sample
122 - AddDimension now copies all parameters from existing dimension
123 regions and also makes sure that the samplechannel dimension is
124 placed first in the list of dimensions.
125 - added method GetParent() to class 'DimensionRegion', which returns its
126 parent Region
127 - fixed Instrument::UpdateRegionKeyTable() method which did not reset
128 unused areas
129 - added various setter methods to DimensionRegion class which take care
130 of updating lookup tables / caches.
131
132 * src/RIFF.cpp, src/RIFF.h:
133 - added File::SetByteOrder method
134 - Windows fix: saving a new file didn't work
135
136 * src/gigdump.cpp:
137 - added some missing dimension strings
138
139 Version 3.1.1 (24 Mar 2007)
140
141 * packaging changes:
142 - ported to Windows using native Windows functions for file IO
143 (provided Dev-C++ + mingw project file)
144 - only export relevant files to Doxygen API documentation
145
146 * src/gig.cpp, src/gig.h:
147 - custom velocity splits now works for gig v3 files too
148 - added support for custom splits points for other dimensions than
149 velocity (gig v3 feature)
150 - added "smart midi" and "round robin keyboard" dimensions
151 - added new method File::DeleteGroupOnly() which only deletes the given
152 group but moves all its members to another group, the other method,
153 that is File::DeleteGroup() now removes not just the group, but also
154 all the samples that belong to that group
155 - fixed crash which occured on interfering File::DeleteSample() and
156 File::GetNextSample() calls (due to iterator invalidation)
157 - fixed group names which were not saved
158 - fixed group destructor which did not remove the RIFF chunk associated
159 with the group
160 - added Instrument::MoveRegion method
161 - fixed constructor for Region, which did not initialize correctly
162 when used from Instrument::AddRegion
163 - when saving, override the gig::Regions sample reference simply by
164 the region's first dimension region's sample (avoids an exception
165 when trying to save a new instrument)
166 - fixed AddDimension() method which did not fill out all mandatory
167 dimension definition fields
168
169 * src/DLS.cpp, src/DLS.h:
170 - added Instrument::MoveRegion method
171 - fixed software info field which was wrongly stored on instruments,
172 causing an exception when trying to save a new instrument
173
174 * src/RIFF.cpp, src/RIFF.h:
175 - fixed RIFF::Chunk destructor which did not unregister previously
176 resized chunks, leading to a "zero size chunk" exception when
177 File::Save() was called
178 - added List::MoveSubChunk method
179
180 Version 3.1.0 (24 Nov 2006)
181
182 * packaging changes:
183 - changed deprecated copyright attribute to license;
184 added ldconfig to post-(un)install steps on libgig.spec (RPM)
185
186 * src/gig.cpp, src/gig.h:
187 - added support for more than one set of custom velocity splits
188 inside a region (for example different velocity split levels for
189 pedal up and pedal down)
190 - sample loop parameters are now taken from the DimensionRegion
191 instead of the wave chunk
192 - keyswitching dimension is changed from split type "normal" to
193 "bit"
194 - real support for 24 bit samples - samples are not truncated to
195 16 bits anymore
196 - support for reading of ".art" files. (Merging of .art and .gig
197 files are not implemented yet.)
198 - several fixes for the write support
199 - support for sample groups added
200
201 * src/DLS.cpp, src/DLS.h:
202 - support for reading of ".art" files
203 - removed incorrect use of memccpy in the write support (patch by
204 Jeremy Kerr)
205 - several fixes for the write support
206
207 * src/gigextract.cpp:
208 - real support for 24 bit samples
209
210 * src/gigdump.cpp:
211 - print global file informations
212 - print sample groups
213
214 * general changes:
215 - added CPPUnit test cases (at the moment primarily for automatic check
216 of Gigasampler write support)
217
218 Version 3.0.0 (28 Apr 2006)
219
220 * general changes:
221 - added write support (that is for creating and modifying RIFF, DLS and
222 gig files)
223 - loading DLS and gig files is now much more permissive, DLS and gig
224 files are now loaded even if mandatory RIFF chunks are missing
225 - fixed some memory management errors, one of them was causing a
226 crash when a multi-file gig was deallocated
227
228 * src/gig.cpp, src/gig.h:
229 - fixed the GetVelocityCutoff function, it wasn't always using the
230 VCFVelocityScale parameter when no cutoff controller was defined
231 - support for the gig v3 feature to have a number of dimension
232 splits not equal to a power of two
233 - added write support (highly experimental)
234
235 * src/DLS.cpp, src/DLS.h:
236 - fixed loading of Articulation Connections (<artl> list chunks were
237 seeked instead of ordinary <artl> data chunks)
238 - added write support (highly experimental)
239
240 * src/RIFF.cpp, src/RIFF.h:
241 - added write support
242 - Chunk::LoadChunkData() can now be called again to resize the buffer
243 after a Chunk::Resize() and before the File::Save() call to allow
244 placing the new data in the chunk's write buffer and perform the
245 resize and write operations in one rush
246
247 * src/gigdump.cpp:
248 - fixed to show the correct amount of dimension regions instead of 32
249 (patch by James Wylder)
250
251 * src/dlsdump.cpp:
252 - show for every region the name of the referenced sample
253 - show file name in quotation marks
254
255 Version 2.0.2 (15 Aug 2005)
256
257 * packaging changes:
258 - require automake (>= 1.5) for 'make -f Makefile.cvs'
259 (mandatory for 'dist-bzip2' automake option)
260
261 * src/gig.cpp, src/gig.h:
262 - support for gig v3 multi-file format (.gig, .gx01, .gx02, ...),
263 the extension files are read automatically when the samples are
264 loaded
265 - fixed the 24 bit decompression, the result should now be exact
266 instead of an approximation
267 - added VCFCutoffControllerInvert parameter and GetVelocityCutoff
268 function to DimensionRegion
269
270 * src/DLS.cpp, src/DLS.h:
271 - the upper bits of the pool table indices are read (used as
272 extension file numbers for gig v3)
273
274 * src/RIFF.cpp, src/RIFF.h:
275 - the file name is remembered in the RIFF::File object
276
277 Version 2.0.1 (12 Jun 2005)
278
279 * packaging changes:
280 - include debian/ directory on 'make dist'
281 - create a bzip2 tarball on 'make dist'
282
283 * src/gigextract.cpp:
284 - show also version of libsndfile or build version of libaudiofile when
285 using the -v switch
286 - fixed mutual link dependency to libsndfile / libaudiofile
287
288 * src/gig.cpp, src/gig.h:
289 - added DimensionRegion::GetVelocityRelease function
290
291 Version 2.0.0 (9 May 2005)
292
293 * packaging changes:
294 - fixed conditional linkage of either libsndfile or libaudiofile
295 (if none of the two exist, configure script will abort)
296 - man pages are now auto generated with the correct libgig version
297
298 * src/gig.cpp, src/gig.h:
299 - experimental support for Gigasampler v3 format;
300 64 bit file offsets are truncated to 32 bit, 24 bit samples are
301 truncated to 16 bit, up to 8 dimensions are read, additional
302 articulation informations are ignored at the moment
303 (patch by Andreas Persson)
304 - added some file format compatibility checks
305 - fixed vcf_type_lowpassturbo value (vcf_type_lowpassturbo was actually
306 never used, because the necessary check was made before
307 initialization)
308 - fixed crossfade points order (structure for big endian and little
309 endian systems was interchanged)
310 - fixed some memory leaks (patch by 'Gene', a.k.a Anders Alm)
311 - fixed crash which occured when patches did not have a sample assigned
312 to their region or dimension region (patch by Andreas Persson)
313 - support for compressed mono samples
314 - experimental support for compressed 24 bit samples
315 - fixed decompression on big-endian CPUs
316 - fixed decompression bug that truncated the last block of samples
317 - external decompression buffers can now be used for streaming samples
318 to avoid race conditions in case of multiple streaming threads
319 - added pre-calculated sample attenuation parameter
320 - added v3 "random" and "round robin" dimensions
321 - implemented progress indicator callback mechanism for loading
322 instruments and samples
323 - added functions libraryName() and libraryVersion()
324
325 * src/DLS.cpp, src/DLS.h:
326 - fixed File constructor which caused variable File::Instruments always
327 to be zero
328 - added functions libraryName() and libraryVersion()
329
330 * src/RIFF.cpp, src/RIFF.h:
331 - fixed method List::LoadSubChunks() which did not restore the original
332 position within the body of the given list chunk
333 - added functions libraryName() and libraryVersion()
334
335 * src/rifftree.cpp:
336 - added command line switch -v to show rifftree's revision and the used
337 libgig version
338
339 * src/dlsdump.cpp:
340 - added command line switch -v to show dlsdump's revision and the used
341 libgig version
342
343 * src/gigdump.cpp:
344 - added output of UnityNote, FineTune, Gain, SampleStartOffset an
345 LoopPlayCount
346 - added command line switch -v to show gigdump's revision and the used
347 libgig version
348
349 * src/gigextract.cpp:
350 - support for compressed mono samples and compressed 24 bit samples
351 - added command line switch -v to show gigextract's revision and the
352 used libgig version
353
354 Version 1.0.0 (26 Nov 2004)
355
356 * packaging changes:
357 - renamed 'libgig.pc.in' -> 'gig.pc.in' and renamed pkg-config lib name
358 'libgig' -> 'gig' as it's common practice to omit the 'lib' prefix
359 - fixed man pages automake install rule (which didn't work on Mandrake,
360 SuSE and Fedora)
361 - fixed generation of Doxygen API documentation (now also included in
362 RPM and Debian packages)
363
364 * src/gig.cpp, src/gig.h:
365 - fixed / improved accuracy of all three velocity to volume
366 transformation functions a.k.a. 'nonlinear','linear','special'
367 (patch by Andreas Persson)
368 - denormals are filtered from the velocity to volume tables
369 - bugfix for dimension region switching (wrong handling of the release
370 trigger dimension, no bit range check for dimensions of split type
371 'split_type_bit')
372 - fixed panorama value in DimensionRegion (invalid conversion from
373 signed 7 bit to signed 8 bit)
374 - added class attribute 'Layers' to class 'gig::Region'
375 - symbol prototyping of gig::Region (fixes build failure with qsampler)
376
377 * src/gigextract.cpp:
378 - added support for libsndfile (if libaudiofile and libsndfile are
379 available then libsndfile is preferred)
380
381 * src/gigdump.cpp:
382 - added printout for dimension informations (amount, type, bits, zones)
383 - added printout for velocity response curve parameters
384 - added printout for crossfade definitions
385 - added printout for panorama value for each DimensionRegion
386 - replaced printout of DLS Region layer by printout of amount of
387 Gigasampler layers
388
389 Version 0.7.1 (2 Jul 2004)
390
391 * packaging changes:
392 - added libgig.spec and libgig.pc package configurations for generating
393 Redhat packages
394 - header files included on installation.
395 - autotools-generated files removed from CVS repository.
396 - added support for generating Debian packages
397 - version of shared library can be set in configure.in
398
399 Version 0.7.0 (3 May 2004)
400
401 * general changes:
402 - various big endian specific corrections
403 (successfully tested now on PPC)
404 - minor adjustments to avoid compile errors on some systems
405 (using now pow() instead of powl() and --pedantic g++ compiler switch)
406 - libtoolized the library
407 - added man pages for the command line tools
408 (gigextract, gigdump, dlsdump, rifftree)
409
410 * src/gig.cpp, src/gig.h:
411 - fixed bug in decompression algorithm which caused it not to detect
412 the end of a stream
413 - added method GetVelocityAttenuation() to class 'DimensionRegion' which
414 takes the MIDI key velocity value as an argument and returns the
415 appropriate volume factor (0.0 ... 1.0) for the sample to be played
416 back, the velocity curve transformation functions used for this are
417 only an approximation so far
418 - fixed class attributes 'Sample::LoopStart', 'Sample::LoopEnd' and
419 'Sample::LoopSize' which reflected wrong values
420 - class attributes 'Sample::LoopStart' and 'Sample::LoopEnd' are now
421 measured in sample points instead of byte offset
422 - renamed misleading attribute name 'Sample::MIDIPitchFraction' to
423 'Sample::FineTune'
424 - added class attribute 'Sample::LoopSize'
425 - added method GetInstrument(uint index) to class 'File'
426 - added ReadAndLoop() method to class 'Sample' which is an extension to
427 the normal Read() method to honor the sample's looping information
428 while streaming from disk
429 - changed interface for 'attenuation_ctrl_t', 'eg1_ctrl_t' and
430 'eg2_ctrl_t': replaced this huge enumeration by a structure which
431 reflects the MIDI controller number in case of an ordinary control
432 change controller (this saves a huge switch-case block in the
433 application of the library user)
434 - renamed following attributes in class 'DimensionRegion':
435 'AttenuationContol' -> 'AttenuationController',
436 'InvertAttenuationControl' -> 'InvertAttenuationController',
437 'AttenuationControlTreshold' -> 'AttenuationControllerThreshold'
438 - minor fix in API documentation for method GetVelocityAttenuation() in
439 class 'DimensionRegion'
440
441 * src/RIFF.cpp, src/RIFF.h:
442 - added additional API documentation
443 - minor fix in Chunk::Read() method (only a minor efficiency issue)
444
445 * src/gigdump.cpp:
446 - added printout of samples' looping informations
447
448 Version 0.6.0 (3 Nov 2003)
449
450 * initial release

  ViewVC Help
Powered by ViewVC