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

Annotation of /libgig/trunk/NEWS

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4076 - (hide annotations) (download)
Fri Jan 26 15:59:01 2024 UTC (3 months ago) by schoenebeck
File size: 14610 byte(s)
* Preparations for new release (4.4.0).
1 schoenebeck 4076 Version 4.4.0 (26 Jan 2024)
2    
3     This release introduces a new command line tool 'wav2gig' which allows to
4     automatically create a .gig file from a directory of .wav files. This can
5     safe quite some time when creating a new and large .gig instrument from
6     scratch, as this tool automatically extracts info such as root note, velocity
7     and loop points either from the .wav files themselves (if possible), or from
8     their file names. It comes with a bunch of options to override exact
9     behaviour to whatever the naming scheme of your .wav files are for instance.
10     Refer to the new 'wav2.gig' man page for details.
11    
12     A long sitting API issue had been mitigated in this release: the ancient
13     GetFirstFoo() and GetNextFoo() style of methods were always error prone.
14     Those methods are now marked as deprecated and GetFoo(size_t index) or
15     GetFooAt(size_t index) methods were added as reentrant-safe replacement.
16    
17     Another important multi-threading issue for applications based on libgig have
18     been addressed on API level: the RIFF::File class now provides a new method
19     SetIOPerThread(bool enable) to activate a transparent mode of separation for
20     file streaming by libgig. By default this feature is off and libgig therefore
21     behaves as in previous releases, which means application threads would
22     concurrently change file I/O positions when accessing libgig file access
23     methods simultaniously, like e.g. streaming audio data from disk or loading or
24     saving any kind of other data from or to the file directly might
25     unintentionally change threads' file I/O positions between each other. By
26     activating this new libgig feature, libgig automatically detects individual
27     threads (as callers of affected libgig methods) and separates the file I/O
28     positions for each application thread automatically, as if each thread had
29     opened the file separately by itself. This feature comes with a slight runtime
30     overhead cost, but has the advantage that it keeps application code simple, as
31     it usually just requires to add only one line of code to make a multi-threaded
32     applications work as expected, while still sharing the same libgig objects and
33     without duplicating data or draining RAM resources.
34    
35     The rest of changes are numerous fixes, please refer to ChangeLog for details.
36    
37 schoenebeck 3878 Version 4.3.0 (9 May 2021)
38    
39     From this release on libgig requires at least a C++11 compliant compiler to
40     build from its sources. Another new requirement is the presence of some UUID
41     generating function which must be provided by the underlying OS. Previously
42     the presence of an UUID generating function was optional in libgig for many
43     years. Its absence in the past only meant that you were unable to load your
44     own gig files (e.g. created from scratch with Gigedit by yourself) into
45     Tascam's GigaStudio software, it did not mean though any restriction in
46     conjunction with LinuxSampler in the past. The latter has changed in this
47     release. Without UUIDs in gig files you would now also get misbehaviours
48     even while staying entirely in the Linux eco space, and hence this is now a
49     hard build requirement for libgig.
50    
51     Most of the changes in the gig classes in this release are about gig file
52     format extensions used by recent versions of LinuxSampler. For instance you
53     now have much more control over what LFO wave form shall be used (e.g. saw and
54     square, whereas the original GigaStudio was alwas limited to sine only) and
55     other LFO parameters like their start phase. There are also a bunch of new
56     audio filter types available in conjuction with the latest LinuxSampler
57     version, e.g. additional lowpass filter types with 2, 4 and 6 poles,
58     additional highpass filters with 1, 2, 4 and 6 poles, a new bandpass filter
59     with 2 poles and finally also a bandreject filter with 2 poles. Another gig
60     format extension was added concerning NKSP instrument scripts: LinuxSampler's
61     new NKSP "patch" variable type is now supported in this version of libgig.
62     Please refer to the LinuxSampler website for a more detailed explanation about
63     this new NKSP instrument script feature.
64    
65     And as always there are a various fixes in this release, foremost sane output
66     compatibility with GigaStudio 3 was broken, so that GigaStudio version might
67     not have accepted gig files changed by you with the prior version of libgig.
68     This issue is now fixed in this release.
69    
70     And last but not least the Serialization framework was extended to support now
71     various common C++ STL classes like std::string, std::vector, std::map and
72     std::set out of the box. So no custom code is required aymore to
73     serialize/deserialize such very common native C++ object types, which reduces
74     code complexity for serializing/deserializing complex C++ projects a lot.
75    
76 schoenebeck 3524 Version 4.2.0 (25 Jul 2019)
77    
78     This is a maintenance release with important fixes; especially it fixes
79     issues with gig files in GigaStudio v4 format, however this release also
80     introduces some few new features and additions. Most notably it is now
81     possible to write large gig files splitted over extension files (.gx01,
82     .gx02, ...). Previously it was only possible to read gig files with
83     extension files, but libgig only supported to save large gig files as one
84     single, monolithic gig file. The problem with the latter was that gig
85     files >= 2 GB could only be read by libgig, but could not be loaded with
86     any version of GigaStudio. So this solves that legacy support issue.
87     Apart from that, a bunch of convenience methods have been added.
88    
89 schoenebeck 3370 Version 4.1.0 (25 Nov 2017)
90    
91     This release adds support for files much larger than 2 GB for GigaStudio /
92     Gigasampler (.gig), DLS, as well as for RIFF files in general. This file size
93     limitation existed for a very long time due to the RIFF format's historical,
94     internal 32 bit file offsets. To circumvent this file size limitation the
95     concept of so called "extension files" was added in the past to the
96     GigaStudio format, which means that the GigaStudio instrument editor splitted
97     the respective overall instrument file into a set of files (.gig, .gx01,
98     .gx02, ...), each being max. 2 GB in size, and all of them were expected to be
99     located in the same directory for the sampler to load the entire large
100     instrument successfully. libgig always supported only reading such gig
101     extension files, however libgig never supported to create .gig files with
102     extension files, nor did it support modifying existing ones. In this release
103     it was necessary to finally get rid of this overall file size limitation in
104     libgig. Now when that concept of extension files was introduced years ago, it
105     made sense at that point, because there were still many systems out there
106     which still had no support for large files (on either OS or file system
107     level). However today even on low end mobile devices support for large files
108     is already a broad standard. Accordingly instead of adding write support for
109     extension files in libgig, the problem was addressed at its root by
110     transparently using appropriate, automatic file offset sizes. So when writing
111     .gig/DLS/RIFF files smaller than 2 GB there are still 32 bit file offsets
112     being used by libgig. Accordingly such files are still backward compatible
113     with older software. However if the overall file size to be written is 2 GB or
114     larger, then 64 bit file offsets are automatically used by libgig instead.
115     Note though that due to that circumstance such files >= 2 GB are not backward
116     compatible with older versions of libgig, nor could they be loaded with the
117     original GigaStudio software.
118    
119     Another major new feature in this libgig release is the entirely new
120     serialization API (Serialization.h) which provides a powerful and easy way
121     to serialize and deserialize an arbitrary set of native C++ objects into an
122     abstract data stream. Which means you can simply save the entire runtime state
123     of an application to a file or send it as data over "wire" (i.e. over network
124     or to another process) and restore that runtime state from that data there at
125     any time. In contrast to other C++ serialization frameworks out there, this
126     framework provides two major benefits:
127    
128     1. This serialization framework is designed to be very robust regarding
129     potential versioning changes of the native C++ classes being
130     (de)serialized. So even if the C++ classes have seen massive software
131     changes between the point where they were serialized and the point where
132     they are to be deserialized; for example if class member variables of
133     serialized C++ objects were renamed in meantime, or if variable offsets, or
134     variables' data types had been changed, then the deserialization algorithm
135     can still cope with such common software changes automatically in many
136     cases, that is as long as the deserialization algorithm can "guess" what
137     the changes were exactly. If the serialization framework is unable to
138     automatically detect the precise software changes, then it will abort the
139     deserialization task with an exception and an error message stating that
140     the software versions are incompatible.
141    
142     2. This serialization framework supports "partial" deserialization. That
143     means it not only allows to restore an entire runtime state, but it also
144     allows to only restore an arbitrary desired subset of information
145     from the previously serialized data stream, while leaving all other data
146     of the running C++ objects untouched. The serialization framework also
147     incorporates a reflection API which allows applications to implement
148     convenient editors on top of such serialized data, i.e. allowing end users
149     to pick or alter specific information within the serialized data.
150    
151     The new Serialization framework is already embedded into the gig classes of
152     libgig, and it is used as basis for the new powerful macro features in the
153     gigedit instrument editor application. Refer to the release notes of
154     gigedit 1.1.0 for more information about those new macro features in gigedit.
155    
156 schoenebeck 2785 Version 4.0.0 (14 Jul 2015)
157    
158     This major release of libgig adds support for other file formats:
159     SoundFont 2 (.sf2), KORG multi sample instruments (.KSF, .KMP) and AKAI
160 schoenebeck 4064 format sounds. The AKAI classes are a fork of S��bastien M��trot's libakai and
161 schoenebeck 2785 since it is released under a different license (LGPL) than libgig is (GPL),
162     the AKAI classes are built as separate DLL file. All other classes of those
163     new file formats are built and bundled with the existing libgig DLL. Thanks
164     to Grigor Iliev for his work on the SoundFont 2 classes! Please note that
165     there is currently no support for KORG's .PCG file format yet. That's because
166     this file format changes a lot and is not only dependent to the precise KORG
167     keyboard model, but also to the precise OS version on the same model. And
168     since basic conversion can also be done by just accessing the .KSF and .KMP
169     files (sample data, loop informations), the current classes should be
170     sufficient for many tasks. Adding support for KORG's .PCG files is not
171     planned at the moment.
172    
173     Various new command line tools have been added as well to dump, extract and
174     convert between all those file formats now. Each one of it has a man page,
175     so please refer to the respective man page of the individual command line
176     tool for details.
177    
178     The GigaStudio/Gigasampler classes received a load of fixes during the last
179     six years. And support for features introduced with the last official
180     GigaStudio 4 software (RIP) were added, for instance support for so called
181     "iMIDI Rules". Those rules allow i.e. to trigger notes by MIDI CC and to
182     define a sample set for legato playing style. In the meantime it seems as if
183     the GigaStudio software has seen its last version with GigaStudio 4, because
184     Tascam discontinued this product and the intellectual property of GigaStudio
185     had been sold several times between companies. It is currently not possible
186     to buy a new copy of GigaStudio anymore and we personally don't expect that
187     this situation will ever change.
188    
189     Does this also mean the end of new features for libgig? Not really! Actually
190     we already started to add new features to the GigaStudio/Gigasampler format
191     which never existed with the GigaStudio/Gigasampler software: The most
192     noteworthy new feature added by us is support for real-time instrument
193     scripts. These are little "programs" which you can bundle with your .gig
194     sounds to add a custom behavior to your sounds when playing them with i.e.
195     LinuxSampler. Find out more about this new major feature on:
196    
197     http://doc.linuxsampler.org/Instrument_Scripts/
198    
199     There are also some more minor extensions to the .gig format, for example
200     support for far more MIDI CC's than originally allowed by the GigaStudio
201     software. Obviously all those custom extensions will not work with any
202     version of the official GigaStudio software, those new features will only
203     work with a recent version of LinuxSampler and gigedit at the moment.
204    
205     Besides those major changes, a load of convenient methods have been added to
206     the existing libgig classes to reduce the overall effort working with all
207     those file formats with software applications based on libgig.
208    
209 schoenebeck 1953 Version 3.3.0 (30 Jul 2009)
210    
211     Partial support for MIDI rules, the rest are just bug fixes.
212    
213 schoenebeck 1549 Version 3.2.1 (5 Dec 2007)
214    
215     Just some minor performance optimizations.
216    
217 schoenebeck 1416 Version 3.2.0 (14 Oct 2007)
218 schoenebeck 1406
219 schoenebeck 1416 This release once again comes with a huge bunch of fixes regarding
220     Gigasampler write support. Instrument files created from scratch with
221     libgig can finally be loaded into the Gigasampler application as well.
222    
223 schoenebeck 1406 libgig's home has moved! From now on you can find it on:
224     http://www.linuxsampler.org/libgig/
225     Please update your links and bookmarks!
226    
227 schoenebeck 1116 Version 3.1.1 (24 Mar 2007)
228    
229     This is a bugfix release, fixing one important bug regarding gig v3
230     support (custom split points) and a lot of bugs regarding .gig write
231     support. And this is the first official release for the Windows platform.
232    
233 schoenebeck 933 Version 3.1.0 (24 Nov 2006)
234 schoenebeck 860
235     libgig's home has moved (slightly) from
236     http://stud.fh-heilbronn.de/~cschoene/projects/libgig/ to
237     http://stud.hs-heilbronn.de/~cschoene/projects/libgig/, please update your
238     links and bookmarks! This is due to the recent renaming of the University
239     of Heilbronn, which kindly hosts this and other projects.
240    
241 schoenebeck 854 Version 3.0.0 (28 Apr 2006)
242    
243     This is the first release which allows to create new and modify existing
244     .gig files. Beside that it also includes another bunch of bug fixes and
245     Gigasampler v3 support improvements.

  ViewVC Help
Powered by ViewVC