libinstpatch Reference Manual | ||||
---|---|---|---|---|
Top | Description |
IpatchDLS2Conn; IpatchDLS2ConnInfo; #define IPATCH_TYPE_DLS2_CONN #define IPATCH_DLS2_CONN_ARE_IDENTICAL (a, b) enum IpatchDLS2ConnSrcType; enum IpatchDLS2ConnDestType; #define IPATCH_DLS2_CONN_OUTPUT_TRANS_NONE enum IpatchDLS2ConnTransformType; enum IpatchDLS2ConnPolarityType; enum IpatchDLS2ConnTransformMasks; enum IpatchDLS2ConnTransformShifts; GType ipatch_dls2_conn_get_type (void
); IpatchDLS2Conn * ipatch_dls2_conn_new (void
); void ipatch_dls2_conn_free (IpatchDLS2Conn *conn
); IpatchDLS2Conn * ipatch_dls2_conn_duplicate (const IpatchDLS2Conn *conn
); void ipatch_dls2_conn_list_set (GSList **list
,const IpatchDLS2Conn *conn
); void ipatch_dls2_conn_list_unset (GSList **list
,const IpatchDLS2Conn *conn
); GSList * ipatch_dls2_conn_list_duplicate (const GSList *list
); GSList * ipatch_dls2_conn_list_duplicate_fast (const GSList *list
); void ipatch_dls2_conn_list_free (GSList *list
,gboolean free_conns
);
Defines structures and functions used for DLS version 2 instrument parameters (called connections in DLS terminology).
typedef struct { guint16 src; /* source enum */ guint16 ctrlsrc; /* second source enum */ guint16 dest; /* destination enum */ guint16 trans; /* transform enum */ gint32 scale; /* scale value */ } IpatchDLS2Conn;
typedef struct { guint16 type; /* IpatchDLS2ConnDestType */ gint32 min; /* minimum value allowed */ gint32 max; /* maximum value allowed */ gint32 def; /* default value */ int unit; /* #IpatchUnitType type */ char *label; /* short descriptive label */ char *descr; /* more complete description */ } IpatchDLS2ConnInfo;
typedef enum { IPATCH_DLS2_CONN_SRC_NONE = 0, /* No source */ IPATCH_DLS2_CONN_SRC_LFO = 1, /* Modulation LFO */ IPATCH_DLS2_CONN_SRC_VELOCITY = 2, /* MIDI Note-On velocity */ IPATCH_DLS2_CONN_SRC_NOTE = 3, /* MIDI Note number */ IPATCH_DLS2_CONN_SRC_EG1 = 4, /* Envelope Generator 1 */ IPATCH_DLS2_CONN_SRC_EG2 = 5, /* Envelope Generator 2 */ IPATCH_DLS2_CONN_SRC_PITCH_WHEEL = 6, /* Pitch Wheel */ IPATCH_DLS2_CONN_SRC_POLY_PRESSURE = 7, /* Polyphonic pressure */ IPATCH_DLS2_CONN_SRC_CHANNEL_PRESSURE = 8, /* Channel Pressure */ IPATCH_DLS2_CONN_SRC_VIBRATO = 9, /* Vibrato LFO */ /* defined MIDI controller sources */ IPATCH_DLS2_CONN_SRC_CC1 = 0x0081, /* Modulation */ IPATCH_DLS2_CONN_SRC_CC7 = 0x0087, /* Volume */ IPATCH_DLS2_CONN_SRC_CC10 = 0x008A, /* Pan */ IPATCH_DLS2_CONN_SRC_CC11 = 0x008B, /* Expression */ IPATCH_DLS2_CONN_SRC_CC91 = 0x00DB, /* Chorus Send */ IPATCH_DLS2_CONN_SRC_CC93 = 0x00DD, /* Reverb Send */ /* MIDI registered parameter numbers */ IPATCH_DLS2_CONN_SRC_RPN0 = 0x0100, /* Pitch bend range */ IPATCH_DLS2_CONN_SRC_RPN1 = 0x0101, /* Fine tune */ IPATCH_DLS2_CONN_SRC_RPN2 = 0x0102 /* Coarse tune */ } IpatchDLS2ConnSrcType;
typedef enum { IPATCH_DLS2_CONN_DEST_NONE = 0, IPATCH_DLS2_CONN_DEST_GAIN = 1, IPATCH_DLS2_CONN_DEST_RESERVED = 2, IPATCH_DLS2_CONN_DEST_PITCH = 3, IPATCH_DLS2_CONN_DEST_PAN = 4, IPATCH_DLS2_CONN_DEST_NOTE = 5, IPATCH_DLS2_CONN_DEST_LEFT = 0x0010, IPATCH_DLS2_CONN_DEST_RIGHT = 0x0011, IPATCH_DLS2_CONN_DEST_CENTER = 0x0012, IPATCH_DLS2_CONN_DEST_LFE_CHANNEL = 0x0013, IPATCH_DLS2_CONN_DEST_LEFT_REAR = 0x0014, IPATCH_DLS2_CONN_DEST_RIGHT_REAR = 0x0015, IPATCH_DLS2_CONN_DEST_CHORUS = 0x0080, IPATCH_DLS2_CONN_DEST_REVERB = 0x0081, IPATCH_DLS2_CONN_DEST_LFO_FREQ = 0x0104, IPATCH_DLS2_CONN_DEST_LFO_DELAY = 0x0105, IPATCH_DLS2_CONN_DEST_VIB_FREQ = 0x0114, IPATCH_DLS2_CONN_DEST_VIB_DELAY = 0x0115, IPATCH_DLS2_CONN_DEST_EG1_ATTACK = 0x0206, IPATCH_DLS2_CONN_DEST_EG1_DECAY = 0x0207, IPATCH_DLS2_CONN_DEST_EG1_RESERVED = 0x0208, IPATCH_DLS2_CONN_DEST_EG1_RELEASE = 0x0209, IPATCH_DLS2_CONN_DEST_EG1_SUSTAIN = 0x020A, IPATCH_DLS2_CONN_DEST_EG1_DELAY = 0x020B, IPATCH_DLS2_CONN_DEST_EG1_HOLD = 0x020C, IPATCH_DLS2_CONN_DEST_EG1_SHUTDOWN = 0x020D, IPATCH_DLS2_CONN_DEST_EG2_ATTACK = 0x030A, IPATCH_DLS2_CONN_DEST_EG2_DECAY = 0x030B, IPATCH_DLS2_CONN_DEST_EG2_RESERVED = 0x030C, IPATCH_DLS2_CONN_DEST_EG2_RELEASE = 0x030D, IPATCH_DLS2_CONN_DEST_EG2_SUSTAIN = 0x030E, IPATCH_DLS2_CONN_DEST_EG2_DELAY = 0x030F, IPATCH_DLS2_CONN_DEST_EG2_HOLD = 0x0310, IPATCH_DLS2_CONN_DEST_FILTER_CUTOFF = 0x0500, IPATCH_DLS2_CONN_DEST_FILTER_Q = 0x0501 } IpatchDLS2ConnDestType;
typedef enum { IPATCH_DLS2_CONN_TRANS_LINEAR = 0, IPATCH_DLS2_CONN_TRANS_CONCAVE = 1, IPATCH_DLS2_CONN_TRANS_CONVEX = 2, IPATCH_DLS2_CONN_TRANS_SWITCH = 3 } IpatchDLS2ConnTransformType;
typedef enum { IPATCH_DLS2_CONN_POLARITY_UNI = 0, IPATCH_DLS2_CONN_POLARITY_BI = 1 } IpatchDLS2ConnPolarityType;
typedef enum { IPATCH_DLS2_CONN_MASK_OUTPUT_TRANS = 0x000F, /* Output transform mask */ IPATCH_DLS2_CONN_MASK_CTRLSRC_TRANS = 0x00F0, /* Control transform mask */ IPATCH_DLS2_CONN_MASK_CTRLSRC_POLARITY = 0x0100, /* Control polarity mask */ IPATCH_DLS2_CONN_MASK_CTRLSRC_INVERT = 0x0200, /* Control invert mask */ IPATCH_DLS2_CONN_MASK_SRC_TRANS = 0x3C00, /* Source transform mask */ IPATCH_DLS2_CONN_MASK_SRC_POLARITY = 0x4000, /* Source polarity mask */ IPATCH_DLS2_CONN_MASK_SRC_INVERT = 0x8000 /* Source invert mask */ } IpatchDLS2ConnTransformMasks;
typedef enum { IPATCH_DLS2_CONN_SHIFT_OUTPUT_TRANS = 0, /* Output transform shift */ IPATCH_DLS2_CONN_SHIFT_CTRLSRC_TRANS = 4, /* Control transform shift */ IPATCH_DLS2_CONN_SHIFT_CTRLSRC_POLARITY = 8, /* Control polarity shift */ IPATCH_DLS2_CONN_SHIFT_CTRLSRC_INVERT = 9, /* Control invert shift */ IPATCH_DLS2_CONN_SHIFT_SRC_TRANS = 10, /* Source transform shift */ IPATCH_DLS2_CONN_SHIFT_SRC_POLARITY = 14, /* Source polarity shift */ IPATCH_DLS2_CONN_SHIFT_SRC_INVERT = 15 /* Source invert shift */ } IpatchDLS2ConnTransformShifts;
GType ipatch_dls2_conn_get_type (void
);
Get the IpatchDLS2Conn boxed type
Returns : |
Boxed GType of the IpatchDLS2Conn structure |
IpatchDLS2Conn * ipatch_dls2_conn_new (void
);
Create a new connection
Returns : |
New connection |
void ipatch_dls2_conn_free (IpatchDLS2Conn *conn
);
Free an IpatchDLS2Conn structure
|
Connection to free, should not be referenced by any zones. |
IpatchDLS2Conn * ipatch_dls2_conn_duplicate (const IpatchDLS2Conn *conn
);
Duplicate a connection
|
DLS connection to duplicate |
Returns : |
New duplicate connection |
void ipatch_dls2_conn_list_set (GSList **list
,const IpatchDLS2Conn *conn
);
Set a connection in a connection list. The connection list is searched for any existing identical connection (same source, control and destination). If an identical connection is found, its values are overwritten with the new values, otherwise a new connection is added to the list and the values copied to it.
|
Pointer to the root pointer of a connection list |
|
DLS connection to set in list
|
void ipatch_dls2_conn_list_unset (GSList **list
,const IpatchDLS2Conn *conn
);
Remove a connection from a connection list. The connection list is
searched for an identical connection to conn
(same source,
control and destination). If a match is found, it is removed, otherwise
nothing. This essentially sets a connection to its default value, for
those connections which are defined.
|
Pointer to the root pointer of a connection list |
|
DLS connection to remove from list
|
GSList * ipatch_dls2_conn_list_duplicate (const GSList *list
);
Like ipatch_dls2_conn_list_duplicate()
but optimized for speed, new list
is backwards from original.
|
GSList of IpatchDLS2Conn structures to duplicate |
Returns : |
New duplicate connection list which should be freed with
ipatch_dls2_conn_list_free() when finished with it.
|
GSList * ipatch_dls2_conn_list_duplicate_fast
(const GSList *list
);
void ipatch_dls2_conn_list_free (GSList *list
,gboolean free_conns
);
Free a list of connections
|
Connection list to free |
|
If TRUE then the connections themselves are freed, FALSE
makes this function act just like g_slist_free() (only the list is
freed not the connections).
|