[LV2] jalv hacking

Hermann Meyer brummer- at web.de
Sat Aug 29 10:54:49 PDT 2015



Am 29.08.2015 um 19:11 schrieb Hanspeter Portner:
> On 29.08.2015 17:30, Hermann Meyer wrote:
>> So what, lets save a state file form the preset to load, and I try:
>>
>>>      LILV_FOREACH(nodes, i, presets) {
>>>          const LilvNode* preset = lilv_nodes_get(presets, i);
>>>          lilv_world_load_resource(world, preset);
>>>          LilvNodes* labels = lilv_world_find_nodes(
>>>                  world, preset, lilv_new_uri(world, LILV_NS_RDFS
>>> "label"), NULL);
>>>              if (labels) {
>>>                  const LilvNode* label = lilv_nodes_get_first(labels);
>>>                  const char* set =  lilv_node_as_string(label);
>>>                  if (strcmp
>>> (set,row.get_value(psets.col_label).c_str()) == 0) {
>>>                      state = lilv_state_new_from_world(world, &map,
>>> preset);
>>>   lilv_state_save(world,&map,&unmap,state,NULL,"tmp/","state.ttl");
>>>                  }
>>>                  lilv_nodes_free(labels);
>>>              }
>>>     }
>> and fail. I tried the very same inside of jalv, hacking the required
>> functions in, but, no avail.
>> The saved state file remains empty, and jalv segfault, while it isn't a
>> problem to load the same state  on startup when I didn't try to save it
>> to file but just load it from the pointer (see my requested feature on
>> dev.drobilla.net)
> Here a wild guess:
>
> from lilv.h:1223 (v0.20)
> @param save_dir Directory of files created by plugin during save (or
>   NULL). If the state will be saved, this should be the bundle directory
>   later passed to lilv_state_save.
>
> There may be a directory path mismatch, as 'lilv_state_from_world'
> cannot know that (and where) you want to save the state.
>
> 'lilv_state_save' apart from writing the 'state.ttl' and 'manifest.ttl'
> also seems to do some file linking based on the above mentioned path.
>
>> Now this is the point, were I need help, How the heck could I save a
>> statefile from a LilvState* state pionter which otherwise work well, but
>> is loaded with lilv_state_new_from_world() while the plugin itself isn't
>> loaded.
> Does this workaround work any better?
> * 'lilv_state_new_from_world'
> * 'lilv_state_to_string'
> * 'fwrite'
>
> 'lilv_state_to_string' does obviously not do any such file linking and
> thus cannot handle custom plugin state files.
>
> Hp
> _______________________________________________
>
Hi Hanspeter

Jep, that brings me a step forward, I can save the state file this way, 
and it looks good so far.
Only, jalv cant load it, fail with:
error: failed to expand CURIE `pset:Preset'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:appliesTo'
error: attempt to add quad with NULL field
error: failed to expand CURIE `rdfs:label'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:port'
error: attempt to add quad with NULL field
error: failed to expand CURIE `lv2:symbol'
error: attempt to add quad with NULL field
error: failed to expand CURIE `pset:value'
error: attempt to add quad with NULL field
Failed to load state from /tmp/state.ttl

looks like a manifest file is needed


More information about the Devel mailing list