/[svn]/libgig/trunk/doc/mainpage.dox
ViewVC logotype

Diff of /libgig/trunk/doc/mainpage.dox

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1378 by schoenebeck, Thu Oct 4 00:34:14 2007 UTC revision 2805 by schoenebeck, Fri Jul 17 18:31:19 2015 UTC
# Line 5  Line 5 
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 and DLS (Downloadable Sounds) Level 1 & 2 files.  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    two 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    
 The library actually consists of three parts:  
85    
86    1. @ref RIFF classes: Provide convenient methods to parse and access  @section License
      arbitrary RIFF files. The <i>Resource Interchange File Format</i>  
      provides universal data containers ordered in a tree-like structure  
      and can be compared to XML, but with the difference that RIFF is  
      binary encoded.  
   
   2. @ref DLS classes: Provide convenient methods to parse and access  
      DLS (<i>Downloadable Sounds</i>) Level 1 and 2 files. These classes  
      use the RIFF classes to access such files, since the DLS format  
      uses RIFF as its layer beneath to store and structure its data.  
   
   3. @ref gig classes: These are based on the DLS classes and provide the  
      necessary extensions for the Gigasampler file format, since the  
      Gigasampler format is in fact based on the DLS Level 2 format, with  
      quite some radical modifications though.  
87    
88    Most parts of libgig and its tools are released under the terms of the
89    <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License (GPL)</a>.
90    This applies to the @ref gig classes, @ref sf2 classes, @ref Korg classes, @ref DLS classes,
91    @ref RIFF classes and all of their tools and example programs. We may offer you a
92    commercial license for using libgig in commercial products. If you are
93    interested in a commercial license,
94    <a href="http://www.linuxsampler.org/developers.html">contact us!</a>
95    
96  @section License  The @b AKAI classes and their tools / example programs are released under the terms
97    of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License (LGPL)</a>.
98    
99  libgig and its tools are released under the GNU General Public License  If you have any questions regarding license aspects,
100  (GPL).  <a href="http://www.linuxsampler.org/developers.html">contact us!</a>
101    
102    
103  @section Examples  @section Examples
104    
105  Beside the actual library there are four example applications which  Beside the actual C++ library, there are the following example applications
106  demonstrate how to use the library:  which demonstrate how to use the library:
107    
108      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gigdump.cpp?view=markup">@b gigdump: </a>
109        Prints out the content of a .gig file.
110      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gigextract.cpp?view=markup">@b gigextract: </a>
111        Extracts audio samples from a .gig file as .wav files.
112      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gigmerge.cpp?view=markup">@b gigmerge: </a>
113        Combines multiple .gig files to one .gig file.
114      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gig2mono.cpp?view=markup">@b gig2mono: </a>
115        Converts .gig files from stereo to mono.
116      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/gig2stereo.cpp?view=markup">@b gig2stereo: </a>
117        Converts .gig files from mono sample pairs to true interleaved stereo.
118      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/dlsdump.cpp?view=markup">@b dlsdump: </a>
119        Prints out the content of a DLS file.
120      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/rifftree.cpp?view=markup">@b rifftree: </a>
121        Prints out the RIFF tree of an arbitrary RIFF container file.
122      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/sf2dump.cpp?view=markup">@b sf2dump: </a>
123        Prints out the content of a .sf2 file.
124      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/sf2extract.cpp?view=markup">@b sf2extract: </a>
125        Extracts audio samples from a .sf2 file as .wav files.
126      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korgdump.cpp?view=markup">@b korgdump: </a>
127        Prints out the content of KORG sound files (.KSF, .KMP).
128      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korg2gig.cpp?view=markup">@b korg2gig: </a>
129        Converts KORG (.KSF, .KMP) sound files to GigaStudio (.gig) files.
130      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/akaidump.cpp?view=markup">@b akaidump: </a>
131        Dump an AKAI media i.e. from a CDROM drive as disk image file to your HD.
132      - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/akaiextract.cpp?view=markup">@b akaiextract: </a>
133        Extracts audio samples from an AKAI media or from an AKAI disk image file (as .wav files).
134    
135    - @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.  
136    
137    
138  @section Portability  @section Portability
139    
140  This library is developed and optimized for POSIX compliant operating  This library is developed and optimized for POSIX compliant operating
141  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
142  libgig was developed to compile on any operating system, though since  platform C++ library, so libgig should also compile for other operation systems
143  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,
144  able to resize files. Should be a 5 minute job to implement this method for  PPC and many more). It works on
145  other operating systems as well though.  <a href="http://en.wikipedia.org/wiki/Endianness">little endian and big endian</a>
146    systems.
147    
148    
149    @section Bugs
150    
151    Please report bugs on http://bugs.linuxsampler.org/ and/or subscribe to the
152    <a href="http://lists.sourceforge.net/lists/listinfo/linuxsampler-devel">LinuxSampler developers mailing list</a>.
153    
154  @section Outro  @section Outro
155    

Legend:
Removed from v.1378  
changed lines
  Added in v.2805

  ViewVC Help
Powered by ViewVC