13
0

Add sample-rate as float option parameter for LV2 plugins and UIs

This commit is contained in:
Robin Gareus 2019-08-26 23:30:21 +02:00
parent 5e46108e95
commit 2dbeaaffa6
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 6 additions and 2 deletions

View File

@ -194,6 +194,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
Worker* _worker;
Worker* _state_worker;
samplecnt_t _sample_rate;
float _fsample_rate;
float* _control_data;
float* _shadow_data;
float* _defaults;

View File

@ -439,6 +439,9 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
_current_latency = 0;
_impl->block_length = _session.get_block_size();
_sample_rate = rate;
_fsample_rate = rate;
_instance_access_feature.URI = "http://lv2plug.in/ns/ext/instance-access";
_data_access_feature.URI = "http://lv2plug.in/ns/ext/data-access";
_make_path_feature.URI = LV2_STATE__makePath;
@ -525,6 +528,8 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
sizeof(int32_t), atom_Int, &_max_block_length },
{ LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id(LV2_BUF_SIZE__sequenceSize),
sizeof(int32_t), atom_Int, &_seq_size },
{ LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id(LV2_PARAMETERS__sampleRate),
sizeof(float), atom_Float, &_fsample_rate },
{ LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id("http://lv2plug.in/ns/ext/buf-size#nominalBlockLength"),
sizeof(int32_t), atom_Int, &_impl->block_length },
{ LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id("http://ardour.org/lv2/threads/#schedPolicy"),
@ -669,8 +674,6 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
}
lilv_state_free(state);
_sample_rate = rate;
const uint32_t num_ports = this->num_ports();
for (uint32_t i = 0; i < num_ports; ++i) {
const LilvPort* port = lilv_plugin_get_port_by_index(_impl->plugin, i);