Good to hear that there's something in the pipeline to address this.
I'll certainly add support for it once it's stable and supported in the
major hosts.
BTW, trying to run the example sampler in qtractor and it segfaults (see
gdb output below).  Not sure if qtractor is doing some wrong, or me, or
the plugin :)
The other thing I'd love to be able to do is somehow change the # of
control ports dynamically (so I can expose exactly the right # of
gain/pan ports for the # of samples).  dynamic-manifest seems like a
promising way to do this, but I haven't seen a way to ask the host to
re-poll for a new manifest, so that makes it pretty much useless if you
ever want to change kits.  Any thoughts on this?
Thanks!
-Nick
GDB Output:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff3c2b708 in main_arena () from /lib/libc.so.6
(gdb) up
#1  0x00007fffe4681db9 in map_uri (plugin=0x294e540, uri=0x7fffe4682228
"http://lv2plug.in/plugins/eg-sampler#filename") at ../sampler.c:354
354        return plugin->map->map(plugin->map->handle, uri);
(gdb) print plugin
$1 = (Sampler *) 0x294e540
(gdb) print *plugin
$2 = {map = 0x7ffff3c2b718, samp = 0x29cd720, pending_samp = 0x29e6300,
pending_samp_mutex = {__data = {__lock = 0, __count = 0, __owner = 0,
__nusers = 1, __kind = 0, __spins = 0,
       __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats
12 times>, "\001", '\000' <repeats 26 times>, __align = 0},
pending_samp_cond = {__data = {__lock = 0, __futex = 1,
       __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex =
0x294e558, __nwaiters = 2, __broadcast_seq = 0},
     __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats
23
times>, "X\345\224\002\000\000\000\000\002\000\000\000\000\000\000",
__align = 4294967296}, pending_sample_ready = 1,
   output_port = 0x0, event_port = 0x0, uris = {midi_event = 0,
atom_message = 0, set_message = 0, state_path = 0, filename_key = 0},
play = false, frame = 43818880,
   worker_thread = 140736974575360}
(gdb) print *(plugin->map)
$3 = {handle = 0x7ffff3c2b708, map = 0x7ffff3c2b708 <main_arena+264>}
(gdb) print (plugin->map->map)
$4 = (LV2_URID (*)(LV2_URID_Map_Handle, const char *)) 0x7ffff3c2b708
<main_arena+264>
(gdb) print *(plugin->map->map)
$5 = {LV2_URID (LV2_URID_Map_Handle, const char *)} 0x7ffff3c2b708
<main_arena+264>
On 02/13/2012 10:04 PM, David Robillard wrote:
  On Mon, 2012-02-13 at 17:02 +0000, Filipe Lopes wrote:
  Very nice plugin, I tested it in my host and
works great in a small
 test (will give it more attention later).
 (Sad thing about no string-port or some other way to
 provide compatibility) 
 string-port (which is not implemented by much at all)
isn't a very good
 way to gain compatibility.
 For the curious, plugin control beyond beyond floats is where the most
 work has been going on lately and should be released soon, and is
 working in LV2 svn as well as my simple test host jalv[1].  The relevant
 stuff is the atom[2] and message[3] extensions.  The example sampler
 plugin[4] uses this to talk between the UI and plugin to load sample
 files.
 High level overview/rationale documentation is still nonexistent, but
 particularly since there's a working example it should be pretty
 figure-out-able.
 This work, in conjunction with the state[5] extension, should remove all
 need for control port kludges and plugins accessing the file system.
 Cheers,
 -dr
 [1] 
http://svn.drobilla.net/lad/trunk/jalv/
 [2] 
http://lv2plug.in/ns/ext/atom
 [3] 
http://lv2plug.in/ns/ext/message
 [4] 
http://lv2plug.in/repo/trunk/plugins/eg-sampler.lv2/
 [5] 
http://lv2plug.in/ns/ext/state
 _______________________________________________
 Linux-audio-dev mailing list
 Linux-audio-dev(a)lists.linuxaudio.org
 
http://lists.linuxaudio.org/listinfo/linux-audio-dev