clap

CLAP Audio Plugin API
Log | Files | Refs | README | LICENSE

commit 5aabf491b0d31e5eb151636930f1eb96dff54031
parent 94d1c6f8bbf6cd69fcdee46922c268bc493d120e
Author: Alexandre BIQUE <bique.alexandre@gmail.com>
Date:   Wed,  2 Jun 2021 00:49:53 +0200

More glue

Diffstat:
Mexamples/plugins/plugin.cc | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mexamples/plugins/plugin.hh | 4++--
2 files changed, 90 insertions(+), 2 deletions(-)

diff --git a/examples/plugins/plugin.cc b/examples/plugins/plugin.cc @@ -264,6 +264,94 @@ namespace clap { return self.audioPortsSetConfig(config_id); } + uint32_t Plugin::clapParamsCount(const clap_plugin *plugin) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.count"); + + return self.paramsCount(); + } + + bool Plugin::clapParamsIinfo(const clap_plugin *plugin, + int32_t param_index, + clap_param_info * param_info) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.info"); + + auto count = clapParamsCount(plugin); + if (param_index >= count) { + std::ostringstream msg; + msg << "called clap_plugin_params.info with an index out of bounds: " << param_index + << " >= " << count; + self.hostMisbehaving(msg.str()); + return false; + } + + return self.paramsInfo(param_index, param_info); + } + + bool Plugin::clapParamsEnumValue(const clap_plugin *plugin, + clap_id param_id, + int32_t value_index, + clap_param_value * value) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.enum_value"); + + // TODO: check the value index? + + return self.paramsEnumValue(param_id, value_index, value); + } + + bool + Plugin::clapParamsValue(const clap_plugin *plugin, clap_id param_id, clap_param_value *value) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.value"); + + // TODO extra checks + + return self.paramsValue(param_id, value); + } + + bool Plugin::clapParamsSetValue(const clap_plugin *plugin, + clap_id param_id, + clap_param_value value, + clap_param_value modulation) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.set_value"); + + if (self.isActive_) { + self.hostMisbehaving( + "it is forbidden to call clap_plugin_params.set_value() if the plugin is activated"); + return false; + } + + // TODO: extra checks + + return self.paramsSetValue(param_id, value, modulation); + } + + bool Plugin::clapParamsValueToText(const clap_plugin *plugin, + clap_id param_id, + clap_param_value value, + char * display, + uint32_t size) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.value_to_text"); + + // TODO: extra checks + return self.paramsValueToText(param_id, value, display, size); + } + + bool Plugin::clapParamsTextToValue(const clap_plugin *plugin, + clap_id param_id, + const char * display, + clap_param_value * value) { + auto &self = from(plugin); + self.ensureMainThread("clap_plugin_params.text_to_value"); + + // TODO: extra checks + return self.paramsTextToValue(param_id, display, value); + } + ///////////// // Logging // ///////////// diff --git a/examples/plugins/plugin.hh b/examples/plugins/plugin.hh @@ -62,8 +62,8 @@ namespace clap { return false; } virtual bool paramsValue(clap_id paramId, clap_param_value *value) { return false; } - virtual void - paramsSetValue(clap_id paramId, clap_param_value value, clap_param_value modulation) {} + virtual bool + paramsSetValue(clap_id paramId, clap_param_value value, clap_param_value modulation) { return false; } virtual bool paramsValueToText(clap_id paramId, clap_param_value value, char *display, uint32_t size) { return false;