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 and hardware sampler devices. |
10 |
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 |
following major parts: |
13 |
|
14 |
- @b 1. @ref gig classes: These provide convenient access to |
15 |
@b Gigasampler / @b GigaStudio files (for all known format version, that is |
16 |
from Gigasampler v1 to GigaStudio v4), allowing to load, modify and save |
17 |
existing .gig files, as well as creating new .gig files from scratch. |
18 |
|
19 |
Since the gig file format was originally designed based on the DLS Level 2 |
20 |
format, the gig classes in this library are derived from the DLS classes of |
21 |
this library, where the gig classes provide the necessary extensions for the |
22 |
Gigasampler file format. |
23 |
|
24 |
Besides the fact that libgig supports all aspects of the original |
25 |
Gigasampler / GigaStudio format, it now also provides some own extensions of |
26 |
that original format. Most notably libgig provides an extension to save |
27 |
real-time instrument scripts with .gig files. Those custom extensions are |
28 |
however currently only supported by the graphical instrument editor |
29 |
application @b gigedit and by @b LinuxSampler, they will obviously not work |
30 |
with the original GigaStudio software. |
31 |
|
32 |
- @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 |
79 |
|
80 |
Most parts of libgig and its tools are released under the terms of the |
81 |
<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 |
96 |
|
97 |
Beside the actual C++ library, there are the following example applications |
98 |
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 |
Currently libgig ist most prominently used by LinuxSampler and gigedit. |
124 |
|
125 |
|
126 |
@section Portability |
127 |
|
128 |
This library is developed and optimized for POSIX compliant operating |
129 |
systems like Linux and Mac OS X, as well as for Windows. It is written as cross |
130 |
platform C++ library, so libgig should also compile for other operation systems |
131 |
as well. Due to this it works on all architectures (i.e. 32 bit x86, 64 bit x86, |
132 |
PPC and many more). It works on |
133 |
<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 |
143 |
|
144 |
For compilation instructions, requirements and further details please refer |
145 |
to the README file et al. |
146 |
|
147 |
That's all folks. Happy hacking! |
148 |
|
149 |
-- Christian Schoenebeck <cuse@users.sourceforge.net> |
150 |
|
151 |
@see http://www.linuxsampler.org |
152 |
|
153 |
*/ |