VST3: load custom state after setting parameters (#9206)
This broke in b27467157b
. Control port changes were
postponed (written to ringbuffer) and only evaluated
at first run.
This commit is contained in:
parent
f1d784afbb
commit
83d6b87249
@ -182,6 +182,7 @@ public:
|
|||||||
bool set_block_size (int32_t);
|
bool set_block_size (int32_t);
|
||||||
bool activate ();
|
bool activate ();
|
||||||
bool deactivate ();
|
bool deactivate ();
|
||||||
|
bool active () const { return _is_processing; }
|
||||||
|
|
||||||
/* State */
|
/* State */
|
||||||
bool save_state (RAMStream& stream);
|
bool save_state (RAMStream& stream);
|
||||||
|
@ -166,7 +166,8 @@ VST3Plugin::default_value (uint32_t port)
|
|||||||
void
|
void
|
||||||
VST3Plugin::set_parameter (uint32_t port, float val, sampleoffset_t when)
|
VST3Plugin::set_parameter (uint32_t port, float val, sampleoffset_t when)
|
||||||
{
|
{
|
||||||
if (AudioEngine::instance()->in_process_thread()) {
|
if (!_plug->active () || AudioEngine::instance()->in_process_thread()) {
|
||||||
|
/* directly use VST3PI::_input_param_changes */
|
||||||
_plug->set_parameter (port, val, when);
|
_plug->set_parameter (port, val, when);
|
||||||
} else {
|
} else {
|
||||||
assert (when == 0);
|
assert (when == 0);
|
||||||
@ -610,9 +611,18 @@ VST3Plugin::set_state (const XMLNode& node, int version)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This is not required, PluginInsert::set_state calls
|
||||||
|
* set_control_ids() which already calls VST3Plugin::set_parameter.
|
||||||
|
*
|
||||||
|
* However there /may/ not be controllables for all parameters. Doing
|
||||||
|
* this here also prevents an additional pass to synchronize the controller
|
||||||
|
* via VST3PI::load_state -> VST3PI::update_shadow_data -> addParameterData
|
||||||
|
*/
|
||||||
|
#if 1
|
||||||
if (!_plug->try_set_parameter_by_id (param_id, value)) {
|
if (!_plug->try_set_parameter_by_id (param_id, value)) {
|
||||||
warning << string_compose (_("VST3<%1>: Invalid Vst::ParamID in VST3Plugin::set_state"), name ()) << endmsg;
|
warning << string_compose (_("VST3<%1>: Invalid Vst::ParamID in VST3Plugin::set_state"), name ()) << endmsg;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLNode* chunk;
|
XMLNode* chunk;
|
||||||
@ -1253,6 +1263,8 @@ VST3PI::VST3PI (boost::shared_ptr<ARDOUR::VST3PluginModule> m, std::string uniqu
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32 n_params = _controller->getParameterCount ();
|
int32 n_params = _controller->getParameterCount ();
|
||||||
|
DEBUG_TRACE (DEBUG::VST3Config, string_compose ("VST3 parameter count: %1\n", n_params));
|
||||||
|
|
||||||
for (int32 i = 0; i < n_params; ++i) {
|
for (int32 i = 0; i < n_params; ++i) {
|
||||||
Vst::ParameterInfo pi;
|
Vst::ParameterInfo pi;
|
||||||
if (_controller->getParameterInfo (i, pi) != kResultTrue) {
|
if (_controller->getParameterInfo (i, pi) != kResultTrue) {
|
||||||
|
Loading…
Reference in New Issue
Block a user