I've been following the LAD mailing list for a while now,
mostly to keep an eye the development of LADSPA.
Now seems an appropriate time to voice my thoughts.
Separating out the metadata is certainly (IMHO) the right thing to do,
(I think Steve's proposal is a great step forward)
It mitigates the problem of making LADSPA easily extensible by moving
as much information as possible out of the fixed binary format.
However the problem remains that the core API still cannot be
extended without breaking backwards compatibility.
Surely with LADSPA 2.0 it's time to change the struct based API
to a library call based API.
# ie. the currently proposed API looks like...
ladspa_descriptor(index)
descriptor {
uri
port_count
implementation_data
instantiate(descriptor, ...)
connect_port(instance, ...)
activate(instance)
run(instance, ...)
deactivate(instance)
cleanup(instance)
}
# a function call based API would look like...
ladspa2_descriptor(index)
uri(descriptor)
port_count(descriptor)
instantiate(descriptor, ...)
connect_port(instance, ...)
activate(instance)
run(instance, ...)
deactivate(instance)
cleanup(instance)
In the former, any change in the descriptor structure will always break
backwards compatibility.
In the later, new functions can extend the core functionality without
breaking backwards compatibility in any way.
I'd be very interested in hearing people's opinions on this.
Regards,
Tom