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

Contents of /libgig/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2381 - (show annotations) (download)
Sun Dec 2 16:30:30 2012 UTC (11 years, 3 months ago) by persson
File size: 19873 byte(s)
* sf2 bugfix: GetPan always returned -1, 0 or 1

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

  ViewVC Help
Powered by ViewVC