1 |
Home |
Home |
2 |
==== |
==== |
3 |
You can always find the latest version of libgig at: |
You can always find the latest version of libgig at: |
4 |
http://stud.hs-heilbronn.de/~cschoene/projects/libgig/ |
http://www.linuxsampler.org/libgig/ |
5 |
|
|
6 |
Content |
Content |
7 |
======= |
======= |
8 |
libgig actually consists of three parts: |
libgig actually consists of three major parts: |
9 |
|
|
10 |
- RIFF classes (RIFF.h, RIFF.cpp): Provides convenient methods to parse and |
- RIFF classes (RIFF.h, RIFF.cpp): Provides convenient methods to parse and |
11 |
access arbitrary RIFF files. |
access arbitrary RIFF files. |
15 |
data. |
data. |
16 |
- gig classes (gig.h, gig.cpp): These are based on the DLS classes and |
- gig classes (gig.h, gig.cpp): These are based on the DLS classes and |
17 |
provide the necessary extensions for |
provide the necessary extensions for |
18 |
the Gigasampler file format. |
the Gigasampler/GigaStudio file format. |
19 |
|
|
20 |
Beside the actual library there are four example applications: |
Despite its name, libgig also provides (since version 4.0.0) support for |
21 |
|
other sampler file formats as well: |
22 |
|
|
23 |
|
- SoundFont classes (SF.h, SF.cpp): They provide support for the very popular |
24 |
|
SoundFont v1 and v2 format (.sf2). |
25 |
|
|
26 |
|
- KORG classes (Korg.h, Korg.cpp): Provides support for sample based sounds |
27 |
|
used on many KORG synthesizer keyboards. |
28 |
|
|
29 |
|
- Akai classes (Akai.h): Currently S1000, S01, S2000 and S3000 |
30 |
|
series are supported. |
31 |
|
|
32 |
|
Additionally libgig contains the following separate API: |
33 |
|
|
34 |
|
- Serialization classes (Serialization.h, Serialization.cpp): |
35 |
|
Framework to serialize and deserialize |
36 |
|
the runtime state of native C++ objects |
37 |
|
(for saving and restoring their states |
38 |
|
as abstract data). |
39 |
|
|
40 |
|
Beside the actual library there are following example applications: |
41 |
|
|
42 |
gigdump: Demo app that prints out the content of a .gig file. |
gigdump: Demo app that prints out the content of a .gig file. |
43 |
gigextract: Extracts samples from a .gig file. |
gigextract: Extracts samples from a .gig file. |
44 |
|
gigmerge: Merges several .gig files to one .gig file. |
45 |
|
gig2mono: Converts .gig files from stereo to mono. |
46 |
|
gig2stereo: Converts .gig files to true interleaved stereo sounds. |
47 |
dlsdump: Demo app that prints out the content of a DLS file. |
dlsdump: Demo app that prints out the content of a DLS file. |
48 |
|
korgdump: Prints out the content of the various KORG file types. |
49 |
|
korg2gig: Convert KORG sound file to Gigasampler/GigaStudio format. |
50 |
|
sf2dump: Prints out the content of a .sf2 file. |
51 |
|
sf2extract: Extracts audio samples from a .sf2 file. |
52 |
rifftree: Tool that prints out the RIFF tree of an arbitrary RIFF |
rifftree: Tool that prints out the RIFF tree of an arbitrary RIFF |
53 |
file. |
file. |
54 |
|
akaidump: Dump an AKAI media i.e. from a CDROM drive as disk image file |
55 |
|
to your hard disk drive. |
56 |
|
akaiextract: Extracts samples from an Akai disk image, either from a media |
57 |
|
(i.e. CDROM or Zip drive) for from a AKAI disk image file. |
58 |
|
|
59 |
Since version 3.0.0 libgig also provides write support, that is for |
Since version 3.0.0 libgig also provides write support, that is for |
60 |
creating modifying .gig, DLS and RIFF files. |
creating modifying .gig, DLS and RIFF files. |
61 |
|
|
62 |
Requirements |
Requirements |
63 |
============ |
============ |
64 |
POSIX systems (e.g. Linux, OS X): |
POSIX systems (e.g. Linux, macOS): |
65 |
--------------------------------- |
--------------------------------- |
66 |
|
|
67 |
You need at least to have libtool installed to be able to build the |
You need at least to have libtool installed to be able to build the |
79 |
Makefile.in, etc.) then you need to have automake (>= 1.5) and autoconf |
Makefile.in, etc.) then you need to have automake (>= 1.5) and autoconf |
80 |
installed. |
installed. |
81 |
|
|
82 |
Non-POSIX systems (e.g. Windows): |
Windows: |
83 |
--------------------------------- |
-------- |
84 |
|
|
85 |
If you don't have a POSIX system, you have to set 'POSIX' to '0' in RIFF.h. |
The precompiled versions of libgig (and its tools) should be compatible |
86 |
Instead of using POSIX calls then standard C calls will be used for file |
with any Windows operating system of at least Win95 or younger. Notice |
87 |
access. This applies e.g. to Windows systems. I would appreciate if |
that all example / demo applications coming with libgig are pure console |
88 |
somebody sends me his MS Visual Studio / .NET, Borland C++ Builder or |
applications, thus you won't see a GUI showing up! :) |
89 |
Apple XCode project file! This might help others to conveniently compile |
|
90 |
libgig on those platforms as well. |
If you want to compile libgig and its tools by yourself, please also |
91 |
|
notice the requirements under "Compiling for Windows". |
92 |
|
|
93 |
|
Other Operating Systems: |
94 |
|
------------------------ |
95 |
|
|
96 |
|
libgig was written to compile for any operating system, using standard C |
97 |
|
library functions. However the latest versions of libgig lack a portable |
98 |
|
implementation of one tiny method called RIFF::File::ResizeFile(). So you |
99 |
|
would either have to add native OS API calls for that particular method, |
100 |
|
that is dependant to your OS, or you have to add a portable |
101 |
|
implementation. No matter which way you choose, please let us know! :) |
102 |
|
|
103 |
Compiling |
Compiling for Linux |
104 |
========= |
=================== |
105 |
You can either compile the sources and install the library directly on |
You can either compile the sources and install the library directly on |
106 |
your system or you can create Redhat or Debian packages. |
your system or you can create Redhat or Debian packages. |
107 |
|
|
149 |
On success, the resulting rpm(s) can usually be found under the proper |
On success, the resulting rpm(s) can usually be found under the proper |
150 |
"/usr/src/<rpmdir>/RPMS/<arch>" directory. |
"/usr/src/<rpmdir>/RPMS/<arch>" directory. |
151 |
|
|
152 |
|
Compiling for Windows |
153 |
|
===================== |
154 |
|
|
155 |
|
libgig and its tools can be compiled for Windows using Bloodshed Dev-C++, |
156 |
|
which is a free (GPL) C++ integrated development environment for Windows. |
157 |
|
It is also possible to use MSYS from MinGW, which allows you to use |
158 |
|
'./configure && make' like the linux builds. |
159 |
|
|
160 |
|
You can download Dev-C++ here: |
161 |
|
|
162 |
|
http://www.bloodshed.net/devcpp.html |
163 |
|
|
164 |
|
Make sure you install a version with Mingw integrated. |
165 |
|
|
166 |
|
a) Compiling libgig.dll |
167 |
|
|
168 |
|
Simply open the project file "win32/libgig.dev" either directly in Dev-C++ |
169 |
|
or by double clicking on the project file in the Windows explorer, then |
170 |
|
click on "Compile" in the Dev-C++ menu and that's it! After compilation |
171 |
|
finished, you can find the files "libgig.dll", "libgig.a" and |
172 |
|
"liblibgig.def" in the "win32" directory. |
173 |
|
|
174 |
|
b) Compiling the example tools "rifftree", "dlsdump" and "gigdump" |
175 |
|
|
176 |
|
You need to have libgig.dll compiled as described in a). Then you can |
177 |
|
compile the respective tool by simply opening the respective project |
178 |
|
(.dev) file and clicking on "Compile" from the Dev-C++ menu. After |
179 |
|
compilation you can find the respective .exe file in the "win32" |
180 |
|
directory. |
181 |
|
|
182 |
|
c) Compiling the example tool "gigextract" |
183 |
|
|
184 |
|
You need to have libgig.dll compiled as described in a). Also you need |
185 |
|
libsndfile (as DLL) which is used to create the .wav files. You can |
186 |
|
download libsndfile already precompiled as DLL here: |
187 |
|
|
188 |
|
http://www.mega-nerd.com/libsndfile/ |
189 |
|
|
190 |
|
Extract the .zip file i.e. to "C:\". The libsndfile .dll file should then |
191 |
|
be i.e. under "C:\libsndfile-1_0_17". Beside the .dll file, make sure |
192 |
|
libsndfile's .lib file exists in that directory as well. If the .lib file |
193 |
|
does not exist yet, you have to create it with: |
194 |
|
|
195 |
|
dlltool --input-def libsndfile-1.def --output-lib libsndfile-1.lib |
196 |
|
|
197 |
|
Then you have to ensure the settings of gigextract's Dev-C++ project file |
198 |
|
are pointing to the correct location of your local copy of libsndfile. For |
199 |
|
that click in the Dev-C++ menu on "Project" -> "Project Options". Then |
200 |
|
click on the tab "Parameter" and make sure the path to "libsndfile-1.lib" |
201 |
|
in the "Linker" list view is correct. Then click on the tab "Directories" |
202 |
|
and then on the tab "Include Directories" and make sure the path to |
203 |
|
libsndfile points to the correct location there as well. |
204 |
|
|
205 |
|
After that you should finally be able to compile "gigextract" by clicking |
206 |
|
on "Compile" in the Dev-C++ menu. After compilation succeeded, you can |
207 |
|
find the "gigextract.exe" file in the "win32" directory. |
208 |
|
|
209 |
Test Cases |
Test Cases |
210 |
========== |
========== |
211 |
The libgig sources come with a tiny console application which allows to |
The libgig sources come with a tiny console application which allows to |
222 |
|
|
223 |
License |
License |
224 |
======= |
======= |
225 |
libgig and its tools are released under the GNU General Public License. |
libgig and its tools are released under the GNU General Public License (GPL). |
226 |
|
|
227 |
|
libakai and its tools are released under the GNU Lesser General Public (LGPL). |
228 |
|
Due to its different license model the Akai support part is built as separate |
229 |
|
DLL (.so) file. |
230 |
|
|
231 |
API Documentation |
API Documentation |
232 |
================= |
================= |
246 |
You might also try to run the "Test Cases" coming with libgig (see above), |
You might also try to run the "Test Cases" coming with libgig (see above), |
247 |
especially in case you are running on an odd system. |
especially in case you are running on an odd system. |
248 |
|
|
249 |
|
Trademarks |
250 |
|
========== |
251 |
|
Tascam, Gigasampler, GigaStudio, KORG, Trinity, Triton, OASYS, M3, Kronos |
252 |
|
and Akai are trademarks of their respective owners. |
253 |
|
|
254 |
Credits |
Credits |
255 |
======= |
======= |
256 |
The initial library was based on the reverse engineering effort of |
The initial library (Gigasampler part) was based on the reverse engineering |
257 |
Paul Kellett and Ruben van Royen. We owe current support for the quite new |
effort of Paul Kellett and Ruben van Royen. We owe current support for the |
258 |
Gigasampler v3 format to Andreas Persson. Please also have a look at the |
Gigasampler v3/v4 format to Andreas Persson. Please also have a look at the |
259 |
ChangeLog for all those who contributed. Thanks to all of you for your |
ChangeLog for all those who contributed. |
260 |
great work! |
|
261 |
|
Akai support files are a ported version of Sébastien Métrot's libakai. The |
262 |
|
original libakai only supported Mac and Windows. This forked version of |
263 |
|
libakai now also supports Linux and other POSIX compliant operating systems |
264 |
|
as well and does not have a dependency to libngl as the original libakai had. |
265 |
|
|
266 |
|
The SoundFont 2 file format C++ classes were written by Grigor Iliev. |
267 |
|
|
268 |
|
Thanks to all of you for your great work! |
269 |
|
|
270 |
Christian Schoenebeck <cuse@users.sourceforge.net> |
Christian Schoenebeck <cuse@users.sourceforge.net> |