Mercurial > hg > piper-cpp
diff vamp-client/PiperVampPlugin.h @ 287:09753ad777db
Add support for ProgramParameters. In theory this means we can select a program and then re-query the plugin's parameters and get the right values back, just as would happen if we were working with the remote extractor directly as a local Vamp plugin.
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 07 Apr 2020 15:56:02 +0100 |
parents | 4b581a498981 |
children | 26027c3a99a0 |
line wrap: on
line diff
--- a/vamp-client/PiperVampPlugin.h Tue Jan 07 11:20:47 2020 +0000 +++ b/vamp-client/PiperVampPlugin.h Tue Apr 07 15:56:02 2020 +0100 @@ -41,6 +41,7 @@ #include "vamp-support/PluginStaticData.h" #include "vamp-support/PluginConfiguration.h" +#include "vamp-support/PluginProgramParameters.h" #include "PluginClient.h" @@ -107,7 +108,8 @@ float inputSampleRate, int adapterFlags, PluginStaticData psd, - PluginConfiguration defaultConfig) : + PluginConfiguration defaultConfig, + PluginProgramParameters programParameters) : Plugin(inputSampleRate), m_client(client), m_key(pluginKey), @@ -115,7 +117,8 @@ m_state(Loaded), m_psd(psd), m_defaultConfig(defaultConfig), - m_config(defaultConfig) + m_config(defaultConfig), + m_programParameters(programParameters) { } virtual ~PiperVampPlugin() { @@ -193,11 +196,18 @@ throw std::logic_error("Can't select program after plugin initialised"); } m_config.currentProgram = program; + + const auto &pp = m_programParameters.programParameters; + if (pp.find(program) != pp.end()) { + for (auto param: pp.at(program)) { + m_config.parameterValues[param.first] = param.second; + } + } } bool initialise(size_t inputChannels, - size_t stepSize, - size_t blockSize) override { + size_t stepSize, + size_t blockSize) override { if (m_state == Failed) { throw std::logic_error("Plugin is in failed state"); @@ -412,6 +422,7 @@ OutputList m_outputs; PluginConfiguration m_defaultConfig; PluginConfiguration m_config; + PluginProgramParameters m_programParameters; }; }