/usr/include/libinstpatch-1.0/libinstpatch/IpatchSF2File.h is in libinstpatch-dev 1.0.0-3.
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 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | /*
* 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: IpatchSF2File
* @short_description: SoundFont file object
* @see_also:
* @stability: Stable
*
* A #IpatchFile object type specifically for SoundFont files.
*/
#ifndef __IPATCH_SF2_FILE_H__
#define __IPATCH_SF2_FILE_H__
#include <glib.h>
#include <glib-object.h>
#include <libinstpatch/IpatchFile.h>
#include <libinstpatch/IpatchRiff.h>
/* forward type declarations */
typedef struct _IpatchSF2File IpatchSF2File;
typedef struct _IpatchSF2FileClass IpatchSF2FileClass;
typedef struct _IpatchSF2Phdr IpatchSF2Phdr;
typedef struct _IpatchSF2Ihdr IpatchSF2Ihdr;
typedef struct _IpatchSF2Shdr IpatchSF2Shdr;
typedef struct _IpatchSF2Bag IpatchSF2Bag;
#define IPATCH_TYPE_SF2_FILE (ipatch_sf2_file_get_type ())
#define IPATCH_SF2_FILE(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), IPATCH_TYPE_SF2_FILE, IpatchSF2File))
#define IPATCH_SF2_FILE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), IPATCH_TYPE_SF2_FILE, \
IpatchSF2FileClass))
#define IPATCH_IS_SF2_FILE(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), IPATCH_TYPE_SF2_FILE))
#define IPATCH_IS_SF2_FILE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), IPATCH_TYPE_SF2_FILE))
#define IPATCH_SF2_FILE_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), IPATCH_TYPE_SF2_FILE, \
IpatchSF2FileClass))
/* SoundFont file object (derived from IpatchFile) */
struct _IpatchSF2File
{
IpatchFile parent_instance;
guint32 sample_pos; /* position in file of the sample data */
guint32 sample_size; /* sample data chunk size (in samples) */
guint32 sample24_pos; /* position in file of LS bytes of 24 bit samples or 0 */
};
/* SoundFont file class (derived from IpatchFile) */
struct _IpatchSF2FileClass
{
IpatchFileClass parent_class;
};
/* SoundFont file preset header */
struct _IpatchSF2Phdr
{
char name[20]; /* preset name */
guint16 program; /* MIDI program number */
guint16 bank; /* MIDI bank number */
guint16 bag_index; /* index into preset bag (#IPFileBag) */
guint32 library; /* Not used (preserved) */
guint32 genre; /* Not used (preserved) */
guint32 morphology; /* Not used (preserved) */
};
/* SoundFont file instrument header */
struct _IpatchSF2Ihdr
{
char name[20]; /* name of instrument */
guint16 bag_index; /* instrument bag index (#IPFileBag) */
};
/* SoundFont file sample header */
struct _IpatchSF2Shdr
{
char name[20]; /* sample name */
guint32 start; /* offset to start of sample */
guint32 end; /* offset to end of sample */
guint32 loop_start; /* offset to start of loop */
guint32 loop_end; /* offset to end of loop */
guint32 rate; /* sample rate recorded at */
guint8 root_note; /* root midi note number */
gint8 fine_tune; /* pitch correction in cents */
guint16 link_index; /* linked sample index for stereo samples */
guint16 type; /* type of sample (see IpatchSF2SampleFlags) */
};
/* SoundFont file bag (zone), indexes for zone's generators and modulators */
struct _IpatchSF2Bag
{
guint16 mod_index; /* index into modulator list */
guint16 gen_index; /* index into generator list */
};
/* RIFF chunk FOURCC guint32 integers */
#define IPATCH_SFONT_FOURCC_SFBK IPATCH_FOURCC ('s','f','b','k')
#define IPATCH_SFONT_FOURCC_INFO IPATCH_FOURCC ('I','N','F','O')
#define IPATCH_SFONT_FOURCC_SDTA IPATCH_FOURCC ('s','d','t','a')
#define IPATCH_SFONT_FOURCC_PDTA IPATCH_FOURCC ('p','d','t','a')
#define IPATCH_SFONT_FOURCC_SMPL IPATCH_FOURCC ('s','m','p','l')
#define IPATCH_SFONT_FOURCC_SM24 IPATCH_FOURCC ('s','m','2','4')
#define IPATCH_SFONT_FOURCC_PHDR IPATCH_FOURCC ('p','h','d','r')
#define IPATCH_SFONT_FOURCC_PBAG IPATCH_FOURCC ('p','b','a','g')
#define IPATCH_SFONT_FOURCC_PMOD IPATCH_FOURCC ('p','m','o','d')
#define IPATCH_SFONT_FOURCC_PGEN IPATCH_FOURCC ('p','g','e','n')
#define IPATCH_SFONT_FOURCC_INST IPATCH_FOURCC ('i','n','s','t')
#define IPATCH_SFONT_FOURCC_IBAG IPATCH_FOURCC ('i','b','a','g')
#define IPATCH_SFONT_FOURCC_IMOD IPATCH_FOURCC ('i','m','o','d')
#define IPATCH_SFONT_FOURCC_IGEN IPATCH_FOURCC ('i','g','e','n')
#define IPATCH_SFONT_FOURCC_SHDR IPATCH_FOURCC ('s','h','d','r')
/* SoundFont info IDs */
#define IPATCH_SFONT_FOURCC_IFIL IPATCH_FOURCC ('i','f','i','l')
#define IPATCH_SFONT_FOURCC_ISNG IPATCH_FOURCC ('i','s','n','g')
#define IPATCH_SFONT_FOURCC_INAM IPATCH_FOURCC ('I','N','A','M')
#define IPATCH_SFONT_FOURCC_IROM IPATCH_FOURCC ('i','r','o','m')
#define IPATCH_SFONT_FOURCC_IVER IPATCH_FOURCC ('i','v','e','r')
#define IPATCH_SFONT_FOURCC_ICRD IPATCH_FOURCC ('I','C','R','D')
#define IPATCH_SFONT_FOURCC_IENG IPATCH_FOURCC ('I','E','N','G')
#define IPATCH_SFONT_FOURCC_IPRD IPATCH_FOURCC ('I','P','R','D')
#define IPATCH_SFONT_FOURCC_ICOP IPATCH_FOURCC ('I','C','O','P')
#define IPATCH_SFONT_FOURCC_ICMT IPATCH_FOURCC ('I','C','M','T')
#define IPATCH_SFONT_FOURCC_ISFT IPATCH_FOURCC ('I','S','F','T')
/* SoundFont file chunk sizes */
#define IPATCH_SFONT_VERSION_SIZE 4 /* file version info size */
#define IPATCH_SFONT_PHDR_SIZE 38 /* file preset header size */
#define IPATCH_SFONT_INST_SIZE 22 /* file instrument header size */
#define IPATCH_SFONT_SHDR_SIZE 46 /* file sample header size */
#define IPATCH_SFONT_BAG_SIZE 4 /* file bag (zone) size */
#define IPATCH_SFONT_MOD_SIZE 10 /* file modulator size */
#define IPATCH_SFONT_GEN_SIZE 4 /* file generator size */
#define IPATCH_SFONT_NAME_SIZE 20 /* name string size (Preset/Inst/Sample) */
/**
* IpatchSF2FileSampleType:
* @IPATCH_SF2_FILE_SAMPLE_TYPE_MONO: Mono channel
* @IPATCH_SF2_FILE_SAMPLE_TYPE_RIGHT: Right channel of a stereo pair
* @IPATCH_SF2_FILE_SAMPLE_TYPE_LEFT: Left channel of a stereo pair
* @IPATCH_SF2_FILE_SAMPLE_TYPE_LINKED: Linked list of samples (not yet used)
* @IPATCH_SF2_FILE_SAMPLE_TYPE_ROM: A ROM sample
*
* SoundFont file sample channel mode
*/
typedef enum
{
IPATCH_SF2_FILE_SAMPLE_TYPE_MONO = 1 << 0,
IPATCH_SF2_FILE_SAMPLE_TYPE_RIGHT = 1 << 1,
IPATCH_SF2_FILE_SAMPLE_TYPE_LEFT = 1 << 2,
IPATCH_SF2_FILE_SAMPLE_TYPE_LINKED = 1 << 3,
IPATCH_SF2_FILE_SAMPLE_TYPE_ROM = 1 << 15
} IpatchSF2FileSampleType;
GType ipatch_sf2_file_get_type (void);
IpatchSF2File *ipatch_sf2_file_new (void);
void ipatch_sf2_file_set_sample_pos (IpatchSF2File *file, guint sample_pos);
guint ipatch_sf2_file_get_sample_pos (IpatchSF2File *file);
void ipatch_sf2_file_set_sample_size (IpatchSF2File *file, guint sample_size);
guint ipatch_sf2_file_get_sample_size (IpatchSF2File *file);
void ipatch_sf2_file_set_sample24_pos (IpatchSF2File *file, guint sample24_pos);
guint ipatch_sf2_file_get_sample24_pos (IpatchSF2File *file);
#endif
|