1 /*
2  * libInstPatch
3  * Copyright (C) 1999-2014 Element Green <element@elementsofsound.org>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public License
7  * as published by the Free Software Foundation; version 2.1
8  * of the License only.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18  * 02110-1301, USA or on the web at http://www.gnu.org.
19  */
20 #ifndef __IPATCH_GIG_INST_H__
21 #define __IPATCH_GIG_INST_H__
22 
23 #include <glib.h>
24 #include <glib-object.h>
25 
26 /* forward type declarations */
27 typedef struct _IpatchGigInst IpatchGigInst;
28 typedef struct _IpatchGigInstClass IpatchGigInstClass;
29 typedef struct _IpatchGigInstParams IpatchGigInstParams;
30 
31 #include <libinstpatch/IpatchDLS2Inst.h>
32 
33 #define IPATCH_TYPE_GIG_INST   (ipatch_gig_inst_get_type ())
34 #define IPATCH_GIG_INST(obj) \
35   (G_TYPE_CHECK_INSTANCE_CAST ((obj), IPATCH_TYPE_GIG_INST, \
36   IpatchGigInst))
37 #define IPATCH_GIG_INST_CLASS(klass) \
38   (G_TYPE_CHECK_CLASS_CAST ((klass), IPATCH_TYPE_GIG_INST, \
39   IpatchGigInstClass))
40 #define IPATCH_IS_GIG_INST(obj) \
41   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IPATCH_TYPE_GIG_INST))
42 #define IPATCH_IS_GIG_INST_CLASS(klass) \
43   (G_TYPE_CHECK_CLASS_TYPE ((klass), IPATCH_TYPE_GIG_INST))
44 #define IPATCH_GIG_INST_GET_CLASS(obj) \
45   (G_TYPE_INSTANCE_GET_CLASS ((obj), IPATCH_TYPE_GIG_INST, \
46   IpatchGigInstClass))
47 
48 /* GigaSampler instrument object */
49 struct _IpatchGigInst
50 {
51     IpatchDLS2Inst parent_instance;
52 
53     guint32 attenuate;
54     guint16 effect_send;
55     guint16 fine_tune;
56     guint16 pitch_bend_range;
57     guint8 dim_key_start;		/* bit 1: piano release */
58     guint8 dim_key_end;
59 
60     guint8 chunk_3ewg[12];	/* 3ewg chunk - FIXME what is it? */
61 };
62 
63 struct _IpatchGigInstClass
64 {
65     IpatchDLS2InstClass parent_class;
66 };
67 
68 GType ipatch_gig_inst_get_type(void);
69 IpatchGigInst *ipatch_gig_inst_new(void);
70 IpatchGigInst *ipatch_gig_inst_first(IpatchIter *iter);
71 IpatchGigInst *ipatch_gig_inst_next(IpatchIter *iter);
72 
73 #endif
74