diff --git a/src/sfloader/fluid_defsfont.c b/src/sfloader/fluid_defsfont.c index 6e19eb71..e12eeffa 100644 --- a/src/sfloader/fluid_defsfont.c +++ b/src/sfloader/fluid_defsfont.c @@ -1099,7 +1099,7 @@ new_fluid_preset_zone(char *name) /* Flag all generators as unused (default, they will be set when they are found * in the sound font). * This also sets the generator values to default, but that is of no concern here.*/ - fluid_gen_set_default_values(&zone->gen[0]); + fluid_gen_init(&zone->gen[0], NULL); zone->mod = NULL; /* list of modulators */ return zone; } @@ -1650,7 +1650,7 @@ new_fluid_inst_zone(char *name) zone->range.ignore = FALSE; /* Flag the generators as unused. * This also sets the generator values to default, but they will be overwritten anyway, if used.*/ - fluid_gen_set_default_values(&zone->gen[0]); + fluid_gen_init(&zone->gen[0], NULL); zone->mod = NULL; /* list of modulators */ return zone; } diff --git a/src/synth/fluid_gen.c b/src/synth/fluid_gen.c index f01f9419..06ea9d84 100644 --- a/src/synth/fluid_gen.c +++ b/src/synth/fluid_gen.c @@ -92,14 +92,12 @@ static const fluid_gen_info_t fluid_gen_info[] = { GEN_CUSTOM_FILTERQ, 1, 1, 0.0f, 960.0f, 0.0f } }; - -/** - * Set an array of generators to their default values. - * @param gen Array of generators (should be #GEN_LAST in size). - * @return Always returns #FLUID_OK +/* fluid_gen_init + * + * Set an array of generators to their initial value */ -int -fluid_gen_set_default_values(fluid_gen_t *gen) +void +fluid_gen_init(fluid_gen_t *gen, fluid_channel_t *channel) { int i; @@ -107,39 +105,17 @@ fluid_gen_set_default_values(fluid_gen_t *gen) { gen[i].flags = GEN_UNUSED; gen[i].mod = 0.0; - gen[i].nrpn = 0.0; + gen[i].nrpn = (channel == NULL) ? 0.0 : fluid_channel_get_gen(channel, i); gen[i].val = fluid_gen_info[i].def; - } - - return FLUID_OK; -} - - -/* fluid_gen_init - * - * Set an array of generators to their initial value - */ -int -fluid_gen_init(fluid_gen_t *gen, fluid_channel_t *channel) -{ - int i; - - fluid_gen_set_default_values(gen); - - for(i = 0; i < GEN_LAST; i++) - { - gen[i].nrpn = fluid_channel_get_gen(channel, i); /* This is an extension to the SoundFont standard. More * documentation is available at the fluid_synth_set_gen2() * function. */ - if(fluid_channel_get_gen_abs(channel, i)) + if(channel != NULL && fluid_channel_get_gen_abs(channel, i)) { gen[i].flags = GEN_ABS_NRPN; } } - - return FLUID_OK; } fluid_real_t fluid_gen_scale(int gen, float value) diff --git a/src/synth/fluid_gen.h b/src/synth/fluid_gen.h index d156b807..b4ea6f6b 100644 --- a/src/synth/fluid_gen.h +++ b/src/synth/fluid_gen.h @@ -31,7 +31,7 @@ typedef struct _fluid_gen_info_t char nrpn_scale; /* The scale to convert from NRPN (cfr. fluid_gen_map_nrpn()) */ float min; /* The minimum value */ float max; /* The maximum value */ - float def; /* The default value (cfr. fluid_gen_set_default_values()) */ + float def; /* The default value (cfr. fluid_gen_init()) */ } fluid_gen_info_t; /* @@ -60,8 +60,7 @@ enum fluid_gen_flags fluid_real_t fluid_gen_scale(int gen, float value); fluid_real_t fluid_gen_scale_nrpn(int gen, int nrpn); -int fluid_gen_init(fluid_gen_t *gen, fluid_channel_t *channel); -int fluid_gen_set_default_values(fluid_gen_t *gen); +void fluid_gen_init(fluid_gen_t *gen, fluid_channel_t *channel); #endif /* _FLUID_GEN_H */ diff --git a/src/synth/fluid_voice.c b/src/synth/fluid_voice.c index 51c1ebf6..04ec9b38 100644 --- a/src/synth/fluid_voice.c +++ b/src/synth/fluid_voice.c @@ -606,7 +606,7 @@ fluid_voice_calculate_runtime_synthesis_parameters(fluid_voice_t *voice) * - Add the output value to the modulation value of the generator. * * Note: The generators have been initialized with - * fluid_gen_set_default_values. + * fluid_gen_init(). */ for(i = 0; i < voice->mod_count; i++)