mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2025-02-25 13:21:19 +00:00
add a function for removing default modulators
This commit is contained in:
parent
c40c49b331
commit
179f87f952
2 changed files with 41 additions and 0 deletions
|
@ -295,6 +295,7 @@ enum fluid_synth_add_mod {
|
||||||
};
|
};
|
||||||
|
|
||||||
FLUIDSYNTH_API int fluid_synth_add_default_mod(fluid_synth_t* synth, fluid_mod_t* mod, int mode);
|
FLUIDSYNTH_API int fluid_synth_add_default_mod(fluid_synth_t* synth, fluid_mod_t* mod, int mode);
|
||||||
|
FLUIDSYNTH_API int fluid_synth_remove_default_mod(fluid_synth_t* synth, const fluid_mod_t* mod);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1157,6 +1157,46 @@ fluid_synth_add_default_mod(fluid_synth_t* synth, fluid_mod_t* mod, int mode)
|
||||||
FLUID_API_RETURN(FLUID_OK);
|
FLUID_API_RETURN(FLUID_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the specified modulator \c mod from the synth's default modulator list.
|
||||||
|
* fluid_mod_test_identity() will be used to test modulator matching.
|
||||||
|
* @param synth synth instance
|
||||||
|
* @param mod The modulator to remove
|
||||||
|
* @return FLUID_OK if a matching modulator was found and successfully removed, FLUID_FAILED otherwise
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
fluid_synth_remove_default_mod(fluid_synth_t* synth, const fluid_mod_t* mod)
|
||||||
|
{
|
||||||
|
fluid_mod_t* default_mod;
|
||||||
|
fluid_mod_t* last_mod;
|
||||||
|
|
||||||
|
fluid_return_val_if_fail (synth != NULL, FLUID_FAILED);
|
||||||
|
fluid_return_val_if_fail (mod != NULL, FLUID_FAILED);
|
||||||
|
fluid_synth_api_enter(synth);
|
||||||
|
|
||||||
|
last_mod = default_mod = synth->default_mod;
|
||||||
|
|
||||||
|
while (default_mod != NULL) {
|
||||||
|
if (fluid_mod_test_identity(default_mod, mod))
|
||||||
|
{
|
||||||
|
if(synth->default_mod == default_mod)
|
||||||
|
{
|
||||||
|
synth->default_mod = synth->default_mod->next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
last_mod->next = default_mod->next;
|
||||||
|
}
|
||||||
|
fluid_mod_delete(default_mod);
|
||||||
|
FLUID_API_RETURN(FLUID_OK);
|
||||||
|
}
|
||||||
|
last_mod = default_mod;
|
||||||
|
default_mod = default_mod->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
FLUID_API_RETURN(FLUID_FAILED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a MIDI controller event on a MIDI channel.
|
* Send a MIDI controller event on a MIDI channel.
|
||||||
|
|
Loading…
Reference in a new issue