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