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

Contents of /libgig/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2133 - (show annotations) (download)
Tue Sep 28 19:41:13 2010 UTC (13 years, 6 months ago) by persson
File size: 19244 byte(s)
* minor Makefile fix for parallel make

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

  ViewVC Help
Powered by ViewVC