61 Lilv::Node make_node(
const char* desc)
63 Lilv::Node n{
nullptr};
64 n.me = lilv_new_uri(world.me, desc);
70 LV2_Feature
const*
const* features{};
73 LV2_Atom_Forge forge{};
75 Lilv::Node input_class{make_node(LILV_URI_INPUT_PORT)};
76 Lilv::Node output_class{make_node(LILV_URI_OUTPUT_PORT)};
77 Lilv::Node control_class{make_node(LILV_URI_CONTROL_PORT)};
78 Lilv::Node audio_class{make_node(LILV_URI_AUDIO_PORT)};
79 Lilv::Node atom_class{make_node(LV2_ATOM__AtomPort)};
80 Lilv::Node atom_object_class{make_node(LV2_ATOM__Object)};
81 Lilv::Node event_class{make_node(LILV_URI_EVENT_PORT)};
82 Lilv::Node midi_event_class{make_node(LILV_URI_MIDI_EVENT)};
83 Lilv::Node cv_class{make_node(LV2_CORE__CVPort)};
84 Lilv::Node work_interface{make_node(LV2_WORKER__interface)};
85 Lilv::Node work_schedule{make_node(LV2_WORKER__schedule)};
87 Lilv::Node time_time_class{make_node(LV2_TIME__Time)};
88 Lilv::Node time_Position_class{make_node(LV2_TIME__Position)};
89 Lilv::Node time_rate_class{make_node(LV2_TIME__Rate)};
91 Lilv::Node time_barBeat_class{make_node(LV2_TIME__barBeat)};
92 Lilv::Node time_bar_class{make_node(LV2_TIME__bar)};
93 Lilv::Node time_beat_class{make_node(LV2_TIME__beat)};
94 Lilv::Node time_beatUnit_class{make_node(LV2_TIME__beatUnit)};
95 Lilv::Node time_beatsPerBar_class{make_node(LV2_TIME__beatsPerBar)};
96 Lilv::Node time_beatsPerMinute_class{make_node(LV2_TIME__beatsPerMinute)};
97 Lilv::Node time_frame_class{make_node(LV2_TIME__frame)};
98 Lilv::Node time_framesPerSecond_class{make_node(LV2_TIME__framesPerSecond)};
99 Lilv::Node time_speed_class{make_node(LV2_TIME__speed)};
101 Lilv::Node optional_feature{make_node(LV2_CORE__optionalFeature)};
102 Lilv::Node fixed_size{make_node(LV2_UI__fixedSize)};
103 Lilv::Node no_user_resize{make_node(LV2_UI__noUserResize)};
105 Lilv::Node state_loadDefaultState_node{make_node(LV2_STATE__loadDefaultState)};
107 Lilv::Node integer_property{make_node(
"http://lv2plug.in/ns/lv2core#integer")};
108 Lilv::Node toggled_property{make_node(
"http://lv2plug.in/ns/lv2core#toggled")};
109 Lilv::Node enumeration_property{
110 make_node(
"http://lv2plug.in/ns/lv2core#enumeration")};
111 Lilv::Node logarithmic_property{make_node(LV2_PORT_PROPS__logarithmic)};
112 Lilv::Node notOnGUI_property{make_node(LV2_PORT_PROPS__notOnGUI)};
114 Lilv::Node host_ui_type{make_node(
"http://lv2plug.in/ns/extensions/ui#Qt6UI")};
116 int32_t midi_buffer_size = 2048;
117 LV2_URID midi_event_id{};
118 LV2_URID atom_chunk_id{};
119 LV2_URID atom_sequence_id{};
120 LV2_URID atom_object_id{};
122 LV2_URID atom_eventTransfer{};
125 LV2_URID atom_Float_id{};
126 LV2_URID atom_Double_id{};
127 LV2_URID atom_Int_id{};
128 LV2_URID atom_Long_id{};
130 LV2_URID time_Time_id{};
131 LV2_URID time_Position_id{};
132 LV2_URID time_rate_id{};
134 LV2_URID time_barBeat_id{};
135 LV2_URID time_bar_id{};
136 LV2_URID time_beat_id{};
137 LV2_URID time_beatUnit_id{};
138 LV2_URID time_beatsPerBar_id{};
139 LV2_URID time_beatsPerMinute_id{};
140 LV2_URID time_frame_id{};
141 LV2_URID time_framesPerSecond_id{};
142 LV2_URID time_speed_id{};
144 std::vector<char> acquire_worker_data(
const char* data, uint32_t s)
noexcept
146 std::vector<char> cp;
147 worker_datas_pool.try_dequeue(cp);
148 cp.assign(data, data + s);
152 void release_worker_data(std::vector<char>&& v)
noexcept
154 worker_datas_pool.enqueue(std::move(v));
157 ossia::mpmc_queue<std::vector<char>> worker_datas_pool{};
160 ossia::mpmc_queue<std::vector<char>>* current_worker_datas{};
210 LV2_Feature
const*
const* features()
const {
return lv2_features.data(); }
212 using urid_map_t = boost::bimap<std::string, LV2_URID>;
214 int sampleRate = 44100;
216 std::vector<LV2_Options_Option> options;
218 LV2_URID urid_map_cur = 1;
219 ossia::hash_map<std::string, LV2_URID> urid_map_left;
220 ossia::hash_map<LV2_URID, std::string> urid_map_right;
222 LV2_URI_Map_Feature uri_map{};
223 LV2_URID uri_map_cur = 1;
224 ossia::hash_map<std::string, LV2_URID> uri_map_left;
227 LV2_URID_Unmap unmap{};
228 LV2_Event_Feature
event{};
229 LV2_Worker_Schedule worker{};
230 LV2_Worker_Schedule worker_state{};
232 LV2_Log_Log logger{};
233 LV2_Extension_Data_Feature ext_data{
nullptr};
235 LV2_Resize_Port_Resize ext_port_resize{};
236 LV2_State_Make_Path state_make_path{};
238 LV2_Feature uri_map_feature{
"http://lv2plug.in/ns/ext/uri-map", &uri_map};
239 LV2_Feature map_feature{LV2_URID__map, &map};
240 LV2_Feature unmap_feature{LV2_URID__unmap, &unmap};
241 LV2_Feature event_feature{LV2_EVENT_URI, &
event};
242 LV2_Feature options_feature{LV2_OPTIONS__options,
nullptr};
243 LV2_Feature worker_feature{LV2_WORKER__schedule, &worker};
244 LV2_Feature worker_state_feature{LV2_WORKER__schedule, &worker};
245 LV2_Feature logger_feature{LV2_LOG__log, &logger};
246 LV2_Feature ext_data_feature{LV2_DATA_ACCESS_URI, &ext_data};
247 LV2_Feature ext_port_resize_feature{LV2_RESIZE_PORT_URI, &ext_port_resize};
248 LV2_Feature state_make_path_feature{LV2_STATE__makePath, &state_make_path};
250 LV2_Feature state_load_default_feature{LV2_STATE__loadDefaultState,
nullptr};
254 LV2_Feature bounded{LV2_BUF_SIZE__boundedBlockLength,
nullptr};
255 LV2_Feature pow2{LV2_BUF_SIZE__powerOf2BlockLength,
nullptr};
257 std::vector<LV2_Feature*> lv2_features;
261 const LV2_Feature data_feature{LV2_DATA_ACCESS_URI, &ext_data};
Definition Context.hpp:191
Definition Context.hpp:206
Definition Context.hpp:60