summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/uri_map.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-11-01 23:29:10 -0400
committerDavid Robillard <d@drobilla.net>2014-11-02 02:10:24 -0500
commit8a128b33d38172ae525ac798c53bc105bc4e2c64 (patch)
tree226459f2fec72a9717d12f190d354f72175607dc /libs/ardour/ardour/uri_map.h
parent6dfb11c2d08201f1a27818955707590b762f5a40 (diff)
Automation of LV2 plugin properties.
Work towards ParameterDescriptor being used more universally to describe control characteristics.
Diffstat (limited to 'libs/ardour/ardour/uri_map.h')
-rw-r--r--libs/ardour/ardour/uri_map.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/libs/ardour/ardour/uri_map.h b/libs/ardour/ardour/uri_map.h
index a948ea4002..d745ad58e7 100644
--- a/libs/ardour/ardour/uri_map.h
+++ b/libs/ardour/ardour/uri_map.h
@@ -24,6 +24,8 @@
#include <boost/utility.hpp>
+#include <glibmm/threads.h>
+
#include "lv2.h"
#include "lv2/lv2plug.in/ns/ext/uri-map/uri-map.h"
#include "lv2/lv2plug.in/ns/ext/urid/urid.h"
@@ -39,6 +41,8 @@ namespace ARDOUR {
*/
class LIBARDOUR_API URIMap : public boost::noncopyable {
public:
+ static URIMap& instance();
+
URIMap();
LV2_Feature* uri_map_feature() { return &_uri_map_feature; }
@@ -51,6 +55,38 @@ public:
uint32_t uri_to_id(const char* uri);
const char* id_to_uri(uint32_t id) const;
+ // Cached URIDs for use in real-time code
+ struct URIDs {
+ void init(URIMap& uri_map);
+
+ uint32_t atom_Chunk;
+ uint32_t atom_Path;
+ uint32_t atom_Sequence;
+ uint32_t atom_eventTransfer;
+ uint32_t atom_URID;
+ uint32_t atom_Blank;
+ uint32_t atom_Object;
+ uint32_t atom_Float;
+ uint32_t log_Error;
+ uint32_t log_Note;
+ uint32_t log_Warning;
+ uint32_t midi_MidiEvent;
+ uint32_t time_Position;
+ uint32_t time_bar;
+ uint32_t time_barBeat;
+ uint32_t time_beatUnit;
+ uint32_t time_beatsPerBar;
+ uint32_t time_beatsPerMinute;
+ uint32_t time_frame;
+ uint32_t time_speed;
+ uint32_t patch_Get;
+ uint32_t patch_Set;
+ uint32_t patch_property;
+ uint32_t patch_value;
+ };
+
+ URIDs urids;
+
private:
typedef std::map<const std::string, uint32_t> Map;
typedef std::map<uint32_t, const std::string> Unmap;
@@ -64,6 +100,10 @@ private:
LV2_URID_Map _urid_map_feature_data;
LV2_Feature _urid_unmap_feature;
LV2_URID_Unmap _urid_unmap_feature_data;
+
+ mutable Glib::Threads::Mutex _lock;
+
+ static URIMap* uri_map;
};
} // namespace ARDOUR