From 6e16f69c2645f54670dfb3af946e21a89fc8dd09 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 3 Nov 2014 17:29:11 -0500 Subject: Add menu to set frequency controls in beats, and half or double current value. Test with e.g. fomp:cs_phaser1_lfo LFO frequency. --- libs/ardour/ardour/parameter_descriptor.h | 1 + libs/ardour/ardour/session.h | 3 ++- libs/ardour/lv2_plugin.cc | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'libs') diff --git a/libs/ardour/ardour/parameter_descriptor.h b/libs/ardour/ardour/parameter_descriptor.h index 379d97ef3e..d647183b2d 100644 --- a/libs/ardour/ardour/parameter_descriptor.h +++ b/libs/ardour/ardour/parameter_descriptor.h @@ -37,6 +37,7 @@ struct ParameterDescriptor NONE, ///< No unit DB, ///< Decibels MIDI_NOTE, ///< MIDI note number + HZ, ///< Frequency in Hertz }; ParameterDescriptor(const Evoral::Parameter& parameter) diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 61f57a6cc6..86d8c66593 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -547,7 +547,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop void set_silent (bool yn); bool silent () { return _silent; } - TempoMap& tempo_map() { return *_tempo_map; } + TempoMap& tempo_map() { return *_tempo_map; } + const TempoMap& tempo_map() const { return *_tempo_map; } /* region info */ diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index f78d018082..4affd89eae 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -148,6 +148,7 @@ public: LilvNode* ui_GtkUI; LilvNode* ui_external; LilvNode* ui_externalkx; + LilvNode* units_hz; LilvNode* units_db; LilvNode* units_unit; LilvNode* units_render; @@ -1337,6 +1338,8 @@ load_parameter_descriptor_units(LilvWorld* lworld, ParameterDescriptor& desc, co desc.unit = ParameterDescriptor::MIDI_NOTE; } else if (lilv_nodes_contains(units, _world.units_db)) { desc.unit = ParameterDescriptor::DB; + } else if (lilv_nodes_contains(units, _world.units_hz)) { + desc.unit = ParameterDescriptor::HZ; } else if (lilv_nodes_size(units) > 0) { const LilvNode* unit = lilv_nodes_get_first(units); LilvNode* render = get_value(lworld, unit, _world.units_render); @@ -2314,6 +2317,7 @@ LV2World::LV2World() ui_externalkx = lilv_new_uri(world, "http://kxstudio.sf.net/ns/lv2ext/external-ui#Widget"); units_unit = lilv_new_uri(world, LV2_UNITS__unit); units_render = lilv_new_uri(world, LV2_UNITS__render); + units_hz = lilv_new_uri(world, LV2_UNITS__hz); units_midiNote = lilv_new_uri(world, LV2_UNITS__midiNote); units_db = lilv_new_uri(world, LV2_UNITS__db); patch_writable = lilv_new_uri(world, LV2_PATCH__writable); @@ -2324,6 +2328,7 @@ LV2World::~LV2World() { lilv_node_free(patch_Message); lilv_node_free(patch_writable); + lilv_node_free(units_hz); lilv_node_free(units_midiNote); lilv_node_free(units_db); lilv_node_free(units_unit); -- cgit v1.2.3