libfluidsynth
2.5.0
|
SoundFont modulator functions and constants. More...
Typedefs | |
typedef double(* | fluid_mod_mapping_t) (const fluid_mod_t *mod, int value, int range, int is_src1, void *data) |
This function transforms or maps a modulator source value into a normalized range of [-1.0;+1.0] . More... | |
Enumerations | |
enum | fluid_mod_flags { FLUID_MOD_POSITIVE = 0 , FLUID_MOD_NEGATIVE = 1 , FLUID_MOD_UNIPOLAR = 0 , FLUID_MOD_BIPOLAR = 2 , FLUID_MOD_LINEAR = 0 , FLUID_MOD_CONCAVE = 4 , FLUID_MOD_CONVEX = 8 , FLUID_MOD_SWITCH = 12 , FLUID_MOD_GC = 0 , FLUID_MOD_CC = 16 , FLUID_MOD_CUSTOM = 0x40 , FLUID_MOD_SIN = 0x80 } |
Flags defining the polarity, mapping function and type of a modulator source. More... | |
enum | fluid_mod_src { FLUID_MOD_NONE = 0 , FLUID_MOD_VELOCITY = 2 , FLUID_MOD_KEY = 3 , FLUID_MOD_KEYPRESSURE = 10 , FLUID_MOD_CHANNELPRESSURE = 13 , FLUID_MOD_PITCHWHEEL = 14 , FLUID_MOD_PITCHWHEELSENS = 16 } |
General controller (if FLUID_MOD_GC in flags). More... | |
enum | fluid_mod_transforms { FLUID_MOD_TRANSFORM_LINEAR = 0 , FLUID_MOD_TRANSFORM_ABS = 2 } |
Transform types for the SoundFont2 modulators as defined by SoundFont 2.04 section 8.3. More... | |
Lifecycle Functions for Modulator_linebr@{ | |
fluid_mod_t * | new_fluid_mod (void) |
Create a new uninitialized modulator structure. More... | |
void | delete_fluid_mod (fluid_mod_t *mod) |
Free a modulator structure. More... | |
Functions | |
void | fluid_mod_clone (fluid_mod_t *mod, const fluid_mod_t *src) |
Clone the modulators destination, sources, flags and amount. More... | |
double | fluid_mod_get_amount (const fluid_mod_t *mod) |
Get the scale amount from a modulator. More... | |
int | fluid_mod_get_dest (const fluid_mod_t *mod) |
Get destination effect from a modulator. More... | |
int | fluid_mod_get_flags1 (const fluid_mod_t *mod) |
Get primary source flags from a modulator. More... | |
int | fluid_mod_get_flags2 (const fluid_mod_t *mod) |
Get secondary source flags from a modulator. More... | |
int | fluid_mod_get_source1 (const fluid_mod_t *mod) |
Get the primary source value from a modulator. More... | |
int | fluid_mod_get_source2 (const fluid_mod_t *mod) |
Get the secondary source value from a modulator. More... | |
int | fluid_mod_get_transform (const fluid_mod_t *mod) |
Get the transform type of a modulator. More... | |
int | fluid_mod_has_dest (const fluid_mod_t *mod, int gen) |
Check if the modulator has the given destination. More... | |
int | fluid_mod_has_source (const fluid_mod_t *mod, int cc, int ctrl) |
Check if the modulator has the given source. More... | |
void | fluid_mod_set_amount (fluid_mod_t *mod, double amount) |
Set the scale amount of a modulator. More... | |
void | fluid_mod_set_custom_mapping (fluid_mod_t *mod, fluid_mod_mapping_t mapping_function, void *data) |
Set a user defined mapping function of type fluid_mod_mapping_t to mod . More... | |
void | fluid_mod_set_dest (fluid_mod_t *mod, int dst) |
Set the destination effect of a modulator. More... | |
void | fluid_mod_set_source1 (fluid_mod_t *mod, int src, int flags) |
Set a modulator's primary source controller and flags. More... | |
void | fluid_mod_set_source2 (fluid_mod_t *mod, int src, int flags) |
Set a modulator's secondary source controller and flags. More... | |
void | fluid_mod_set_transform (fluid_mod_t *mod, int type) |
Set the transform type of a modulator. More... | |
size_t | fluid_mod_sizeof (void) |
Returns the size of the fluid_mod_t structure. More... | |
int | fluid_mod_test_identity (const fluid_mod_t *mod1, const fluid_mod_t *mod2) |
Checks if two modulators are identical in sources, flags and destination. More... | |
SoundFont modulator functions and constants.
typedef double(* fluid_mod_mapping_t) (const fluid_mod_t *mod, int value, int range, int is_src1, void *data) |
This function transforms or maps a modulator source value into a normalized range of [-1.0;+1.0]
.
See fluid_mod_set_custom_mapping().
mod | The modulator instance. The behavior is undefined if you modify mod through any of the fluid_mod_set*() functions from within the callback. |
value | The input value from the modulator source, which will be in range [0;16383] if the input source value is FLUID_MOD_PITCHWHEEL, or [0;127] otherwise. |
range | The value-range of the modulator source, i.e. 16384 , if the input source value is FLUID_MOD_PITCHWHEEL, otherwise 128 . |
data | Custom data pointer, as supplied via fluid_mod_set_custom_mapping(). |
is_src1 | A boolean, which, if true, indicates that the mapping function is called for source1. Otherwise, it's called for source2. Only useful if two sources have been specified with the FLUID_MOD_CUSTOM flag set. |
[-1.0;+1.0]
. For return values that exceed the mentioned range, the behavior is unspecified (i.e. it may be honored, it may be clipped, ignored, the entire modulator may be disabled, etc.). enum fluid_mod_flags |
Flags defining the polarity, mapping function and type of a modulator source.
Compare with SoundFont 2.04 PDF section 8.2.
Note: Bit values do not correspond to the SoundFont spec! Also note that FLUID_MOD_GC and FLUID_MOD_CC are in the flags field instead of the source field.
Enumerator | |
---|---|
FLUID_MOD_POSITIVE | Mapping function is positive. |
FLUID_MOD_NEGATIVE | Mapping function is negative. |
FLUID_MOD_UNIPOLAR | Mapping function is unipolar. |
FLUID_MOD_BIPOLAR | Mapping function is bipolar. |
FLUID_MOD_LINEAR | Linear mapping function. |
FLUID_MOD_CONCAVE | Concave mapping function. |
FLUID_MOD_CONVEX | Convex mapping function. |
FLUID_MOD_SWITCH | Switch (on/off) mapping function. |
FLUID_MOD_GC | General controller source type (fluid_mod_src) |
FLUID_MOD_CC | MIDI CC controller (source will be a MIDI CC number) |
FLUID_MOD_CUSTOM | Custom mapping function. |
FLUID_MOD_SIN | Custom non-standard sinus mapping function.
|
enum fluid_mod_src |
General controller (if FLUID_MOD_GC in flags).
This corresponds to SoundFont 2.04 PDF section 8.2.1
enum fluid_mod_transforms |
void delete_fluid_mod | ( | fluid_mod_t * | mod | ) |
Free a modulator structure.
mod | Modulator to free |
void fluid_mod_clone | ( | fluid_mod_t * | mod, |
const fluid_mod_t * | src | ||
) |
Clone the modulators destination, sources, flags and amount.
mod | the modulator to store the copy to |
src | the source modulator to retrieve the information from |
next
member of mod
will be left unchanged. double fluid_mod_get_amount | ( | const fluid_mod_t * | mod | ) |
Get the scale amount from a modulator.
mod | The modulator instance |
int fluid_mod_get_dest | ( | const fluid_mod_t * | mod | ) |
Get destination effect from a modulator.
mod | The modulator instance |
int fluid_mod_get_flags1 | ( | const fluid_mod_t * | mod | ) |
Get primary source flags from a modulator.
mod | The modulator instance |
int fluid_mod_get_flags2 | ( | const fluid_mod_t * | mod | ) |
Get secondary source flags from a modulator.
mod | The modulator instance |
int fluid_mod_get_source1 | ( | const fluid_mod_t * | mod | ) |
Get the primary source value from a modulator.
mod | The modulator instance |
int fluid_mod_get_source2 | ( | const fluid_mod_t * | mod | ) |
Get the secondary source value from a modulator.
mod | The modulator instance |
int fluid_mod_get_transform | ( | const fluid_mod_t * | mod | ) |
Get the transform type of a modulator.
mod | The modulator instance |
int fluid_mod_has_dest | ( | const fluid_mod_t * | mod, |
int | gen | ||
) |
Check if the modulator has the given destination.
mod | The modulator instance |
gen | The destination generator of type fluid_gen_type to check for |
int fluid_mod_has_source | ( | const fluid_mod_t * | mod, |
int | cc, | ||
int | ctrl | ||
) |
Check if the modulator has the given source.
mod | The modulator instance |
cc | Boolean value indicating if ctrl is a CC controller or not |
ctrl | The source to check for (if cc == FALSE : a value of type fluid_mod_src, else the value of the MIDI CC to check for) |
void fluid_mod_set_amount | ( | fluid_mod_t * | mod, |
double | amount | ||
) |
Set the scale amount of a modulator.
mod | The modulator instance |
amount | Scale amount to assign |
void fluid_mod_set_custom_mapping | ( | fluid_mod_t * | mod, |
fluid_mod_mapping_t | mapping_function, | ||
void * | data | ||
) |
Set a user defined mapping function of type fluid_mod_mapping_t to mod
.
To use this function, specify FLUID_MOD_CUSTOM as source flag.
mod | The modulator instance |
mapping_function | Pointer to the mapping function to assign |
data | User defined data pointer that will be passed into the mapping function, or NULL if not needed |
void fluid_mod_set_dest | ( | fluid_mod_t * | mod, |
int | dest | ||
) |
Set the destination effect of a modulator.
mod | The modulator instance |
dest | Destination generator (fluid_gen_type) |
void fluid_mod_set_source1 | ( | fluid_mod_t * | mod, |
int | src, | ||
int | flags | ||
) |
Set a modulator's primary source controller and flags.
mod | The modulator instance |
src | Modulator source (fluid_mod_src or a MIDI controller number) |
flags | Flags determining mapping function and whether the source controller is a general controller (FLUID_MOD_GC) or a MIDI CC controller (FLUID_MOD_CC), see fluid_mod_flags. |
void fluid_mod_set_source2 | ( | fluid_mod_t * | mod, |
int | src, | ||
int | flags | ||
) |
Set a modulator's secondary source controller and flags.
mod | The modulator instance |
src | Modulator source (fluid_mod_src or a MIDI controller number) |
flags | Flags determining mapping function and whether the source controller is a general controller (FLUID_MOD_GC) or a MIDI CC controller (FLUID_MOD_CC), see fluid_mod_flags. |
void fluid_mod_set_transform | ( | fluid_mod_t * | mod, |
int | type | ||
) |
Set the transform type of a modulator.
mod | The modulator instance |
type | Transform type, see fluid_mod_transforms |
size_t fluid_mod_sizeof | ( | void | ) |
Returns the size of the fluid_mod_t structure.
Useful in low latency scenarios e.g. to allocate a modulator on the stack.
int fluid_mod_test_identity | ( | const fluid_mod_t * | mod1, |
const fluid_mod_t * | mod2 | ||
) |
Checks if two modulators are identical in sources, flags and destination.
mod1 | First modulator |
mod2 | Second modulator |
SF2.01 section 9.5.1 page 69, 'bullet' 3 defines 'identical'.
fluid_mod_t* new_fluid_mod | ( | void | ) |
Create a new uninitialized modulator structure.