libinstpatch Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties |
IpatchSF2; enum IpatchSF2Flags; #define IPATCH_SF2_UNUSED_FLAG_SHIFT enum IpatchSF2InfoType; #define IPATCH_SF2_INFO_COUNT #define IPATCH_SF2_DEFAULT_ENGINE IpatchSF2 * ipatch_sf2_new (void
); #define ipatch_sf2_get_presets (sfont) #define ipatch_sf2_get_insts (sfont) #define ipatch_sf2_get_samples (sfont) void ipatch_sf2_set_file (IpatchSF2 *sf
,IpatchSF2File *file
); IpatchSF2File * ipatch_sf2_get_file (IpatchSF2 *sf
); char * ipatch_sf2_get_info (IpatchSF2 *sf
,IpatchSF2InfoType id
); void ipatch_sf2_set_info (IpatchSF2 *sf
,IpatchSF2InfoType id
,const char *val
); IpatchSF2Info * ipatch_sf2_get_info_array (IpatchSF2 *sf
); void ipatch_sf2_free_info_array (IpatchSF2Info *array
); gboolean ipatch_sf2_info_id_is_valid (guint32 id
); int ipatch_sf2_get_info_max_size (IpatchSF2InfoType infotype
); IpatchSF2Preset * ipatch_sf2_find_preset (IpatchSF2 *sf
,const char *name
,int bank
,int program
,const IpatchSF2Preset *exclude
); IpatchSF2Inst * ipatch_sf2_find_inst (IpatchSF2 *sf
,const char *name
,const IpatchSF2Inst *exclude
); IpatchSF2Sample * ipatch_sf2_find_sample (IpatchSF2 *sf
,const char *name
,const IpatchSF2Sample *exclude
); IpatchList * ipatch_sf2_get_zone_references (IpatchItem *item
); char * ipatch_sf2_make_unique_name (IpatchSF2 *sfont
,GType child_type
,const char *name
,const IpatchItem *exclude
);
"author" gchar* : Read / Write "comment" gchar* : Read / Write "copyright" gchar* : Read / Write "date" gchar* : Read / Write "engine" gchar* : Read / Write "name" gchar* : Read / Write "product" gchar* : Read / Write "rom-name" gchar* : Read / Write "rom-version" gchar* : Read / Write "samples-24bit" gboolean : Read / Write "software" gchar* : Read / Write "version" gchar* : Read / Write
SoundFont version 2 instrument file object. Parent to IpatchSF2Preset, IpatchSF2Inst and IpatchSF2Sample objects.
typedef struct { IpatchBase parent_instance; guint16 ver_major, ver_minor; /* SoundFont version */ guint16 romver_major, romver_minor; /* ROM version (if any) */ GHashTable *info; /* hash of info strings by 4 char ID */ GSList *presets; /* list of #IpatchSF2Preset structures */ GSList *insts; /* list of #IpatchSF2Inst structures */ GSList *samples; /* list of #IpatchSF2Sample structures */ } IpatchSF2;
typedef enum { /* SoundFont 24 bit samples enabled flag */ IPATCH_SF2_SAMPLES_24BIT = 1 << IPATCH_BASE_UNUSED_FLAG_SHIFT } IpatchSF2Flags;
#define IPATCH_SF2_UNUSED_FLAG_SHIFT (IPATCH_BASE_UNUSED_FLAG_SHIFT + 3)
typedef enum { IPATCH_SF2_UNKNOWN, /* unknown chunk ("NULL" value) */ IPATCH_SF2_VERSION = IPATCH_SFONT_FOURCC_IFIL, /* SoundFont version */ IPATCH_SF2_ENGINE = IPATCH_SFONT_FOURCC_ISNG,/* target sound engine */ IPATCH_SF2_NAME = IPATCH_SFONT_FOURCC_INAM, /* SoundFont name */ IPATCH_SF2_ROM_NAME = IPATCH_SFONT_FOURCC_IROM, /* ROM name */ IPATCH_SF2_ROM_VERSION = IPATCH_SFONT_FOURCC_IVER, /* ROM version */ IPATCH_SF2_DATE = IPATCH_SFONT_FOURCC_ICRD, /* creation date */ IPATCH_SF2_AUTHOR = IPATCH_SFONT_FOURCC_IENG,/* sound designers/engineers */ IPATCH_SF2_PRODUCT = IPATCH_SFONT_FOURCC_IPRD, /* product intended for */ IPATCH_SF2_COPYRIGHT = IPATCH_SFONT_FOURCC_ICOP, /* copyright message */ IPATCH_SF2_COMMENT = IPATCH_SFONT_FOURCC_ICMT, /* comments */ IPATCH_SF2_SOFTWARE = IPATCH_SFONT_FOURCC_ISFT /* software "create:modify" */ }IpatchSF2InfoType;
IpatchSF2 * ipatch_sf2_new (void
);
Create a new SoundFont base object.
Returns : |
New SoundFont base object with a reference count of 1. Caller owns the reference and removing it will destroy the item. |
void ipatch_sf2_set_file (IpatchSF2 *sf
,IpatchSF2File *file
);
Sets the file object of a SoundFont. SoundFont files are kept open
for sample data that references the file. This function sets a
SoundFonts authoritive file object. A convenience function, as
ipatch_base_set_file()
does the same thing (albeit without more specific
type casting).
|
SoundFont to set file object of |
|
File object to use with the SoundFont. |
IpatchSF2File * ipatch_sf2_get_file (IpatchSF2 *sf
);
Gets the file object of a SoundFont. The returned SoundFont file object's
reference count has incremented. The caller owns the reference and is
responsible for removing it with
.
A convenience function as g_object_unref()
ipatch_base_get_file()
does the same thing
(albeit without more specific type casting).
|
SoundFont to get file object of |
Returns : |
The SoundFont file object or NULL if sf is not open. Remember
to unref the file object with when
done with it.
|
char * ipatch_sf2_get_info (IpatchSF2 *sf
,IpatchSF2InfoType id
);
Get a SoundFont info string by RIFF FOURCC ID.
|
SoundFont to get info from |
|
RIFF FOURCC id |
Returns : |
New allocated info string value or NULL if no info with the
given id . String should be freed when finished with it.
|
void ipatch_sf2_set_info (IpatchSF2 *sf
,IpatchSF2InfoType id
,const char *val
);
Set SoundFont info. Validates id
and ensures val
does not exceed
the maximum allowed length for the given info type.
Emits changed signal on SoundFont.
|
SoundFont to set info of |
|
RIFF FOURCC id |
|
Value to set info to or NULL to unset (clear) info.
|
IpatchSF2Info * ipatch_sf2_get_info_array (IpatchSF2 *sf
);
Get all string info (not IPATCH_SF2_VERSION or IPATCH_SF2_ROM_VERSION) from a SoundFont object. The array is sorted in the order recommended by the SoundFont standard for saving.
|
SoundFont to get all info strings from |
Returns : |
A newly allocated array of info structures terminated by
an array member with 0 valued id
field. Remember to free the array with ipatch_sf2_free_info_array()
when finished with it.
|
void ipatch_sf2_free_info_array (IpatchSF2Info *array
);
Frees an info array returned by ipatch_sf2_get_info_array()
.
|
SoundFont info array |
gboolean ipatch_sf2_info_id_is_valid (guint32 id
);
Check if a given RIFF FOURCC id is a valid SoundFont info id.
|
RIFF FOURCC id (see IpatchSF2InfoType) |
Returns : |
TRUE if id is a valid info id, FALSE otherwise
|
int ipatch_sf2_get_info_max_size (IpatchSF2InfoType infotype
);
Get maximum chunk size for info chunks.
NOTE: Max size includes terminating NULL character so subtract one from returned value to get max allowed string length.
|
An info enumeration |
Returns : |
Maximum info chunk size or 0 if invalid or variable length info chunk type. Subtract one to get max allowed string length (if returned value was not 0). |
IpatchSF2Preset * ipatch_sf2_find_preset (IpatchSF2 *sf
,const char *name
,int bank
,int program
,const IpatchSF2Preset *exclude
);
Find a preset by name or bank:preset MIDI numbers. If preset name
and bank
:program
are specified then match for either condition.
If a preset is found its reference count is incremented before it
is returned. The caller is responsible for removing the reference
with g_object_unref()
when finished with it.
|
SoundFont to search in |
|
Name of preset to find or NULL to match any name
|
|
MIDI bank number of preset to search for or -1 to not search by MIDI bank:program numbers |
|
MIDI program number of preset to search for, only used
if bank is 0-128
|
|
A preset to exclude from the search or NULL
|
Returns : |
The matching preset or NULL if not found. Remember to unref
the item when finished with it.
|
IpatchSF2Inst * ipatch_sf2_find_inst (IpatchSF2 *sf
,const char *name
,const IpatchSF2Inst *exclude
);
Find an instrument by name
in a SoundFont. If a matching instrument
is found, its reference count is incremented before it is returned.
The caller is responsible for removing the reference with g_object_unref()
when finished with it.
IpatchSF2Sample * ipatch_sf2_find_sample (IpatchSF2 *sf
,const char *name
,const IpatchSF2Sample *exclude
);
Find a sample by name
in a SoundFont. If a sample is found its
reference count is incremented before it is returned. The caller
is responsible for removing the reference with g_object_unref()
when finished with it.
IpatchList * ipatch_sf2_get_zone_references (IpatchItem *item
);
Get list of zones referencing an IpatchSF2Inst or IpatchSF2Sample.
|
Item to locate referencing zones of, must be of type IpatchSF2Inst or IpatchSF2Sample and be parented to an IpatchSF2 object. |
Returns : |
New object list containing IpatchSF2Zone objects that
refer to item . The new list object has a reference count of 1
which the caller owns, unreference to free the list.
|
char * ipatch_sf2_make_unique_name (IpatchSF2 *sfont
,GType child_type
,const char *name
,const IpatchItem *exclude
);
Generates a unique name for the given child_type
in sfont
. The name
parameter is used as a base and is modified, by appending a number, to
make it unique (if necessary). The exclude
parameter is used to exclude
an existing sfont
child item from the search.
MT-Note: To ensure that an item is actually unique before being
added to a SoundFont object, ipatch_container_add_unique()
should be
used.
|
SoundFont item |
|
A child type of sfont to search for a unique name in
|
|
An initial name to use or NULL |
|
An item to exclude from search or NULL |
Returns : |
A new unique name which should be freed when finished with it. |
"engine"
property"engine" gchar* : Read / Write
Sound synthesis engine identifier.
Default value: "EMU8000"
"product"
property"product" gchar* : Read / Write
Product SoundFont is intended for.
Default value: NULL
"rom-version"
property"rom-version" gchar* : Read / Write
ROM version "major.minor".
Default value: NULL
"samples-24bit"
property"samples-24bit" gboolean : Read / Write
Enable 24 bit samples.
Default value: FALSE
"software"
property"software" gchar* : Read / Write
Software 'created by:modified by'.
Default value: NULL
"version"
property"version" gchar* : Read / Write
SoundFont version ("major.minor").
Default value: "2.01"