This file is indexed.

/usr/include/libinstpatch-1.0/libinstpatch/IpatchGigFile.h is in libinstpatch-dev 1.0.0-6.

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