<div dir="ltr"><div>Hi,<br></div><div>I'm using c++ and lvtk framework, but I'll be perfectly happy with using raw lv2 C functions to do this. Here is the code I have that works with LV2_ATOM__eventTransfer:</div><div>In the UI code:</div><div><br></div><div>      struct VectorOf5Ints {<br>        uint32_t size; // sizeof(LV2_Atom_Vector_Body) + (42 * sizeof(float);<br>        uint32_t type; // map(expand("Vector"))<br>        uint32_t child_size; // sizeof(float)<br>        uint32_t child_type; // map(expand("Float"))<br>        uint32_t elems[5];<br>      };<br>      VectorOf5Ints vec{sizeof(LV2_Atom_Vector_Body) + (5 * sizeof(uint32_t)),<br>                        map(LV2_ATOM__Vector),<br>                        sizeof(uint32_t),<br>                        map(LV2_ATOM__Int),<br>                        {5, 9, 5, 9, 7}};<br>      write(5, sizeof(vec), map(LV2_ATOM__eventTransfer), &vec);</div><div><br></div><div>where write is a LV2UI_Write_Function.</div><div><br></div><div>In the turtle file:</div><div>    ... , [<br>                   a lv2:InputPort, atom:AtomPort ;<br>                   atom:bufferType atom:Vector ;<br>              lv2:designation lv2:control ;<br>              lv2:index 5 ;<br>              lv2:symbol "out_ui" ;<br>                    lv2:name "UI to Business comm" ;<br>                 rdfs:comment "UI -> communication" ;<br>                  resize_port:minimumSize 15360 ;<br>            ] ...<br></div><div><br></div><div>In the plug-in connect_port function:</div><div>   configuration_from_ui = static_cast<int *>(data);</div><div><br></div><div>In the run function of my plugin:</div><div>    for (auto i{0}; i <= 5+9; ++i) {<br>         log.printf(map(LV2_LOG__Entry), "LV2LOGGER: %d\n",<br>                   configuration_from_ui[i]);<br>    }</div><div><br></div><div>This works, but it attaches the event header because I'm using LV2_ATOM__eventTransfer, but I really just want to use LV2_ATOM__atomTransfer is there a way to do this? when I change it in the code I get the following message in the console:</div><div><br></div><div>UI write with unsupported protocol 48 (<a href="http://lv2plug.in/ns/ext/atom#atomTransfer">http://lv2plug.in/ns/ext/atom#atomTransfer</a>)</div><div><br></div><div>Questions:<br></div><div>1) Is it really unsupported or am I doing something wrong? Like for example, do I need to change something in the turtle file?<br></div><div><br></div><div>2) What I'm trying to do is send a configuration state from the UI to the business end. Ideally I would like it to avoid sending the message every frame, what is it doing right now? is the host constantly copying a 15360 size buffer every frame? or only when I use the LV2UI_Write_Function it will copy the buffer into the business end of the plugin? what is the best way of doing this? Am I on the right track?</div><div><br></div><div>3) If I must use eventTransfer how can get just the event body when I'm reading it on the business end, notice I'm just doing a "for loop" for testing and I figured out the event header is 5 ints worth of size. Similarly, how do I get the atom body other than doing what I currently do which is just added a number to the pointer and taking that.<br></div></div>