1 |
Home |
2 |
==== |
3 |
You can always find the latest version of libgig at: |
4 |
http://www.linuxsampler.org/libgig/ |
5 |
|
6 |
Content |
7 |
======= |
8 |
libgig actually consists of three parts: |
9 |
|
10 |
- RIFF classes (RIFF.h, RIFF.cpp): Provides convenient methods to parse and |
11 |
access arbitrary RIFF files. |
12 |
- DLS classes (DLS.h, DLS.cpp): They're using the RIFF classes to parse |
13 |
DLS (Downloadable Sounds) Level 1 and 2 |
14 |
files and provide abstract access to the |
15 |
data. |
16 |
- gig classes (gig.h, gig.cpp): These are based on the DLS classes and |
17 |
provide the necessary extensions for |
18 |
the Gigasampler file format. |
19 |
|
20 |
Despite its name, libgig also provides support for other sampler file |
21 |
formats as well today: |
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 |
Beside the actual library there are following example applications: |
30 |
|
31 |
gigdump: Demo app that prints out the content of a .gig file. |
32 |
gigextract: Extracts samples from a .gig file. |
33 |
gigmerge: Merges several .gig files to one .gig file. |
34 |
gig2mono: Converts .gig files from stereo to mono. |
35 |
dlsdump: Demo app that prints out the content of a DLS file. |
36 |
korgdump: Prints out the content of the various KORG file types. |
37 |
korg2gig: Convert KORG sound file to Gigasampler/GigaStudio format. |
38 |
rifftree: Tool that prints out the RIFF tree of an arbitrary RIFF |
39 |
file. |
40 |
|
41 |
Since version 3.0.0 libgig also provides write support, that is for |
42 |
creating modifying .gig, DLS and RIFF files. |
43 |
|
44 |
Requirements |
45 |
============ |
46 |
POSIX systems (e.g. Linux, OS X): |
47 |
--------------------------------- |
48 |
|
49 |
You need at least to have libtool installed to be able to build the |
50 |
library with "./configure && make". |
51 |
|
52 |
Additionally you need to have either libaudiofile (>= 0.2.3) or |
53 |
libsndfile (>= 1.0.2) installed which is mandatory to be able to compile |
54 |
the 'gigextract' example application. But of course 'gigextract' is still |
55 |
just an example application, so it would make sense to compile it only if |
56 |
one of those libraries are available. That would remove that hard |
57 |
dependency to those two libs. But that's not a priority for me now. |
58 |
Note: for Windows systems only libsndfile is available. |
59 |
|
60 |
If you want to regenerate all autotools build files (that is configure, |
61 |
Makefile.in, etc.) then you need to have automake (>= 1.5) and autoconf |
62 |
installed. |
63 |
|
64 |
Windows: |
65 |
-------- |
66 |
|
67 |
The precompiled versions of libgig (and its tools) should be compatible |
68 |
with any Windows operating system of at least Win95 or younger. Notice |
69 |
that all example / demo applications coming with libgig are pure console |
70 |
applications, thus you won't see a GUI showing up! :) |
71 |
|
72 |
If you want to compile libgig and its tools by yourself, please also |
73 |
notice the requirements under "Compiling for Windows". |
74 |
|
75 |
Other Operating Systems: |
76 |
------------------------ |
77 |
|
78 |
libgig was written to compile for any operating system, using standard C |
79 |
library functions. However the latest versions of libgig lack a portable |
80 |
implementation of one tiny method called RIFF::File::ResizeFile(). So you |
81 |
would either have to add native OS API calls for that particular method, |
82 |
that is dependant to your OS, or you have to add a portable |
83 |
implementation. No matter which way you choose, please let us know! :) |
84 |
|
85 |
Compiling for Linux |
86 |
=================== |
87 |
You can either compile the sources and install the library directly on |
88 |
your system or you can create Redhat or Debian packages. |
89 |
|
90 |
a) Compiling and installing directly |
91 |
|
92 |
Call './configure && make' on the console to compile the library, all |
93 |
tools and demo applications, documentation and install them with |
94 |
'make install'. The latter has to be called as root. |
95 |
|
96 |
If you are compiling from CVS you have to call 'make -f Makefile.cvs' |
97 |
to generate all autotools build files before calling |
98 |
'./configure && make'. |
99 |
|
100 |
You can use 'make distclean' and probably 'make -f Makefile.cvs clean' |
101 |
to clean up everything again. The latter will also delete all automatic |
102 |
generated autools build files. |
103 |
|
104 |
b) Creating Debian packages |
105 |
|
106 |
Use 'dpkg-buildpackage -rfakeroot -b' to compile and create the Debian |
107 |
packages. This will generate 3 Debian packages: |
108 |
|
109 |
libgig: Contains the shared library files. |
110 |
libgig-dev: Contains the header files and documentation for building |
111 |
applications using libgig. |
112 |
gigtools: Contains the tools and demo applications. |
113 |
|
114 |
You can use 'fakeroot debian/rules clean' to clean up everything again. |
115 |
|
116 |
c) Creating Redhat packages |
117 |
|
118 |
You need to have the rpmbuild tool installed and properly configured to |
119 |
create RPM packages. To create the RPM packages do the following: |
120 |
|
121 |
* Get .spec file generated by ./configure and edit it as appropriate. |
122 |
|
123 |
* Copy the source tarball to "/usr/src/<rpmdir>/SOURCES" directory, |
124 |
where <rpmdir> is dependent to the system you are using. For SuSE |
125 |
<rmpdir> will be "packages", for Mandrake <rpmdir> is "RPM" and for |
126 |
Redhat / Fedora <rpmdir> always equals "redhat". |
127 |
|
128 |
* Build the rpm(s) by invoking 'rpmbuild -bb <specfile>' from the |
129 |
command line. |
130 |
|
131 |
On success, the resulting rpm(s) can usually be found under the proper |
132 |
"/usr/src/<rpmdir>/RPMS/<arch>" directory. |
133 |
|
134 |
Compiling for Windows |
135 |
===================== |
136 |
|
137 |
libgig and its tools can be compiled for Windows using Bloodshed Dev-C++, |
138 |
which is a free (GPL) C++ integrated development environment for Windows. |
139 |
It is also possible to use MSYS from MinGW, which allows you to use |
140 |
'./configure && make' like the linux builds. |
141 |
|
142 |
You can download Dev-C++ here: |
143 |
|
144 |
http://www.bloodshed.net/devcpp.html |
145 |
|
146 |
Make sure you install a version with Mingw integrated. |
147 |
|
148 |
a) Compiling libgig.dll |
149 |
|
150 |
Simply open the project file "win32/libgig.dev" either directly in Dev-C++ |
151 |
or by double clicking on the project file in the Windows explorer, then |
152 |
click on "Compile" in the Dev-C++ menu and that's it! After compilation |
153 |
finished, you can find the files "libgig.dll", "libgig.a" and |
154 |
"liblibgig.def" in the "win32" directory. |
155 |
|
156 |
b) Compiling the example tools "rifftree", "dlsdump" and "gigdump" |
157 |
|
158 |
You need to have libgig.dll compiled as described in a). Then you can |
159 |
compile the respective tool by simply opening the respective project |
160 |
(.dev) file and clicking on "Compile" from the Dev-C++ menu. After |
161 |
compilation you can find the respective .exe file in the "win32" |
162 |
directory. |
163 |
|
164 |
c) Compiling the example tool "gigextract" |
165 |
|
166 |
You need to have libgig.dll compiled as described in a). Also you need |
167 |
libsndfile (as DLL) which is used to create the .wav files. You can |
168 |
download libsndfile already precompiled as DLL here: |
169 |
|
170 |
http://www.mega-nerd.com/libsndfile/ |
171 |
|
172 |
Extract the .zip file i.e. to "C:\". The libsndfile .dll file should then |
173 |
be i.e. under "C:\libsndfile-1_0_17". Beside the .dll file, make sure |
174 |
libsndfile's .lib file exists in that directory as well. If the .lib file |
175 |
does not exist yet, you have to create it with: |
176 |
|
177 |
dlltool --input-def libsndfile-1.def --output-lib libsndfile-1.lib |
178 |
|
179 |
Then you have to ensure the settings of gigextract's Dev-C++ project file |
180 |
are pointing to the correct location of your local copy of libsndfile. For |
181 |
that click in the Dev-C++ menu on "Project" -> "Project Options". Then |
182 |
click on the tab "Parameter" and make sure the path to "libsndfile-1.lib" |
183 |
in the "Linker" list view is correct. Then click on the tab "Directories" |
184 |
and then on the tab "Include Directories" and make sure the path to |
185 |
libsndfile points to the correct location there as well. |
186 |
|
187 |
After that you should finally be able to compile "gigextract" by clicking |
188 |
on "Compile" in the Dev-C++ menu. After compilation succeeded, you can |
189 |
find the "gigextract.exe" file in the "win32" directory. |
190 |
|
191 |
Test Cases |
192 |
========== |
193 |
The libgig sources come with a tiny console application which allows to |
194 |
automatically test libgig's functions on your system. This test |
195 |
application is not compiled by default, you have to compile it explicitly |
196 |
with the following commands on the console (cppunit has to be installed): |
197 |
|
198 |
cd src/testcases |
199 |
make libgigtests |
200 |
|
201 |
and then run the test application from the same directory with: |
202 |
|
203 |
./libgigtests |
204 |
|
205 |
License |
206 |
======= |
207 |
libgig and its tools are released under the GNU General Public License. |
208 |
|
209 |
API Documentation |
210 |
================= |
211 |
If you have Doxygen installed you can generate the API documentation by |
212 |
running 'make docs' in the sources' top level directory. The API |
213 |
documentation will be generated in the 'doc' subdirectory. |
214 |
|
215 |
Patches |
216 |
======= |
217 |
If you have bug fixes or improvements, your patches are always welcome! |
218 |
Send them either directly to me or to the LinuxSampler developer's mailing |
219 |
list <linuxsampler-devel@lists.sourceforge.net>. |
220 |
|
221 |
Bugs |
222 |
==== |
223 |
Please use http://bugs.linuxsampler.org to check and report possible bugs. |
224 |
You might also try to run the "Test Cases" coming with libgig (see above), |
225 |
especially in case you are running on an odd system. |
226 |
|
227 |
Trademarks |
228 |
========== |
229 |
Tascam, Gigasampler, GigaStudio, KORG, Trinity, Triton, OASYS, M3 and Kronos |
230 |
are trademarks of their respective owners. |
231 |
|
232 |
Credits |
233 |
======= |
234 |
The initial library (Gigasampler part) was based on the reverse engineering |
235 |
effort of Paul Kellett and Ruben van Royen. We owe current support for the |
236 |
Gigasampler v3 format to Andreas Persson. Please also have a look at the |
237 |
ChangeLog for all those who contributed. Thanks to all of you for your great |
238 |
work! |
239 |
|
240 |
Christian Schoenebeck <cuse@users.sourceforge.net> |