# LV2 IRI escaping required for plug:parameter

**URL:** https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897
**Category:** General JUCE discussion
**Created:** [November 26, 2022, 2:47pm UTC](https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897 "2022-11-26T14:47:02Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![atsushieno](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/atsushieno/32/13014_2.png) [@atsushieno](https://forum.juce.com/u/atsushieno)
#### Post date: [November 26, 2022, 2:47pm UTC](https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897/1 "2022-11-26T14:47:02Z")

</div>

I was privately trying to build LV2 version of [Dexed](https://github.com/asb2m10/dexed) and noticed that the resulting `dsp.ttl` does not appropriately escape characters like dot (`.`).

[RecallFeature::getSymbolForGroup](https://github.com/juce-framework/JUCE/blob/965d0ca4be178c4a0000b116d460e15c30311992/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp#L902) implements it correctly (it checks the symbol agains `allowedCharacters`). The same should be done for [ParameterStorage::getIri](https://github.com/juce-framework/JUCE/blob/965d0ca4be178c4a0000b116d460e15c30311992/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp#L125). The fix should be simple.

Dexed has some parameters whose name contains `.` and thus the resulting plugin cannot be loaded by any host I tried.

---

<div class="post-metadata">

### Author: ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)
#### Post date: [December 7, 2022, 5:54pm UTC](https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897/2 "2022-12-07T17:54:28Z")

</div>

Are you sure that this is the reason that the host refuses to load the plugin?

To test, I tried modifying the DSPModulePluginDemo to use the parameter IDs “input.gain” and “output.gain”. The resulting plugin loads fine in the AudioPluginHost (without emitting any turtle-related warnings from Lilv), in Carla 2.5.2, and in REAPER 6.71. I also tried pasting the generated dsp.ttl into some online TTL validators, and those didn’t raise any complaints.

It would be helpful to know the hosts you’ve used for testing, and any log/error output produced by those hosts.

---

<div class="post-metadata">

### Author: ![atsushieno](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/atsushieno/32/13014_2.png) [@atsushieno](https://forum.juce.com/u/atsushieno)
#### Post date: [December 7, 2022, 6:36pm UTC](https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897/3 "2022-12-07T18:36:21Z")

</div>

Ah, to be precise it is `.` at the end. `.` in the middle is allowed, [as per RDF 1.1 specification](https://www.w3.org/TR/turtle/#grammar-production-PN_LOCAL) (`PN_LOCAL`) I confirmed with Zrythm, QTractor, JUCE AudioPluginHost. They all use lilv.

Dexed (the one I mentioned) has such a parameter whose name ends with `.` e.g. `OSC KEY SYNC.` and it results in this error. Here is what lilv within JUCE AudioPluginHost emits on the console:

```auto
error: /home/atsushi/.lv2/Dexed.lv2/dsp.ttl:71:22: subject ends with `.'
lilv_world_load_file(): error: Error loading file `file:///home/atsushi/.lv2/Dexed.lv2/dsp.ttl'

```

---

<div class="post-metadata">

### Author: ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)
#### Post date: [December 7, 2022, 7:40pm UTC](https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897/4 "2022-12-07T19:40:48Z")

</div>

Thanks, I see now. I’ll get that fixed.

---

<div class="post-metadata">

### Author: ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)
#### Post date: [December 14, 2022, 5:10pm UTC](https://forum.juce.com/t/lv2-iri-escaping-required-for-plug-parameter/53897/5 "2022-12-14T17:10:00Z")

</div>

Thanks again, that’s fixed here:

> <https://github.com/juce-framework/JUCE/commit/b70ab79173277b7ef692b2a5b540f4e763e85c8f>
