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

Contents of /libgig/trunk/README

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4075 - (show annotations) (download)
Fri Jan 26 14:45:26 2024 UTC (2 months, 2 weeks ago) by schoenebeck
File size: 13345 byte(s)
README: use https URL

1 Home
2 ====
3 You can always find the latest version of libgig at:
4 https://www.linuxsampler.org/libgig/
5
6 Content
7 =======
8 libgig actually consists of three major 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/GigaStudio file format.
19
20 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.
43 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 wav2gig: Creates a new .gig file from a set of .wav files.
48 dlsdump: Demo app that prints out the content of a DLS file.
49 korgdump: Prints out the content of the various KORG file types.
50 korg2gig: Convert KORG sound file to Gigasampler/GigaStudio format.
51 sf2dump: Prints out the content of a .sf2 file.
52 sf2extract: Extracts audio samples from a .sf2 file.
53 rifftree: Tool that prints out the RIFF tree of an arbitrary RIFF
54 file.
55 akaidump: Dump an AKAI media i.e. from a CDROM drive as disk image file
56 to your hard disk drive.
57 akaiextract: Extracts samples from an Akai disk image, either from a media
58 (i.e. CDROM or Zip drive) for from a AKAI disk image file.
59
60 Since version 3.0.0 libgig also provides write support, that is for
61 creating modifying .gig, DLS and RIFF files.
62
63 Requirements
64 ============
65
66 All systems
67 -----------
68
69 Since libgig 4.3.0 you need at least a C++11 compliant compiler.
70
71 POSIX systems (e.g. Linux, macOS):
72 ---------------------------------
73
74 You need at least to have libtool installed to be able to build the
75 library with "./configure && make".
76
77 Additionally you need to have either libaudiofile (>= 0.2.3) or
78 libsndfile (>= 1.0.2) installed which is mandatory to be able to compile
79 the 'gigextract' example application. But of course 'gigextract' is still
80 just an example application, so it would make sense to compile it only if
81 one of those libraries are available. That would remove that hard
82 dependency to those two libs. But that's not a priority for me now.
83 Note: for Windows systems only libsndfile is available.
84
85 If you want to regenerate all autotools build files (that is configure,
86 Makefile.in, etc.) then you need to have automake (>= 1.5) and autoconf
87 installed.
88
89 Windows:
90 --------
91
92 The precompiled versions of libgig (and its tools) should be compatible
93 with any Windows operating system of at least Win95 or younger. Notice
94 that all example / demo applications coming with libgig are pure console
95 applications, thus you won't see a GUI showing up! :)
96
97 If you want to compile libgig and its tools by yourself, please also
98 notice the requirements under "Compiling for Windows".
99
100 Other Operating Systems:
101 ------------------------
102
103 libgig was written to compile for any operating system, using standard C
104 library functions. However there are some OS dependent requirements:
105
106 * Since libgig 3.0.0 an OS dependent implementation for a tiny method called
107 RIFF::File::ResizeFile() is required. So you would either have to add
108 native OS API calls for that particular method, that is dependant to your
109 OS, or you have to add a portable implementation. No matter which way you
110 choose, please let us know! :)
111
112 * Since libgig 4.3.0 presence of some UUID generating function is required to
113 be provided by the underlying system. This was an optional feature in
114 previous versions of libgig for many years, its absence only meant that you
115 were unable to load gig files created/modified by libgig to be accepted by
116 Tascam's original GigaStudio studio software, did not mean any restriction
117 for being used with LinuxSampler though. This has changed in the meantime,
118 so this is now a hard build requirement, as you would potentially encounter
119 misbehaviours now even if you stay entirely in the Linux eco system if UUIDs
120 were missing in gig files.
121
122 Compiling for Linux
123 ===================
124 You can either compile the sources and install the library directly on
125 your system or you can create Redhat or Debian packages.
126
127 a) Compiling and installing directly
128
129 Call './configure && make' on the console to compile the library, all
130 tools and demo applications, documentation and install them with
131 'make install'. The latter has to be called as root.
132
133 If you are compiling from CVS you have to call 'make -f Makefile.cvs'
134 to generate all autotools build files before calling
135 './configure && make'.
136
137 You can use 'make distclean' and probably 'make -f Makefile.cvs clean'
138 to clean up everything again. The latter will also delete all automatic
139 generated autools build files.
140
141 b) Creating Debian packages
142
143 Use 'dpkg-buildpackage -rfakeroot -b' to compile and create the Debian
144 packages. This will generate 3 Debian packages:
145
146 libgig: Contains the shared library files.
147 libgig-dev: Contains the header files and documentation for building
148 applications using libgig.
149 gigtools: Contains the tools and demo applications.
150
151 You can use 'fakeroot debian/rules clean' to clean up everything again.
152
153 c) Creating Redhat packages
154
155 You need to have the rpmbuild tool installed and properly configured to
156 create RPM packages. To create the RPM packages do the following:
157
158 * Get .spec file generated by ./configure and edit it as appropriate.
159
160 * Copy the source tarball to "/usr/src/<rpmdir>/SOURCES" directory,
161 where <rpmdir> is dependent to the system you are using. For SuSE
162 <rmpdir> will be "packages", for Mandrake <rpmdir> is "RPM" and for
163 Redhat / Fedora <rpmdir> always equals "redhat".
164
165 * Build the rpm(s) by invoking 'rpmbuild -bb <specfile>' from the
166 command line.
167
168 On success, the resulting rpm(s) can usually be found under the proper
169 "/usr/src/<rpmdir>/RPMS/<arch>" directory.
170
171 Compiling for Windows using CMake
172 =================================
173 The easiest way is to compile is to use vcpkg (https://github.com/Microsoft/vcpkg)
174 to install libsndfile (required) and cppunit (optional). In the vcpkg install dir
175 type:
176 .\vcpkg.exe install libsndfile cppunit [--triplet x64-windows]
177
178 This should install the libraries in vcpkg, add the triplet option if you wish to
179 get the 64bit libraries.
180
181 In an empty directory type:
182 cmake <libgig source dir> -DCMAKE_TOOLCHAIN_FILE=<vcpkg dir>\scripts\buildsystems\vcpkg.cmake
183 [-G"Visual Studio 15 2017 Win64"]
184
185 Use the -G option to select the visual studio version and whether to compile for
186 64bits.
187
188 This will create libgig.sln file which you can open in visual studio or you can use
189 the following command line to compile:
190
191 cmake --build . --config <Release|Debug|MinRelSize|RelWithDebInfo>
192
193 Compiling for Windows using Dev-C++
194 ===================================
195
196 libgig and its tools can also be compiled on Windows using Bloodshed Dev-C++,
197 which is a free (GPL) C++ integrated development environment for Windows.
198 It is also possible to use MSYS from MinGW, which allows you to use
199 './configure && make' like the linux builds.
200
201 You can download Dev-C++ here:
202
203 http://www.bloodshed.net/devcpp.html
204
205 Make sure you install a version with Mingw integrated.
206
207 a) Compiling libgig.dll
208
209 Simply open the project file "win32/libgig.dev" either directly in Dev-C++
210 or by double clicking on the project file in the Windows explorer, then
211 click on "Compile" in the Dev-C++ menu and that's it! After compilation
212 finished, you can find the files "libgig.dll", "libgig.a" and
213 "liblibgig.def" in the "win32" directory.
214
215 b) Compiling the example tools "rifftree", "dlsdump" and "gigdump"
216
217 You need to have libgig.dll compiled as described in a). Then you can
218 compile the respective tool by simply opening the respective project
219 (.dev) file and clicking on "Compile" from the Dev-C++ menu. After
220 compilation you can find the respective .exe file in the "win32"
221 directory.
222
223 c) Compiling the example tool "gigextract"
224
225 You need to have libgig.dll compiled as described in a). Also you need
226 libsndfile (as DLL) which is used to create the .wav files. You can
227 download libsndfile already precompiled as DLL here:
228
229 http://www.mega-nerd.com/libsndfile/
230
231 Extract the .zip file i.e. to "C:\". The libsndfile .dll file should then
232 be i.e. under "C:\libsndfile-1_0_17". Beside the .dll file, make sure
233 libsndfile's .lib file exists in that directory as well. If the .lib file
234 does not exist yet, you have to create it with:
235
236 dlltool --input-def libsndfile-1.def --output-lib libsndfile-1.lib
237
238 Then you have to ensure the settings of gigextract's Dev-C++ project file
239 are pointing to the correct location of your local copy of libsndfile. For
240 that click in the Dev-C++ menu on "Project" -> "Project Options". Then
241 click on the tab "Parameter" and make sure the path to "libsndfile-1.lib"
242 in the "Linker" list view is correct. Then click on the tab "Directories"
243 and then on the tab "Include Directories" and make sure the path to
244 libsndfile points to the correct location there as well.
245
246 After that you should finally be able to compile "gigextract" by clicking
247 on "Compile" in the Dev-C++ menu. After compilation succeeded, you can
248 find the "gigextract.exe" file in the "win32" directory.
249
250 Test Cases
251 ==========
252 The libgig sources come with a tiny console application which allows to
253 automatically test libgig's functions on your system. This test
254 application is not compiled by default, you have to compile it explicitly
255 with the following commands on the console (cppunit has to be installed):
256
257 cd src/testcases
258 make libgigtests
259
260 and then run the test application from the same directory with:
261
262 ./libgigtests
263
264 License
265 =======
266 libgig and its tools are released under the GNU General Public License (GPL).
267
268 libakai and its tools are released under the GNU Lesser General Public (LGPL).
269 Due to its different license model the Akai support part is built as separate
270 DLL (.so) file.
271
272 API Documentation
273 =================
274 If you have Doxygen installed you can generate the API documentation by
275 running 'make docs' in the sources' top level directory. The API
276 documentation will be generated in the 'doc' subdirectory.
277
278 Patches
279 =======
280 If you have bug fixes or improvements, your patches are always welcome!
281 Send them either directly to me or to the LinuxSampler developer's mailing
282 list <linuxsampler-devel@lists.sourceforge.net>.
283
284 Bugs
285 ====
286 Please use http://bugs.linuxsampler.org to check and report possible bugs.
287 You might also try to run the "Test Cases" coming with libgig (see above),
288 especially in case you are running on an odd system.
289
290 Trademarks
291 ==========
292 Tascam, Gigasampler, GigaStudio, KORG, Trinity, Triton, OASYS, M3, Kronos
293 and Akai are trademarks of their respective owners.
294
295 Credits
296 =======
297 The initial library (Gigasampler part) was based on the reverse engineering
298 effort of Paul Kellett and Ruben van Royen. We owe current support for the
299 Gigasampler v3/v4 format to Andreas Persson. Please also have a look at the
300 ChangeLog for all those who contributed.
301
302 Akai support files are a ported version of S�bastien M�trot's libakai. The
303 original libakai only supported Mac and Windows. This forked version of
304 libakai now also supports Linux and other POSIX compliant operating systems
305 as well and does not have a dependency to libngl as the original libakai had.
306
307 The SoundFont 2 file format C++ classes were written by Grigor Iliev.
308
309 Thanks to all of you for your great work!
310
311 Christian Schoenebeck <cuse@users.sourceforge.net>

  ViewVC Help
Powered by ViewVC