/usr/include/libinstpatch-1.0/libinstpatch/IpatchGigFile.h is in libinstpatch-dev 1.0.0-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | /*
* libInstPatch
* Copyright (C) 1999-2010 Joshua "Element" Green <jgreen@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; version 2.1
* of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA or on the web at http://www.gnu.org.
*/
/**
* SECTION: IpatchGigFile
* @short_description: GigaSampler file object
* @see_also:
* @stability: Stable
*
* File type for GigaSampler files.
*/
#ifndef __IPATCH_GIG_FILE_H__
#define __IPATCH_GIG_FILE_H__
#include <glib.h>
#include <glib-object.h>
#include <libinstpatch/IpatchDLSFile.h>
#include <libinstpatch/IpatchRiff.h>
/*
* A GigaSampler file is based on DLS2 with many proprietary extensions.
* Descriptions of chunks below that start with DLS are part of the DLS
* standard, while the "Gig" ones are GigaSampler specific.
* Extensions and quirks for the GigaSampler format:
*
* Toplevel file <INFO> chunk is rather specific.
* Sub chunks are listed in this order:
* IARL IART ICMS ICMT ICOP ICRD IENG IGNR IKEY IMED INAM IPRD ISBJ ISFT
* ISRC ISRF ITCH
* The IARL chunk is always 256 bytes long and padded with spaces ' ' ????
* The ICMT chunk is 1024 bytes and padded with NULLs
* All other chunks are 128 bytes and padded with NULLs
*
*
* lins->ins: DLS instrument
* INFO - DLS INFO LIST
* INAM - Name always 64 bytes "GigaSampler Instrument Editor 2.0", etc
* ISFT - Software always 12 bytes "Endless Wave"
* dlid - DLS unique ID
* insh - DLS instrument header
* lrgn - DLS Region LIST
* rgn - DLS instrument region (LIST)
* rgnh - DLS region header
* wsmp - DLS sample parameters
* wlnk - DLS wave link parameters
* 3lnk - Gig dimension info
* 3prg - Gig LIST chunk
* 3ewl - Gig LIST chunk (one for each sub region)
* wsmp - DLS sample parameters (tuning, gain and loop)
* 3ewa - Gig Envelop/LFO/Filter parameters (IpatchGigEffects)
* 3ewl
* wsmp
* 3ewa
* ...
* 3dnl - Gig dimension names (up to 5 zero terminated strings)
* 3ddp - Gig ???? (size 10, 2 byte words for each dimension?)
* rgn - next DLS region
* ...
* lart - DLS Articulation LIST
* 3ewg - Gig global instrument parameters
* 3gri - Gig LIST
* 3gnl - Gig LIST
* 3gnm - Gig sample group names
* ptbl - DLS pool table
* wvpl - DLS wave pool LIST
* wave - DLS RIFF wave file
* fmt - DLS WAVE format
* INFO - DLS INFO list
* INAM - Name always 64 bytes
* data - DLS WAVE sample data
* smpl - Gig sample parameters
* 3gix - Gig sample group number
* einf - Unknown (perhaps to speed up loading?)
*/
typedef struct _IpatchGigFile IpatchGigFile;
typedef struct _IpatchGigFileClass IpatchGigFileClass;
#define IPATCH_TYPE_GIG_FILE (ipatch_gig_file_get_type ())
#define IPATCH_GIG_FILE(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), IPATCH_TYPE_GIG_FILE, IpatchGigFile))
#define IPATCH_GIG_FILE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), IPATCH_TYPE_GIG_FILE, IpatchGigFileClass))
#define IPATCH_IS_GIG_FILE(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), IPATCH_TYPE_GIG_FILE))
#define IPATCH_IS_GIG_FILE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), IPATCH_TYPE_GIG_FILE))
#define IPATCH_GIG_FILE_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), IPATCH_TYPE_GIG_FILE, \
IpatchGigFileClass))
/* GigaSampler file object (derived from IpatchDLSFile) */
struct _IpatchGigFile
{
IpatchDLSFile parent_instance;
};
/* GigaSampler file class (derived from IpatchDLSFile) */
struct _IpatchGigFileClass
{
IpatchDLSFileClass parent_class;
};
/* RIFF chunk FOURCC guint32 integers - list chunks*/
#define IPATCH_GIG_FOURCC_3PRG IPATCH_FOURCC ('3','p','r','g')
#define IPATCH_GIG_FOURCC_3EWL IPATCH_FOURCC ('3','e','w','l')
#define IPATCH_GIG_FOURCC_3DNL IPATCH_FOURCC ('3','d','n','l')
#define IPATCH_GIG_FOURCC_3GNL IPATCH_FOURCC ('3','g','n','l')
#define IPATCH_GIG_FOURCC_3GRI IPATCH_FOURCC ('3','g','r','i')
/* sub chunks */
#define IPATCH_GIG_FOURCC_SMPL IPATCH_FOURCC ('s','m','p','l')
#define IPATCH_GIG_FOURCC_3DDP IPATCH_FOURCC ('3','d','d','p')
#define IPATCH_GIG_FOURCC_3EWA IPATCH_FOURCC ('3','e','w','a')
#define IPATCH_GIG_FOURCC_3EWG IPATCH_FOURCC ('3','e','w','g')
#define IPATCH_GIG_FOURCC_3GIX IPATCH_FOURCC ('3','g','i','x')
#define IPATCH_GIG_FOURCC_3GNM IPATCH_FOURCC ('3','g','n','m')
#define IPATCH_GIG_FOURCC_3LNK IPATCH_FOURCC ('3','l','n','k')
#define IPATCH_GIG_FOURCC_EINF IPATCH_FOURCC ('e','i','n','f')
/* file chunk sizes */
#define IPATCH_GIG_SMPL_SIZE 60
#define IPATCH_GIG_3DDP_SIZE 10
#define IPATCH_GIG_3EWA_SIZE 140
#define IPATCH_GIG_3EWG_SIZE 12
#define IPATCH_GIG_3GIX_SIZE 4
#define IPATCH_GIG_3GNM_SIZE 64
#define IPATCH_GIG_3LNK_SIZE 172
/* size of instrument and sample name INFO chunk sizes */
#define IPATCH_GIG_ITEM_INAM_SIZE 64
/* fixed sizes for toplevel file INFO chunks */
#define IPATCH_GIG_MOST_INFO_SIZE 128 /* size of all chunks except 2 below */
#define IPATCH_GIG_IARL_INFO_SIZE 256 /* this one is padded with spaces ' ' */
#define IPATCH_GIG_ICMT_INFO_SIZE 1024
/* Software INFO value for GigaSampler instruments */
/* FIXME - Should we put something else there? */
#define IPATCH_GIG_INST_ISFT_VAL "Endless Wave"
GType ipatch_gig_file_get_type (void);
IpatchGigFile *ipatch_gig_file_new (void);
#endif
|