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