5 |
|
|
6 |
@section Intro |
@section Intro |
7 |
|
|
8 |
libgig is a C++ library for loading, modifying existing and creating new |
libgig is a C++ library for accessing audio-sample based instrument files, |
9 |
Gigasampler files (of both the old version 2 and the latest version 3 of |
as they are shipped for various software samplers and hardware sampler devices. |
10 |
the Gigasampler format) and DLS (Downloadable Sounds) Level 1 & 2 files. |
This C++ library was originally created to access Gigasampler files, but in the |
11 |
|
meantime grew to much more than that. At the moment libgig consists of the |
12 |
The library actually consists of three parts: |
following major parts: |
13 |
|
|
14 |
- 1. @ref RIFF classes: Provide convenient methods to parse and access |
- @b 1. @ref gig classes: These provide convenient access to |
15 |
arbitrary RIFF files. The <i>Resource Interchange File Format</i> |
@b Gigasampler / @b GigaStudio files (for all known format version, that is |
16 |
provides universal data containers ordered in a tree-like structure |
from Gigasampler v1 to GigaStudio v4), allowing to load, modify and save |
17 |
and can be compared to XML, but with the difference that RIFF is |
existing .gig files, as well as creating new .gig files from scratch. |
18 |
binary encoded. |
|
19 |
|
Since the gig file format was originally designed based on the DLS Level 2 |
20 |
- 2. @ref DLS classes: Provide convenient methods to parse and access |
format, the gig classes in this library are derived from the DLS classes of |
21 |
DLS (<i>Downloadable Sounds</i>) Level 1 and 2 files. These classes |
this library, where the gig classes provide the necessary extensions for the |
22 |
use the RIFF classes to access such files, since the DLS format |
Gigasampler file format. |
23 |
uses RIFF as its layer beneath to store and structure its data. |
|
24 |
|
Besides the fact that libgig supports all aspects of the original |
25 |
- 3. @ref gig classes: These are based on the DLS classes and provide the |
Gigasampler / GigaStudio format, it now also provides some own extensions of |
26 |
necessary extensions for the Gigasampler file format v2 and v3, since |
that original format. Most notably libgig provides an extension to save |
27 |
the Gigasampler format is in fact based on the DLS Level 2 format, with |
real-time instrument scripts with .gig files. Those custom extensions are |
28 |
quite some radical modifications though. |
however currently only supported by the graphical instrument editor |
29 |
|
application @b gigedit and by @b LinuxSampler, they will obviously not work |
30 |
So one can also use this library to access all kinds of RIFF files and DLS |
with the original GigaStudio software. |
31 |
files, but the main focus (as one can obviously derive from the library name) |
|
32 |
is currently the Gigasampler format. |
- @b 2. @ref Korg classes: These provide support for loading sample based |
33 |
|
instrument files for KORG's synthesizer keyboard models <i>Kronos</i>, |
34 |
|
<i>M3</i>, <i>Oasys</i>, <i>Triton</i> and <i>Trinity</i>. There is |
35 |
|
currently no support for modifying KORG files yet. |
36 |
|
|
37 |
|
- @b 3. @b AKAI classes: These provide support for loading sample based disks |
38 |
|
(CDROMs, hard disks, ZIP disks) and disk image files of AKAI's hardware |
39 |
|
sampler series <i>S1000</i>, <i>S01</i>, <i>S2000</i> and <i>S3000</i>. |
40 |
|
|
41 |
|
The AKAI classes are a branch of <i>libakai</i>. In the AKAI classes of |
42 |
|
libgig, libakai's original dependency to the so called <i>Carbon</i> C++ |
43 |
|
library has been removed and has been replaced by using ordinay |
44 |
|
<a href="http://en.wikipedia.org/wiki/Standard_Template_Library">C++ STL</a> |
45 |
|
classes instead. Further, this branch of libakai also provides support for |
46 |
|
Linux and other POSIX based OSes (the original libakai was limited to Mac |
47 |
|
and Windows). |
48 |
|
|
49 |
|
Currently the AKAI classes don't have their own dedicated C++ namespace. |
50 |
|
Refer to class @ref AkaiDisk as toplevel entry class for accessing AKAI |
51 |
|
sounds. |
52 |
|
|
53 |
|
Besides the mentioned major parts above, libgig also provides the following |
54 |
|
other components: |
55 |
|
|
56 |
|
- @b 4. @ref DLS classes: Provide convenient methods to access |
57 |
|
@b DLS (<i>Downloadable Sounds</i>) Level 1 and 2 files. The DLS file format |
58 |
|
has been designed as open file format to be adopted by various keyboard |
59 |
|
manufacturers for their sounds. However it never really made it to a broad |
60 |
|
standard. You can use the DLS classes of libgig to load, modify and create |
61 |
|
DLS files from scratch, however you will probably not find many DLS files |
62 |
|
and/or software or hardware that supports this file format. The main reason |
63 |
|
why these classes exist in libgig, is because of the fact that the |
64 |
|
Gigasampler / GigaStudio file format was designed as extension on top of the |
65 |
|
DLS file format (with quite some radical modifications though). |
66 |
|
|
67 |
|
- @b 5. @ref RIFF classes: Provide convenient methods to parse and access |
68 |
|
arbitrary RIFF files. The <i>Resource Interchange File Format</i> |
69 |
|
provides universal data containers ordered in a tree-like structure |
70 |
|
and can be compared to XML, but with the difference that RIFF is |
71 |
|
binary encoded. |
72 |
|
|
73 |
|
The DLS file format, the gig file format and KORG's file format are all |
74 |
|
based on RIFF on lowest level of their file format. And consequently all |
75 |
|
those classes mentioned above are using the RIFF classes for that purpose. |
76 |
|
|
77 |
|
|
78 |
@section License |
@section License |
79 |
|
|
80 |
libgig and its tools are released under the GNU General Public License |
Most parts of libgig and its tools are released under the terms of the |
81 |
(GPL). |
<a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License (GPL)</a>. |
82 |
|
This applies to the @ref gig classes, @ref Korg classes, @ref DLS classes, |
83 |
|
@ref RIFF classes and all their tools and example programs. We may offer you a |
84 |
|
commercial license for using libgig in commercial products. If you are |
85 |
|
interested in a commercial license, |
86 |
|
<a href="http://www.linuxsampler.org/developers.html">contact us!</a> |
87 |
|
|
88 |
|
The @b AKAI classes and its tools / demo programs are released under the terms |
89 |
|
of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License (LGPL)</a>. |
90 |
|
|
91 |
|
If you have any questions regarding license aspects, |
92 |
|
<a href="http://www.linuxsampler.org/developers.html">contact us!</a> |
93 |
|
|
94 |
|
|
95 |
@section Examples |
@section Examples |
96 |
|
|
97 |
Beside the actual library there are four example applications which |
Beside the actual C++ library, there are the following example applications |
98 |
demonstrate how to use the library: |
which demonstrate how to use the library: |
99 |
|
|
100 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gigdump.cpp?view=markup">@b gigdump: </a> |
101 |
|
Prints out the content of a .gig file. |
102 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gigextract.cpp?view=markup">@b gigextract: </a> |
103 |
|
Extracts audio samples from a .gig file as .wav files. |
104 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gigmerge.cpp?view=markup">@b gigmerge: </a> |
105 |
|
Combines multiple .gig files to one .gig file. |
106 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gig2mono.cpp?view=markup">@b gig2mono: </a> |
107 |
|
Converts .gig files from stereo to mono. |
108 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/dlsdump.cpp?view=markup">@b dlsdump: </a> |
109 |
|
Prints out the content of a DLS file. |
110 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/rifftree.cpp?view=markup">@b rifftree: </a> |
111 |
|
Prints out the RIFF tree of an arbitrary RIFF container file. |
112 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/sf2dump.cpp?view=markup">@b sf2dump: </a> |
113 |
|
Prints out the content of a .sf2 file. |
114 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korgdump.cpp?view=markup">@b korgdump: </a> |
115 |
|
Prints out the content of KORG sound files (.KSF, .KMP). |
116 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korg2gig.cpp?view=markup">@b korg2gig: </a> |
117 |
|
Converts KORG (.KSF, .KMP) sound files to GigaStudio (.gig) files. |
118 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/akaidump.cpp?view=markup">@b akaidump: </a> |
119 |
|
Dump an AKAI media i.e. from a CDROM drive as disk image file to your HD. |
120 |
|
- <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/akaiextract.cpp?view=markup">@b akaiextract: </a> |
121 |
|
Extracts audio samples from an AKAI media or from an AKAI disk image file (as .wav files). |
122 |
|
|
123 |
- @e gigdump: Demo app that prints out the content of a .gig file. |
Currently libgig ist most prominently used by LinuxSampler and gigedit. |
|
- @e gigextract: Extracts samples from a .gig file. |
|
|
- @e dlsdump: Demo app that prints out the content of a DLS file. |
|
|
- @e rifftree: Tool that prints out the RIFF tree of an arbitrary RIFF file. |
|
|
|
|
|
Since version 3.0.0 libgig also provides write support, that is for creating |
|
|
modifying .gig, DLS and RIFF files. You can find a test case called |
|
|
@c GigWriteTest.cpp which demonstrates how to create a .gig file with |
|
|
libgig. You find other demo apps regarding write support of libgig on the |
|
|
website. |
|
124 |
|
|
125 |
|
|
126 |
@section Portability |
@section Portability |
127 |
|
|
128 |
This library is developed and optimized for POSIX compliant operating |
This library is developed and optimized for POSIX compliant operating |
129 |
systems like Linux and OSX and since release 3.1.1 for Windows as well. |
systems like Linux and Mac OS X, as well as for Windows. It is written as cross |
130 |
libgig was developed to compile on any operating system, though since |
platform C++ library, so libgig should also compile for other operation systems |
131 |
release 3.0.0 libgig uses one tiny operating system dependant method to be |
as well. Due to this it works on all architectures (i.e. 32 bit x86, 64 bit x86, |
132 |
able to resize files. Should be a 5 minute job to implement this method for |
PPC and many more). It works on |
133 |
other operating systems as well though. |
<a href="http://en.wikipedia.org/wiki/Endianness">little endian and big endian</a> |
134 |
|
systems. |
135 |
|
|
136 |
|
|
137 |
|
@section Bugs |
138 |
|
|
139 |
|
Please report bugs on http://bugs.linuxsampler.org/ and/or subscribe to the |
140 |
|
<a href="http://lists.sourceforge.net/lists/listinfo/linuxsampler-devel">LinuxSampler developers mailing list</a>. |
141 |
|
|
142 |
@section Outro |
@section Outro |
143 |
|
|