IpatchSF2Gen

IpatchSF2Gen — SoundFont generator functions and definitions

Stability Level

Stable, unless otherwise indicated

Functions

Types and Values

Object Hierarchy

    GBoxed
    ╰── IpatchSF2GenArray
    GEnum
    ╰── IpatchSF2GenType

Description

SoundFont generators are synthesis parameters used by IpatchSF2Preset, IpatchSF2Inst, IpatchSF2PZone and IpatchSF2IZone objects.

Functions

IPATCH_SF2_GENID_SET()

#define IPATCH_SF2_GENID_SET(genid) ((guint64)0x1 << (genid))

IPATCH_SF2_GEN_ARRAY_TEST_FLAG()

#define             IPATCH_SF2_GEN_ARRAY_TEST_FLAG(array, genid)

IPATCH_SF2_GEN_ARRAY_SET_FLAG()

#define             IPATCH_SF2_GEN_ARRAY_SET_FLAG(array, genid)

IPATCH_SF2_GEN_ARRAY_CLEAR_FLAG()

#define             IPATCH_SF2_GEN_ARRAY_CLEAR_FLAG(array, genid)

ipatch_sf2_get_gen_info ()

const IpatchSF2GenInfo *
ipatch_sf2_get_gen_info (void);

ipatch_sf2_gen_is_valid ()

gboolean
ipatch_sf2_gen_is_valid (guint genid,
                         IpatchSF2GenPropsType propstype);

Checks if a generator is valid for the given propstype .

Parameters

genid

Generator ID to check

 

propstype

Generator property type (instrument/preset + global)

 

Returns

TRUE if valid, FALSE otherwise


ipatch_sf2_gen_array_new ()

IpatchSF2GenArray *
ipatch_sf2_gen_array_new (gboolean clear);

Create a new generator array object. A convenience function really, because one could just allocate an IpatchSF2GenArray structure instead.

Parameters

clear

If TRUE then array will be cleared, FALSE will not initalize it and it is up to the caller to do so.

 

Returns

New generator array


ipatch_sf2_gen_array_free ()

void
ipatch_sf2_gen_array_free (IpatchSF2GenArray *genarray);

ipatch_sf2_gen_array_duplicate ()

IpatchSF2GenArray *
ipatch_sf2_gen_array_duplicate (const IpatchSF2GenArray *array);

Duplicates a generator array structure.

Parameters

array

Generator array to duplicate

 

Returns

A newly allocated generator array structure which is a duplicate of array .


ipatch_sf2_gen_array_init ()

void
ipatch_sf2_gen_array_init (IpatchSF2GenArray *array,
                           gboolean offset,
                           gboolean set);

Initialize a generator array to default values.

Parameters

array

Generator array

 

offset

TRUE = initialize to Preset offset (zero) values, FALSE = initialize to instrument default values

 

set

TRUE to set flags indicating generator values are set, FALSE to clear all flag "set" bits

 

ipatch_sf2_gen_array_offset ()

gboolean
ipatch_sf2_gen_array_offset (IpatchSF2GenArray *abs_array,
                             const IpatchSF2GenArray *ofs_array);

Offsets the generators amount array in abs_array by adding the values in ofs_array to it. Values are clamped to their valid ranges.

Parameters

abs_array

Destination generator amount array that contains absolute (Instrument) generator values

 

ofs_array

Source generator amount array that contains offset (Preset) generator values

 

Returns

FALSE if note or velocity range does not intersect (in which case the non-intersecting ranges are left unassigned), TRUE otherwise


ipatch_sf2_gen_array_intersect_test ()

gboolean
ipatch_sf2_gen_array_intersect_test (const IpatchSF2GenArray *array1,
                                     const IpatchSF2GenArray *array2);

Checks if the note and velocity ranges in two generator arrays intersect.

Parameters

array1

First generator amount array

 

array2

Second generator amount array

 

Returns

TRUE if both ranges intersect, FALSE if one or both do not.


ipatch_sf2_gen_array_count_set ()

guint
ipatch_sf2_gen_array_count_set (IpatchSF2GenArray *array);

Get count of "set" generators in a generator array.

Parameters

array

Generator array

 

Returns

Count of "set" generators.


ipatch_sf2_gen_amount_to_value ()

void
ipatch_sf2_gen_amount_to_value (guint genid,
                                const IpatchSF2GenAmount *amt,
                                GValue *value);

Converts a generator amount to a GValue. Value will be initialized to one of two types: G_TYPE_INT for signed/unsigned integers or IPATCH_TYPE_RANGE for velocity or note split ranges.

Parameters

genid

Generator ID

 

amt

Generator amount for given genid

 

value

Uninitialized GValue to set to amt

 

ipatch_sf2_gen_default_value ()

void
ipatch_sf2_gen_default_value (guint genid,
                              gboolean ispreset,
                              IpatchSF2GenAmount *out_amt);

Get default value for a generator ID for the specified (ispreset ) zone type.

Parameters

genid

Generator ID

 

ispreset

TRUE for preset generators, FALSE for instrument

 

out_amt

A pointer to store the default amount into.

[out]

ipatch_sf2_gen_offset ()

gboolean
ipatch_sf2_gen_offset (guint genid,
                       IpatchSF2GenAmount *dst,
                       const IpatchSF2GenAmount *ofs);

Offsets a generator amount. Result of offset is clamped to maximum and minimum values for the given generator ID. In the case of note or velocity ranges a return value of TRUE (clamped) means that the ranges don't intersect (contrary return value to other range related functions).

Parameters

genid

ID of Generator to offset. Must be a valid preset generator.

 

dst

Pointer to the initial amount to offset, result is stored back into this parameter.

[inout]

ofs

Pointer to offset amount.

 

Returns

TRUE if value was clamped, FALSE otherwise.


ipatch_sf2_gen_clamp ()

void
ipatch_sf2_gen_clamp (guint genid,
                      int *sfval,
                      gboolean ispreset);

Clamp a generators value to its valid range.

Parameters

genid

Generator ID (IpatchSF2GenType)

 

sfval

Generator value to clamp (changed in place).

[inout]

ispreset

TRUE if its a Preset generator, FALSE if Instrument

 

ipatch_sf2_gen_range_intersect ()

gboolean
ipatch_sf2_gen_range_intersect (IpatchSF2GenAmount *dst,
                                const IpatchSF2GenAmount *src);

Find intersection of two generator ranges (common shared range). If ranges don't share anything in common dst is not assigned.

Parameters

dst

First generator amount range, result is also stored here.

[inout]

src

Second generator amount range

 

Returns

FALSE if ranges don't share any range in common.


ipatch_sf2_gen_range_intersect_test ()

gboolean
ipatch_sf2_gen_range_intersect_test (const IpatchSF2GenAmount *amt1,
                                     const IpatchSF2GenAmount *amt2);

Test if two ranges intersect.

Parameters

amt1

First generator amount range

 

amt2

Second generator amount range

 

Returns

FALSE if ranges don't share any range in common, TRUE otherwise


ipatch_sf2_gen_get_prop_name ()

const char *
ipatch_sf2_gen_get_prop_name (guint genid);

Get the GObject property name for a given generator ID.

Parameters

genid

Generator ID

 

Returns

Property name or NULL if no property name for genid . The returned string is internal and should not be modified or freed.

Types and Values

IPATCH_SF2_GEN_COUNT

#define IPATCH_SF2_GEN_COUNT 59

enum IpatchSF2GenPropsType

Generator property type (defines which gens are valid and their ranges). Note that TRUE/FALSE can be used to designate PRESET/INST (backwards compatible with previous function). Also note that global properties can be treated as a flag: IPATCH_SF2_GEN_PROPS_GLOBAL_FLAG.

Members

IPATCH_SF2_GEN_PROPS_INST

   

IPATCH_SF2_GEN_PROPS_PRESET

   

IPATCH_SF2_GEN_PROPS_INST_GLOBAL

   

IPATCH_SF2_GEN_PROPS_PRESET_GLOBAL

   

IPATCH_SF2_GEN_PROPS_GLOBAL_FLAG

#define IPATCH_SF2_GEN_PROPS_GLOBAL_FLAG 0x02

IPATCH_SF2_GEN_PROPS_MASK

#define IPATCH_SF2_GEN_PROPS_MASK		0x01

union IpatchSF2GenAmount


struct IpatchSF2Gen

struct IpatchSF2Gen {
    guint16 id;			/* generator #IPGenType ID */
    IpatchSF2GenAmount amount; /* generator value */
};

enum IpatchSF2GenType

Members

IPATCH_SF2_GEN_SAMPLE_START

   

IPATCH_SF2_GEN_SAMPLE_END

   

IPATCH_SF2_GEN_SAMPLE_LOOP_START

   

IPATCH_SF2_GEN_SAMPLE_LOOP_END

   

IPATCH_SF2_GEN_SAMPLE_COARSE_START

   

IPATCH_SF2_GEN_MOD_LFO_TO_PITCH

   

IPATCH_SF2_GEN_VIB_LFO_TO_PITCH

   

IPATCH_SF2_GEN_MOD_ENV_TO_PITCH

   

IPATCH_SF2_GEN_FILTER_CUTOFF

   

IPATCH_SF2_GEN_FILTER_Q

   

IPATCH_SF2_GEN_MOD_LFO_TO_FILTER_CUTOFF

   

IPATCH_SF2_GEN_MOD_ENV_TO_FILTER_CUTOFF

   

IPATCH_SF2_GEN_SAMPLE_COARSE_END

   

IPATCH_SF2_GEN_MOD_LFO_TO_VOLUME

   

IPATCH_SF2_GEN_UNUSED1

   

IPATCH_SF2_GEN_CHORUS

   

IPATCH_SF2_GEN_REVERB

   

IPATCH_SF2_GEN_PAN

   

IPATCH_SF2_GEN_UNUSED2

   

IPATCH_SF2_GEN_UNUSED3

   

IPATCH_SF2_GEN_UNUSED4

   

IPATCH_SF2_GEN_MOD_LFO_DELAY

   

IPATCH_SF2_GEN_MOD_LFO_FREQ

   

IPATCH_SF2_GEN_VIB_LFO_DELAY

   

IPATCH_SF2_GEN_VIB_LFO_FREQ

   

IPATCH_SF2_GEN_MOD_ENV_DELAY

   

IPATCH_SF2_GEN_MOD_ENV_ATTACK

   

IPATCH_SF2_GEN_MOD_ENV_HOLD

   

IPATCH_SF2_GEN_MOD_ENV_DECAY

   

IPATCH_SF2_GEN_MOD_ENV_SUSTAIN

   

IPATCH_SF2_GEN_MOD_ENV_RELEASE

   

IPATCH_SF2_GEN_NOTE_TO_MOD_ENV_HOLD

   

IPATCH_SF2_GEN_NOTE_TO_MOD_ENV_DECAY

   

IPATCH_SF2_GEN_VOL_ENV_DELAY

   

IPATCH_SF2_GEN_VOL_ENV_ATTACK

   

IPATCH_SF2_GEN_VOL_ENV_HOLD

   

IPATCH_SF2_GEN_VOL_ENV_DECAY

   

IPATCH_SF2_GEN_VOL_ENV_SUSTAIN

   

IPATCH_SF2_GEN_VOL_ENV_RELEASE

   

IPATCH_SF2_GEN_NOTE_TO_VOL_ENV_HOLD

   

IPATCH_SF2_GEN_NOTE_TO_VOL_ENV_DECAY

   

IPATCH_SF2_GEN_INSTRUMENT_ID

   

IPATCH_SF2_GEN_RESERVED1

   

IPATCH_SF2_GEN_NOTE_RANGE

   

IPATCH_SF2_GEN_VELOCITY_RANGE

   

IPATCH_SF2_GEN_SAMPLE_COARSE_LOOP_START

   

IPATCH_SF2_GEN_FIXED_NOTE

   

IPATCH_SF2_GEN_FIXED_VELOCITY

   

IPATCH_SF2_GEN_ATTENUATION

   

IPATCH_SF2_GEN_RESERVED2

   

IPATCH_SF2_GEN_SAMPLE_COARSE_LOOP_END

   

IPATCH_SF2_GEN_COARSE_TUNE

   

IPATCH_SF2_GEN_FINE_TUNE_OVERRIDE

   

IPATCH_SF2_GEN_SAMPLE_ID

   

IPATCH_SF2_GEN_SAMPLE_MODES

   

IPATCH_SF2_GEN_RESERVED3

   

IPATCH_SF2_GEN_SCALE_TUNE

   

IPATCH_SF2_GEN_EXCLUSIVE_CLASS

   

IPATCH_SF2_GEN_ROOT_NOTE_OVERRIDE

   

enum IpatchSF2GenSampleModes

Members

IPATCH_SF2_GEN_SAMPLE_MODE_NOLOOP

   

IPATCH_SF2_GEN_SAMPLE_MODE_LOOP

   

IPATCH_SF2_GEN_SAMPLE_MODE_UNUSED

   

IPATCH_SF2_GEN_SAMPLE_MODE_LOOP_RELEASE

   

struct IpatchSF2GenInfo

struct IpatchSF2GenInfo {
    IpatchSF2GenAmount min; /* minimum value allowed */
    IpatchSF2GenAmount max; /* maximum value allowed */
    IpatchSF2GenAmount def; /* default value */
    gint16 unit;			/* #IpatchUnitType type */
    char *label;			/* short descriptive label */
    char *descr;			/* more complete description */
};

ipatch_sf2_gen_ofs_array

extern IpatchSF2GenArray *ipatch_sf2_gen_ofs_array;

ipatch_sf2_gen_abs_array

extern IpatchSF2GenArray *ipatch_sf2_gen_abs_array;

ipatch_sf2_gen_ofs_valid_mask

extern guint64 ipatch_sf2_gen_ofs_valid_mask;

ipatch_sf2_gen_abs_valid_mask

extern guint64 ipatch_sf2_gen_abs_valid_mask;

ipatch_sf2_gen_add_mask

extern guint64 ipatch_sf2_gen_add_mask;