1/** 2 3@mainpage libgig 4 5 6@section Intro 7 8libgig is a C++ library for accessing audio-sample based instrument files, 9as they are shipped for various software samplers, hardware sampler devices 10and synthesizer keyboards. 11This C++ library was originally created to access Gigasampler files, but in the 12meantime grew to much more than that. At the moment libgig consists of the 13following 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 60Besides the mentioned major parts above, libgig also provides the following 61three 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 93Most 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>. 95This 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 97commercial license for using libgig in commercial products. If you are 98interested in a commercial license, 99<a href="http://www.linuxsampler.org/developers.html">contact us!</a> 100 101The @b AKAI classes and their tools / example programs are released under the terms 102of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License (LGPL)</a>. 103 104If 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 110Beside the actual C++ library, there are the following example applications 111which 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/dlsdump.cpp?view=markup">@b dlsdump: </a> 124 Prints out the content of a DLS file. 125 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/rifftree.cpp?view=markup">@b rifftree: </a> 126 Prints out the RIFF tree of an arbitrary RIFF container file. 127 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/sf2dump.cpp?view=markup">@b sf2dump: </a> 128 Prints out the content of a .sf2 file. 129 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/sf2extract.cpp?view=markup">@b sf2extract: </a> 130 Extracts audio samples from a .sf2 file as .wav files. 131 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korgdump.cpp?view=markup">@b korgdump: </a> 132 Prints out the content of KORG sound files (.KSF, .KMP). 133 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korg2gig.cpp?view=markup">@b korg2gig: </a> 134 Converts KORG (.KSF, .KMP) sound files to GigaStudio (.gig) files. 135 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/akaidump.cpp?view=markup">@b akaidump: </a> 136 Dump an AKAI media i.e. from a CDROM drive as disk image file to your HD. 137 - <a href="http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/akaiextract.cpp?view=markup">@b akaiextract: </a> 138 Extracts audio samples from an AKAI media or from an AKAI disk image file (as .wav files). 139 140Currently libgig ist most prominently used by LinuxSampler and gigedit. 141 142 143@section Portability 144 145This library is developed and optimized for POSIX compliant operating 146systems like Linux and Mac OS X, as well as for Windows. It is written as cross 147platform C++ library, so libgig should also compile for other operation systems 148as well. Due to this it works on all architectures (i.e. 32 bit x86, 64 bit x86, 149PPC and many more). It works on 150<a href="http://en.wikipedia.org/wiki/Endianness">little endian and big endian</a> 151systems. 152 153 154@section Bugs 155 156Please report bugs on http://bugs.linuxsampler.org/ and/or subscribe to the 157<a href="http://lists.sourceforge.net/lists/listinfo/linuxsampler-devel">LinuxSampler developers mailing list</a>. 158 159@section Outro 160 161For compilation instructions, requirements and further details please refer 162to the README file et al. 163 164That's all folks. Happy hacking! 165 166 -- Christian Schoenebeck <cuse@users.sourceforge.net> 167 168@see http://www.linuxsampler.org 169 170*/ 171