Re: [LAD] [ann] CAPS 0.4.5

2011-04-26 Thread Chris Cannam
On 18 April 2011 15:50, David Robillard d...@drobilla.net wrote:
 On Sun, 2011-04-17 at 19:16 +0100, Chris Cannam wrote:
 Library name plus label, for example.

 That is not guaranteed to be unique, and I know of at least one case in
 practise where it isn't (various blop packages have a different library
 name).  There's no reason whatsoever the library name and label of
 various LADSPA plugin distributions can't be completely different,
 neither one is an ID.

Indeed, but at least the typical failure case (when the library name
differs from the expected one) is that the plugin isn't loaded and the
program can report it, rather than that the wrong plugin is loaded
silently as occurs with the numerical ID.

 Perhaps the LADSPA spec /should/ use that (or whatever else) as an
 identifier, but it doesn't.

As Stefano pointed out, it does in fact say plugin types should be
identified by file and label.  I admit the text is strange given the
presence of the ID as well.

 file name + label would be a really annoying two-piece identifier
 anyway, even if it was an actual global identifer.

So make a pseudo URI or something out of it.

Anyway, the situation is a bit unsatisfactory either way and I don't
think we disagree on that -- probably not much point in arguing about
the details these days.  A proper URI is a better option in any
circumstance.


Chris
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-18 Thread David Robillard
On Sun, 2011-04-17 at 19:16 +0100, Chris Cannam wrote:
 On 17 April 2011 18:12, David Robillard d...@drobilla.net wrote:
  On Thu, 2011-04-14 at 11:59 +0100, Chris Cannam wrote:
  I like to disagree with David on most things LADSPA -- for example I
  think a host that uses the unique ID at all is broken from the
  outset
 
  Well, that's just silly... it's the only ID there is. What else would
  they use?
 
 Library name plus label, for example.  My hosts do that and have done
 for years.  Not ideal either of course, but at least it doesn't
 completely stuff up any situation where a numerical ID can't be
 generated in advance (dssi-vst, etc).

That is not guaranteed to be unique, and I know of at least one case in
practise where it isn't (various blop packages have a different library
name).  There's no reason whatsoever the library name and label of
various LADSPA plugin distributions can't be completely different,
neither one is an ID.

Of course, the numeric IDs are screwed up for a few plugins in reality
as well, but at least that is actually defined to be an ID (therefore
those plugins are broken).

Perhaps the LADSPA spec /should/ use that (or whatever else) as an
identifier, but it doesn't.  It is an extremely bad idea to pretend a
spec says what you wish it did and implement that instead of what the
spec actually says.

I know because I blindly heeded this advice in the past, and it screwed
me :).  Please don't advise people that this is what a LADSPA
implementation should do...

-dr

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-18 Thread Stefano D'Angelo
2011/4/18 David Robillard d...@drobilla.net:
 On Sun, 2011-04-17 at 19:16 +0100, Chris Cannam wrote:
 On 17 April 2011 18:12, David Robillard d...@drobilla.net wrote:
  On Thu, 2011-04-14 at 11:59 +0100, Chris Cannam wrote:
  I like to disagree with David on most things LADSPA -- for example I
  think a host that uses the unique ID at all is broken from the
  outset
 
  Well, that's just silly... it's the only ID there is. What else would
  they use?

 Library name plus label, for example.  My hosts do that and have done
 for years.  Not ideal either of course, but at least it doesn't
 completely stuff up any situation where a numerical ID can't be
 generated in advance (dssi-vst, etc).

 That is not guaranteed to be unique, and I know of at least one case in
 practise where it isn't (various blop packages have a different library
 name).  There's no reason whatsoever the library name and label of
 various LADSPA plugin distributions can't be completely different,
 neither one is an ID.

 Of course, the numeric IDs are screwed up for a few plugins in reality
 as well, but at least that is actually defined to be an ID (therefore
 those plugins are broken).

 Perhaps the LADSPA spec /should/ use that (or whatever else) as an
 identifier, but it doesn't.  It is an extremely bad idea to pretend a
 spec says what you wish it did and implement that instead of what the
 spec actually says.

 I know because I blindly heeded this advice in the past, and it screwed
 me :).  Please don't advise people that this is what a LADSPA
 implementation should do...

  /* This identifier can be used as a unique, case-sensitive
 identifier for the plugin type within the plugin file. Plugin
 types should be identified by file and label rather than by index
 or plugin name, which may be changed in new plugin
 versions. Labels must not contain white-space characters. */
  const char * Label;

I would say Chris is right here... but since I don't care about LADSPA
hosts, and only about LADSPA plugins bridged to LV2, for our purposes
UniqueID is fine (bridging bridged plugins is not of interest to me).

Hence I would say, LADSPA hosts: use filename/label, LV2 URIs for
LADSPA plugins are fine with UniqueID only.

Stefano
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-18 Thread David Robillard
On Mon, 2011-04-18 at 17:09 +0200, Stefano D'Angelo wrote:
 2011/4/18 David Robillard d...@drobilla.net:
  On Sun, 2011-04-17 at 19:16 +0100, Chris Cannam wrote:
  On 17 April 2011 18:12, David Robillard d...@drobilla.net wrote:
   On Thu, 2011-04-14 at 11:59 +0100, Chris Cannam wrote:
   I like to disagree with David on most things LADSPA -- for example I
   think a host that uses the unique ID at all is broken from the
   outset
  
   Well, that's just silly... it's the only ID there is. What else would
   they use?
 
  Library name plus label, for example.  My hosts do that and have done
  for years.  Not ideal either of course, but at least it doesn't
  completely stuff up any situation where a numerical ID can't be
  generated in advance (dssi-vst, etc).
 
  That is not guaranteed to be unique, and I know of at least one case in
  practise where it isn't (various blop packages have a different library
  name).  There's no reason whatsoever the library name and label of
  various LADSPA plugin distributions can't be completely different,
  neither one is an ID.
 
  Of course, the numeric IDs are screwed up for a few plugins in reality
  as well, but at least that is actually defined to be an ID (therefore
  those plugins are broken).
 
  Perhaps the LADSPA spec /should/ use that (or whatever else) as an
  identifier, but it doesn't.  It is an extremely bad idea to pretend a
  spec says what you wish it did and implement that instead of what the
  spec actually says.
 
  I know because I blindly heeded this advice in the past, and it screwed
  me :).  Please don't advise people that this is what a LADSPA
  implementation should do...
 
   /* This identifier can be used as a unique, case-sensitive
  identifier for the plugin type within the plugin file. Plugin
  types should be identified by file and label rather than by index
  or plugin name, which may be changed in new plugin
  versions. Labels must not contain white-space characters. */
   const char * Label;
 
 I would say Chris is right here... but since I don't care about LADSPA
 hosts, and only about LADSPA plugins bridged to LV2, for our purposes
 UniqueID is fine (bridging bridged plugins is not of interest to me).

within the plugin file

Nothing says the plugin file name is meaningful in any way, or globally
unique. Ironically bridges and plugin generators and such, the case
mentioned as a rationalization for this, is one case where it wouldn't
be.

file name + label would be a really annoying two-piece identifier
anyway, even if it was an actual global identifer.

The LADSPA spec is pretty broken in this respect, if that pair of quasi
identifiers is the global identifier then why would there be a UniqueID
in the first place?

-dr


___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-17 Thread David Robillard
On Thu, 2011-04-14 at 11:59 +0100, Chris Cannam wrote:
[...]
 I like to disagree with David on most things LADSPA -- for example I
 think a host that uses the unique ID at all is broken from the
 outset
[...]

Well, that's just silly... it's the only ID there is. What else would
they use?

-dr


___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-17 Thread Chris Cannam
On 17 April 2011 18:12, David Robillard d...@drobilla.net wrote:
 On Thu, 2011-04-14 at 11:59 +0100, Chris Cannam wrote:
 I like to disagree with David on most things LADSPA -- for example I
 think a host that uses the unique ID at all is broken from the
 outset

 Well, that's just silly... it's the only ID there is. What else would
 they use?

Library name plus label, for example.  My hosts do that and have done
for years.  Not ideal either of course, but at least it doesn't
completely stuff up any situation where a numerical ID can't be
generated in advance (dssi-vst, etc).


Chris
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-14 Thread Chris Cannam
On 13 April 2011 22:03, Tim E. Real termt...@rogers.com wrote:
 I agree that if this new port were to be sandwiched among the others
  or if he were removing ports, that's breakage.

I think that was the plan, though -- to put the new port after the
other control ports and before any of the existing audio ones.  And
that's the problem.

I like to disagree with David on most things LADSPA -- for example I
think a host that uses the unique ID at all is broken from the
outset, because there's no way to ensure that ID is actually unique,
e.g. for plugin wrappers.  But in this case, and even though my own
hosts should cope with Tim's change without problems, I have to agree
that the change is not a good idea.


Chris
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-14 Thread Tim E. Real
On April 14, 2011 06:59:34 am you wrote:
 On 13 April 2011 22:03, Tim E. Real termt...@rogers.com wrote:
  I agree that if this new port were to be sandwiched among the others
   or if he were removing ports, that's breakage.

 I think that was the plan, though -- to put the new port after the
 other control ports and before any of the existing audio ones.  And
 that's the problem.
Oh I see. Not good. But doesn't audio come before controls?
I was in our code the other day and IIRC noticed audio came before controls.
(That's why I posted.) 
Or is that simply how port ordering is /presented/ to me from LADSPA?

Hypothetically, if the new port really did come after ALL others, would 
 that still break anything, including that LV2 bridge?
If MusE found some control ports followed by audio ports followed 
 by more control ports, it would still cope fine.

Thanks for the enlightenment.
I'm learning (l)rdf and LV2 stuff now, with an eye towards LV2 support. 
(I only recently learned what the 'L' stands for. Now it all makes sense - 
 it's LADSPA all grown up.)

Tim E.


 I like to disagree with David on most things LADSPA -- for example I
 think a host that uses the unique ID at all is broken from the
 outset, because there's no way to ensure that ID is actually unique,
 e.g. for plugin wrappers.  But in this case, and even though my own
 hosts should cope with Tim's change without problems, I have to agree
 that the change is not a good idea.


 Chris

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-13 Thread David Robillard

On 12/04/11 06:00 AM, Tim Goetze wrote:

[David Robillard]
   

No, the pragmatic thing to do is not deliberately break your plugin when
several knowledgeable people have pointed out that doing so can cause countless
problems.
 

Again: not the plugin is broken, but the host that assumes the port
signature not to change over different plugin versions.
   
No, a given index on your plugin no longer refers to the same port, 
therefore the interface to the plugin has been broken, period.

There is no mention of such a requirement in the interface
specification, therefore the assumption is invalid and the
responsibility for potential breakage lies with the host.
   
This assumption is obvious, since indices are the ID for a port. To 
argue that this is not true is literally equivalent to arguing that 
LADSPA does not support saving session/patch/etc files in any way, at 
all, whatsoever, since indices are meaningless and can not be relied 
upon to refer to the same port when the plugin is reloaded later.  
Obviously this is absurd.


Your assumption, that hosts must refer to ports by an index within a 
special separate index namespace for control and audio ports, is a much 
greater one: it is not obvious, and the alternative is not absurd. It 
is, in other words, clearly not in the language or spirit of LADSPA. 
There is no reason someone reading ladspa.h and writing an 
implementation would reasonably come to the conclusion that this is the 
required correct behavior.

It has been shown that properly designed hosts handle the port
addition just fine.
   
This is just conveniently, but erroneously, redefining properly 
designed hosts to mean hosts that won't break when I break my plugin 
in this particular way.

You may of course argue - not entirely unreasonably - that it is more
pragmatic for the plugin author to cater for broken hosts than to
expect them to be fixed.  Do you?
   
No, because the host is not broken, as myself and others (including one 
of the main authors of LADSPA itself, and the main author of the host in 
question) have explained several times over.


You are trying to argue that LADSPA does not present this assumption 
that indices refer to a constant port, but as mentioned above, this is 
an obvious conclusion, since the alternative is absurd (ports clearly 
must have /some/ ID). LADSPA certainly does not specify the more complex 
definition of correct use of port indices that you are trying to 
justify (nor should it, for several reasons, but that is beside the point).


The simplest, most obvious, and intended rule is: If a given port index 
does not refer to the same port on a new version of a plugin, then the 
plugin interface has broken and the plugin ID MUST be changed. As Fons 
mentioned, this is effectively a different plugin.


Your definition, which splits the port index namespace into two separate 
namespaces, one for control and one for audio, is not obviously intended 
and is not mentioned or alluded to anywhere in LADSPA whatsoever. Hosts 
that do not do this are not broken. That every single host author who 
has participated in this thread agrees, and the fact that you need to 
add a version number so one can kludge around the broken plugin, makes 
that pretty clear...


Cheers,

-dr

P.S. I do empathize with the fact that changing IDs where it /could/ not 
be necessary sucks; this is why LV2 has symbols which are the ID for a 
port instead. However, LADSPA is LADSPA, and doing what you are 
proposing is going to cause real headaches for real people, and would be 
remarkably unskillful given the feedback in this thread... please just 
don't do it :)

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-13 Thread Tim E. Real
On April 13, 2011 02:11:02 pm David Robillard wrote:
 On 12/04/11 06:00 AM, Tim Goetze wrote:
  [David Robillard]
 
  No, the pragmatic thing to do is not deliberately break your plugin when
  several knowledgeable people have pointed out that doing so can cause
  countless problems.
 
  Again: not the plugin is broken, but the host that assumes the port
  signature not to change over different plugin versions.

 No, a given index on your plugin no longer refers to the same port,
 therefore the interface to the plugin has been broken, period.
But he only wants to add a new port, not change them around or 
 remove them, doesn't he? So the indexes are not changing.
So long as this new port comes after all the others, including audio,
 what's the problem? Our MusE can cope, can the others?
I agree that if this new port were to be sandwiched among the others
 or if he were removing ports, that's breakage.
How is a plugin supposed to grow and mature?
I mean the Caps ToneStack gained a few 'model' values over the years.
Did it change unique ID?
Every time he wants to add a new port he's got to change the ID?
So we end up with ten different versions with ten different IDs?
Maybe the others are referring to breaking lrdf (I'm just learning lrdf now).
Or if someone tries to load a song referring to the new plugin version, 
 on an older system having the old plugin version.
But I know MusE can still handle that, when loading a song it just ignores 
 any port ID out of range of the number of ports.
It's a tough decision I know, I empathize, and if the consensus is that 
 the ID should be changed, I guess you gotta do it.
But surely we could accept this small change, can't we?
I mean what, really, would break?

Thanks.
Tim E.


  There is no mention of such a requirement in the interface
  specification, therefore the assumption is invalid and the
  responsibility for potential breakage lies with the host.

 This assumption is obvious, since indices are the ID for a port. To
 argue that this is not true is literally equivalent to arguing that
 LADSPA does not support saving session/patch/etc files in any way, at
 all, whatsoever, since indices are meaningless and can not be relied
 upon to refer to the same port when the plugin is reloaded later.
 Obviously this is absurd.

 Your assumption, that hosts must refer to ports by an index within a
 special separate index namespace for control and audio ports, is a much
 greater one: it is not obvious, and the alternative is not absurd. It
 is, in other words, clearly not in the language or spirit of LADSPA.
 There is no reason someone reading ladspa.h and writing an
 implementation would reasonably come to the conclusion that this is the
 required correct behavior.

  It has been shown that properly designed hosts handle the port
  addition just fine.

 This is just conveniently, but erroneously, redefining properly
 designed hosts to mean hosts that won't break when I break my plugin
 in this particular way.

  You may of course argue - not entirely unreasonably - that it is more
  pragmatic for the plugin author to cater for broken hosts than to
  expect them to be fixed.  Do you?

 No, because the host is not broken, as myself and others (including one
 of the main authors of LADSPA itself, and the main author of the host in
 question) have explained several times over.

 You are trying to argue that LADSPA does not present this assumption
 that indices refer to a constant port, but as mentioned above, this is
 an obvious conclusion, since the alternative is absurd (ports clearly
 must have /some/ ID). LADSPA certainly does not specify the more complex
 definition of correct use of port indices that you are trying to
 justify (nor should it, for several reasons, but that is beside the point).

 The simplest, most obvious, and intended rule is: If a given port index
 does not refer to the same port on a new version of a plugin, then the
 plugin interface has broken and the plugin ID MUST be changed. As Fons
 mentioned, this is effectively a different plugin.

 Your definition, which splits the port index namespace into two separate
 namespaces, one for control and one for audio, is not obviously intended
 and is not mentioned or alluded to anywhere in LADSPA whatsoever. Hosts
 that do not do this are not broken. That every single host author who
 has participated in this thread agrees, and the fact that you need to
 add a version number so one can kludge around the broken plugin, makes
 that pretty clear...

 Cheers,

 -dr

 P.S. I do empathize with the fact that changing IDs where it /could/ not
 be necessary sucks; this is why LV2 has symbols which are the ID for a
 port instead. However, LADSPA is LADSPA, and doing what you are
 proposing is going to cause real headaches for real people, and would be
 remarkably unskillful given the feedback in this thread... please just
 don't do it :)

___
Linux-audio-dev mailing list

Re: [LAD] [ann] CAPS 0.4.5

2011-04-13 Thread Tim E. Real
On April 13, 2011 05:03:45 pm you wrote:
 On April 13, 2011 02:11:02 pm David Robillard wrote:
  On 12/04/11 06:00 AM, Tim Goetze wrote:
   [David Robillard]
  
   No, the pragmatic thing to do is not deliberately break your plugin
   when several knowledgeable people have pointed out that doing so can
   cause countless problems.
  
   Again: not the plugin is broken, but the host that assumes the port
   signature not to change over different plugin versions.
 
  No, a given index on your plugin no longer refers to the same port,
  therefore the interface to the plugin has been broken, period.

 But he only wants to add a new port, not change them around or
  remove them, doesn't he? So the indexes are not changing.
 So long as this new port comes after all the others, including audio,
  what's the problem? Our MusE can cope, can the others?
 I agree that if this new port were to be sandwiched among the others
  or if he were removing ports, that's breakage.
 How is a plugin supposed to grow and mature?
 I mean the Caps ToneStack gained a few 'model' values over the years.
 Did it change unique ID?
 Every time he wants to add a new port he's got to change the ID?
 So we end up with ten different versions with ten different IDs?
 Maybe the others are referring to breaking lrdf (I'm just learning lrdf
 now). Or if someone tries to load a song referring to the new plugin
 version, on an older system having the old plugin version.
 But I know MusE can still handle that, when loading a song it just ignores
  any port ID out of range of the number of ports.
 It's a tough decision I know, I empathize, and if the consensus is that
  the ID should be changed, I guess you gotta do it.
 But surely we could accept this small change, can't we?
 I mean what, really, would break?

 Thanks.
 Tim E.
Ah, just read up the thread terribly sorry. LV2 issues and such plus
 that bridge. 

A new plugin would be best. 

It's OK, we see it in some other plugins, incremental upgrades.
I never seemed to notice or mind much, guess I've always assumed
 that maybe other versions were made by someone else. 

Tim E.


   There is no mention of such a requirement in the interface
   specification, therefore the assumption is invalid and the
   responsibility for potential breakage lies with the host.
 
  This assumption is obvious, since indices are the ID for a port. To
  argue that this is not true is literally equivalent to arguing that
  LADSPA does not support saving session/patch/etc files in any way, at
  all, whatsoever, since indices are meaningless and can not be relied
  upon to refer to the same port when the plugin is reloaded later.
  Obviously this is absurd.
 
  Your assumption, that hosts must refer to ports by an index within a
  special separate index namespace for control and audio ports, is a much
  greater one: it is not obvious, and the alternative is not absurd. It
  is, in other words, clearly not in the language or spirit of LADSPA.
  There is no reason someone reading ladspa.h and writing an
  implementation would reasonably come to the conclusion that this is the
  required correct behavior.
 
   It has been shown that properly designed hosts handle the port
   addition just fine.
 
  This is just conveniently, but erroneously, redefining properly
  designed hosts to mean hosts that won't break when I break my plugin
  in this particular way.
 
   You may of course argue - not entirely unreasonably - that it is more
   pragmatic for the plugin author to cater for broken hosts than to
   expect them to be fixed.  Do you?
 
  No, because the host is not broken, as myself and others (including one
  of the main authors of LADSPA itself, and the main author of the host in
  question) have explained several times over.
 
  You are trying to argue that LADSPA does not present this assumption
  that indices refer to a constant port, but as mentioned above, this is
  an obvious conclusion, since the alternative is absurd (ports clearly
  must have /some/ ID). LADSPA certainly does not specify the more complex
  definition of correct use of port indices that you are trying to
  justify (nor should it, for several reasons, but that is beside the
  point).
 
  The simplest, most obvious, and intended rule is: If a given port index
  does not refer to the same port on a new version of a plugin, then the
  plugin interface has broken and the plugin ID MUST be changed. As Fons
  mentioned, this is effectively a different plugin.
 
  Your definition, which splits the port index namespace into two separate
  namespaces, one for control and one for audio, is not obviously intended
  and is not mentioned or alluded to anywhere in LADSPA whatsoever. Hosts
  that do not do this are not broken. That every single host author who
  has participated in this thread agrees, and the fact that you need to
  add a version number so one can kludge around the broken plugin, makes
  that pretty clear...
 
  Cheers,
 
  -dr
 
  P.S. I do 

Re: [LAD] [ann] CAPS 0.4.5

2011-04-11 Thread David Robillard

On 10/04/11 06:21 PM, Tim Goetze wrote:

[Jeff McClintock]

   

What happens when you modify version-1 of your plugin and remove a port
(making Version2), then later re-add a new (unrelated) port with different
semantics? (Version 3)... Then load a project created with version 1.

Does the host in THIS situation set the new port to it's default value, I
doubt it. More likely it 'restores' it to some invalid setting.

Do you want a fragile, crash-prone, plugin ecosystem?, or a robust one?
 

The plugins in CAPS clamp all control inputs to the valid range.
Whatever the host sends, including inf and nan, there is no invalid
setting.  Moreover, the plugins will not crash even if run without
connecting their control ports at all.

The above experiment, by the way, is exactly what I did, and it did
not cause any abnormal behaviour: no crash, no segfault, no bus error,
no assertion failure in any part of the executed code; no inf or nan,
not even a single sample value of or in excess of 1f absolute in the
audio output.

I think your fear of a fragile and crash-prone plugin ecosystem is
unfounded and exaggerated.

   

I Agree with Paul on this one.
 

I can very well see how a host author would want plugin port
signatures to be stable, and I was never happy about invalidating this
assumption.

However, the evolved plugin doesn't even break ardour or its session
files, so the pragmatic thing is to just get on with it and not waste
as much breath on a triviality like this as we do now.
   
No, the pragmatic thing to do is not deliberately break your plugin when 
several knowledgeable people have pointed out that doing so can cause 
countless problems.


One test with one version of one host certainly does not outweigh that.. 
particularly when one of said knowledgeable people is the primary author 
of that host!


-dr

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-11 Thread Fons Adriaensen
On Mon, Apr 11, 2011 at 12:21:31AM +0200, Tim Goetze wrote:
 
 I can very well see how a host author would want plugin port 
 signatures to be stable, and I was never happy about invalidating this 
 assumption.
 
 However, the evolved plugin doesn't even break ardour or its session 
 files, so the pragmatic thing is to just get on with it and not waste 
 as much breath on a triviality like this as we do now.

Shouldn't such situations be avoided by 

1. Giving the new plugin version a new unique ID so it
can't be mistaken for the old one (and vice versa) and

2. Making sure that installing the new version does not
remove or hide the old one. Since the new version is not
a bugfix for the old one but actually something different
this seems to be the logical thing to do.

That way any existing sessions will just go on use the
version they knew. It's then up to the user to update
his/her session (or not). 

Ciao,

-- 
FA



___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Tim Goetze
[David Robillard]
 On 07/04/11 01:00 PM, Tim Goetze wrote:
 The new port for the AutoWah plugin will indeed be appended to the
 list of input ports; however, it will still precede the audio output,
 adhering to the CAPS port order convention which puts inputs before
 outputs.
   
 This will horribly break all sorts of things. Do not do this! Admittedly,
 slightly less so than rearranging control port indices would (which would
 definitely break virtually everything), but still.

I'm afraid you generously overestimate the popularity of CAPS and the 
AutoWah plugin in particular expecting this change to break all sorts 
of things.  And you seem to underestimate the ability of your fellow 
host application designers, as we shall see in a bit.

 You should just change the ID of the plugin and this whole mess goes away. I
 can't think of any reason to keep the ID and break the plugin rather than just
 change the ID...

Adding a port doesn't break the *plugin*, it /might/ break *hosts* 
that were designed around assumptions that aren't supported by the 
interface specification.

An informal experiment shows that jack-rack 1.4.7 and ardour 2.8.11 
both do exactly the right thing when a plugin referenced by a saved 
session gains a port: they set the new port to its default value and 
happily carry on working.

(Both also cope with the removal of a port.  These are the only 
publicly available hosts I have tested.)

Following your suggestion and changing the plugin's UniqueID would 
break perfectly good saved session files in these and other properly 
designed host applications - instead of *preventing* breakage, it'd 
actually *cause* it.

If your particular LADSPA host design is incapable of handling a port 
signature change gracefully, you could fix it - an endeavour I'll be 
happy to help with, witness the discussed version symbol export - or 
you can simply choose not to upgrade your copy of CAPS.

[Paul Coccoli]
 And name it AutoFilter...like the Maxon AF-9 Auto Filter...

Yeah, with the added filter mode switch this name makes sense.  
Looking at the AF-9 it seems there's demand for a hi-pass mode as 
well, so we might as well add that too.

Cheers, Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Paul Davis
On Sun, Apr 10, 2011 at 3:43 AM, Tim Goetze t...@quitte.de wrote:

 Adding a port doesn't break the *plugin*, it /might/ break *hosts*
 that were designed around assumptions that aren't supported by the
 interface specification.

Strongly disagree. There are ways to add a port that won't do this,
but there are plenty of ways to do it that will.

 Following your suggestion and changing the plugin's UniqueID would
 break perfectly good saved session files in these and other properly
 designed host applications - instead of *preventing* breakage, it'd
 actually *cause* it.

Strongly disagree. The CAPS package would just continue to include the
old version of the plugin.

 If your particular LADSPA host design is incapable of handling a port
 signature change gracefully, you could fix it - an endeavour I'll be
 happy to help with, witness the discussed version symbol export - or
 you can simply choose not to upgrade your copy of CAPS.

You can't fix this in Ardour in general. As noted, just appending a
port won't break anything (I think), but the general issue that the
port signature has changed and this invalidates old state for the
plugin is something that definitely goes against everything that we
had in mind when LADSPA was designed.
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Tim Goetze
[Paul Davis]
On Sun, Apr 10, 2011 at 3:43 AM, Tim Goetze t...@quitte.de wrote:
 Following your suggestion and changing the plugin's UniqueID would
 break perfectly good saved session files in these and other properly
 designed host applications - instead of *preventing* breakage, it'd
 actually *cause* it.

Strongly disagree. The CAPS package would just continue to include the
old version of the plugin.

Surely you will understand that I'm not inclined to maintain two 
versions of a plugin whose code differs in only one line.

However, as a compromise, I am thinking about moving obsolete plugins 
into a separate 'abandoned' package that would not enjoy further 
maintenance.  It's far from an ideal solution but then again nothing 
seems to be.

You can't fix this in Ardour in general. As noted, just appending a
port won't break anything (I think), but the general issue that the
port signature has changed and this invalidates old state for the
plugin is something that definitely goes against everything that we
had in mind when LADSPA was designed.

In that case, it is rather unfortunate that the specification bears 
not a trace of your thoughts on this matter.

Perhaps you want to make an effort to fix it?

Cheers, Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Robin Gareus

On Apr 10, 2011, at 3:52 PM, Tim Goetze wrote:

 [Paul Davis]
 On Sun, Apr 10, 2011 at 3:43 AM, Tim Goetze t...@quitte.de wrote:
 Following your suggestion and changing the plugin's UniqueID would
 break perfectly good saved session files in these and other properly
 designed host applications - instead of *preventing* breakage, it'd
 actually *cause* it.
 
 Strongly disagree. The CAPS package would just continue to include the
 old version of the plugin.
 
 Surely you will understand that I'm not inclined to maintain two 
 versions of a plugin whose code differs in only one line.
 

That sounds like a good case of an #ifdef, no?
Just generate two plugins from the same code: old one: unchanged; updated 
version: new UniqueID.

just an idea..
robin

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Tim Goetze
[Robin Gareus]
On Apr 10, 2011, at 3:52 PM, Tim Goetze wrote:
 
 Surely you will understand that I'm not inclined to maintain two 
 versions of a plugin whose code differs in only one line.
 

That sounds like a good case of an #ifdef, no? Just generate two 
plugins from the same code: old one: unchanged; updated version: new 
UniqueID.

Thanks Robin, while this is of course entirely viable and not 
unreasonable, unfortunately I see two problems: besides the code, 
there are also differences in the data describing the plugin that 
would need to be put inside conditionals, and that is not as handily 
concentrated into one line as is the case with the code.

And to be quite honest, smart adhoc solutions like these create 
exactly the kind of source code that I don't want to have to maintain. 
:D

Cheers, Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Jeff McClintock
 An informal experiment shows that jack-rack 1.4.7 and ardour 2.8.11
 both do exactly the right thing when a plugin referenced by a saved
 session gains a port: they set the new port to its default value and
 happily carry on working.
 
 (Both also cope with the removal of a port.  These are the only
 publicly available hosts I have tested.)

What happens when you modify version-1 of your plugin and remove a port
(making Version2), then later re-add a new (unrelated) port with different
semantics? (Version 3)... Then load a project created with version 1.

 Does the host in THIS situation set the new port to it's default value, I
doubt it. More likely it 'restores' it to some invalid setting.

Do you want a fragile, crash-prone, plugin ecosystem?, or a robust one?

I Agree with Paul on this one.

Best Regards,
Jeff


___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-10 Thread Tim Goetze
[Jeff McClintock]

What happens when you modify version-1 of your plugin and remove a port
(making Version2), then later re-add a new (unrelated) port with different
semantics? (Version 3)... Then load a project created with version 1.

 Does the host in THIS situation set the new port to it's default value, I
doubt it. More likely it 'restores' it to some invalid setting.

Do you want a fragile, crash-prone, plugin ecosystem?, or a robust one?

The plugins in CAPS clamp all control inputs to the valid range.  
Whatever the host sends, including inf and nan, there is no invalid 
setting.  Moreover, the plugins will not crash even if run without 
connecting their control ports at all.

The above experiment, by the way, is exactly what I did, and it did 
not cause any abnormal behaviour: no crash, no segfault, no bus error, 
no assertion failure in any part of the executed code; no inf or nan, 
not even a single sample value of or in excess of 1f absolute in the 
audio output.

I think your fear of a fragile and crash-prone plugin ecosystem is 
unfounded and exaggerated.

I Agree with Paul on this one.

I can very well see how a host author would want plugin port 
signatures to be stable, and I was never happy about invalidating this 
assumption.

However, the evolved plugin doesn't even break ardour or its session 
files, so the pragmatic thing is to just get on with it and not waste 
as much breath on a triviality like this as we do now.

Cheers, Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-07 Thread Tim Goetze
[Stefano D'Angelo]
2011/4/5 David Robillard d...@drobilla.net:
 On 03/04/11 04:34 AM, Stefano D'Angelo wrote:

 2011/4/2 Tim Goetzet...@quitte.de:
  const int * caps = (const int *) dlsym (h, __caps_version__);
[...]
 Global identifiers beginning with __ are reserved for the C
 implementation...

Thanks for pointing that out, David, I'll change the symbol to a plain 
and simple CAPS_version instead.

 Might as well just use LADSPA as a prefix instead of CAPS, in case this
 needs doing somewhere else... though this whole thing is extremely awful,
 and I really hope that is not the case...

 Another less awful option would be to somehow add the information to the
 library that the port is connectionOptional...

Tim, you see? David already suggests to use the LADSPA prefix. :-)

And I have to concur, a standardised way for hosts to query the 
version of a plugin library seems a good idea indeed.

However, I think you could happily avoid doing anything special, I can
check if the plugin in question (identified by UniqueID) has more
ports than the current version (this has to be hardcoded into the
bridge), thus making all ports with index = the old PortCount
connectionOptional in LV2 (that means the bridge makes fake
connections unless the LV2 host does really connect them)... however,
this is possible if you append the new port(s) to the current ones as
Dave suggests, otherwise this just can't be handled even in LADSPA
hosts properly, I suspect.

The new port for the AutoWah plugin will indeed be appended to the 
list of input ports; however, it will still precede the audio output, 
adhering to the CAPS port order convention which puts inputs before 
outputs.  

(I'm afraid you'll have to make slight changes to the above algorithm 
to make it work in this case, but at first glance it seems you only 
need to apply the same method to in- and outputs separately.  And I'd 
like to apologise again for the trouble caused.)

Cheers, Tim___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-07 Thread David Robillard

On 07/04/11 01:00 PM, Tim Goetze wrote:

[Stefano D'Angelo]
   

2011/4/5 David Robillardd...@drobilla.net:
 

On 03/04/11 04:34 AM, Stefano D'Angelo wrote:
   

2011/4/2 Tim Goetzet...@quitte.de:
 

�const int * caps = (const int *) dlsym (h, __caps_version__);
   

[...]
   

Global identifiers beginning with __ are reserved for the C
implementation...
   

Thanks for pointing that out, David, I'll change the symbol to a plain
and simple CAPS_version instead.

   

You're welcome.


Might as well just use LADSPA as a prefix instead of CAPS, in case this
needs doing somewhere else... though this whole thing is extremely awful,
and I really hope that is not the case...

Another less awful option would be to somehow add the information to the
library that the port is connectionOptional...
   

Tim, you see? David already suggests to use the LADSPA prefix. :-)
 

And I have to concur, a standardised way for hosts to query the
version of a plugin library seems a good idea indeed.

   
Well, yes and no. Since LADSPA can not tolerate plugin breakage at all, 
one could argue that the presence of such a thing is a symptom...

However, I think you could happily avoid doing anything special, I can
check if the plugin in question (identified by UniqueID) has more
ports than the current version (this has to be hardcoded into the
bridge), thus making all ports with index= the old PortCount
connectionOptional in LV2 (that means the bridge makes fake
connections unless the LV2 host does really connect them)... however,
this is possible if you append the new port(s) to the current ones as
Dave suggests, otherwise this just can't be handled even in LADSPA
hosts properly, I suspect.
 

The new port for the AutoWah plugin will indeed be appended to the
list of input ports; however, it will still precede the audio output,
adhering to the CAPS port order convention which puts inputs before
outputs.
   
This will horribly break all sorts of things. Do not do this! 
Admittedly, slightly less so than rearranging control port indices would 
(which would definitely break virtually everything), but still.


You should just change the ID of the plugin and this whole mess goes 
away. I can't think of any reason to keep the ID and break the plugin 
rather than just change the ID...


Cheers,

-dr

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-07 Thread Paul Coccoli
On Thu, Apr 7, 2011 at 8:53 PM, David Robillard d...@drobilla.net wrote:
 You should just change the ID of the plugin and this whole mess goes away. I
 can't think of any reason to keep the ID and break the plugin rather than
 just change the ID...

And name it AutoFilter...like the Maxon AF-9 Auto Filter...
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-05 Thread Stefano D'Angelo
2011/4/5 David Robillard d...@drobilla.net:
 On 03/04/11 04:34 AM, Stefano D'Angelo wrote:

 2011/4/2 Tim Goetzet...@quitte.de:


 [Stefano D'Angelo]


 2011/3/29 Tim Goetzet...@quitte.de:


 It is very unfortunate that such a change might break the way your
 bridge code works, Stefano, and I would like to apologise in advance.
 (If the addition of a 'version' symbol exported by caps.so is any
 help, I'll be happy to add that.)


 [...]


 Regarding the addition of a symbol, introducing something into LADSPA
 (because if we agree on something, it's probably going to become a
 generic mechanism in the end) is really something I would avoid. It
 kind of both defeats the purpose of doing bridging well (i.e., no need
 to make changes to existing stuff) and also it would be unfair to
 recommend an addition to LADSPA without agreement from the whole
 LADSPA community.


 Thanks Stefano,

 this extra symbol wouldn't be an addition to LADSPA itself.  Instead,
 it would be one private to caps.so, completely independent of the
 plugin standard.

 Like so, for example:

  void * h = dlopen (/path/to/caps.so, RTLD_LAZY);
  /* assuming h is valid, check for caps */
  const int * caps = (const int *) dlsym (h, __caps_version__);
  if (caps)
    printf (found caps version %d.%d.%d, caps[0], caps[1], caps[2]);

 Should you consider special-casing for individual plugin libraries a
 pragmatic and viable approach, I'd imagine something like this to be
 helpful.  (Put together, the caps library version and the UniqueID of
 a plugin guarantee a stable port signature.)


 Ok, it seems like this is the best way to do it after all... in the
 hope that this does not become a trend among LADSPA plugin authors.

 Best regards,

 Stefano

 P.S.: using two version numbers instead of three could be of help in my
 case...


 Global identifiers beginning with __ are reserved for the C
 implementation...

 Might as well just use LADSPA as a prefix instead of CAPS, in case this
 needs doing somewhere else... though this whole thing is extremely awful,
 and I really hope that is not the case...

 Another less awful option would be to somehow add the information to the
 library that the port is connectionOptional...

Tim, you see? David already suggests to use the LADSPA prefix. :-)

However, I think you could happily avoid doing anything special, I can
check if the plugin in question (identified by UniqueID) has more
ports than the current version (this has to be hardcoded into the
bridge), thus making all ports with index = the old PortCount
connectionOptional in LV2 (that means the bridge makes fake
connections unless the LV2 host does really connect them)... however,
this is possible if you append the new port(s) to the current ones as
Dave suggests, otherwise this just can't be handled even in LADSPA
hosts properly, I suspect.

Stefano
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-04 Thread David Robillard

On 03/04/11 04:34 AM, Stefano D'Angelo wrote:

2011/4/2 Tim Goetzet...@quitte.de:
   

[Stefano D'Angelo]
 

2011/3/29 Tim Goetzet...@quitte.de:
   

It is very unfortunate that such a change might break the way your
bridge code works, Stefano, and I would like to apologise in advance.
(If the addition of a 'version' symbol exported by caps.so is any
help, I'll be happy to add that.)
 

[...]
 

Regarding the addition of a symbol, introducing something into LADSPA
(because if we agree on something, it's probably going to become a
generic mechanism in the end) is really something I would avoid. It
kind of both defeats the purpose of doing bridging well (i.e., no need
to make changes to existing stuff) and also it would be unfair to
recommend an addition to LADSPA without agreement from the whole
LADSPA community.
   

Thanks Stefano,

this extra symbol wouldn't be an addition to LADSPA itself.  Instead,
it would be one private to caps.so, completely independent of the
plugin standard.

Like so, for example:

  void * h = dlopen (/path/to/caps.so, RTLD_LAZY);
  /* assuming h is valid, check for caps */
  const int * caps = (const int *) dlsym (h, __caps_version__);
  if (caps)
printf (found caps version %d.%d.%d, caps[0], caps[1], caps[2]);

Should you consider special-casing for individual plugin libraries a
pragmatic and viable approach, I'd imagine something like this to be
helpful.  (Put together, the caps library version and the UniqueID of
a plugin guarantee a stable port signature.)
 

Ok, it seems like this is the best way to do it after all... in the
hope that this does not become a trend among LADSPA plugin authors.

Best regards,

Stefano

P.S.: using two version numbers instead of three could be of help in my case...
   


Global identifiers beginning with __ are reserved for the C 
implementation...


Might as well just use LADSPA as a prefix instead of CAPS, in case this 
needs doing somewhere else... though this whole thing is extremely 
awful, and I really hope that is not the case...


Another less awful option would be to somehow add the information to the 
library that the port is connectionOptional...


-dr

P.S. Just to verify, the new port index will be a new index greater than 
all the old ones, right?

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-03 Thread Stefano D'Angelo
2011/4/2 Tim Goetze t...@quitte.de:
 [Stefano D'Angelo]
2011/3/29 Tim Goetze t...@quitte.de:
 It is very unfortunate that such a change might break the way your
 bridge code works, Stefano, and I would like to apologise in advance.
 (If the addition of a 'version' symbol exported by caps.so is any
 help, I'll be happy to add that.)
 [...]
Regarding the addition of a symbol, introducing something into LADSPA
(because if we agree on something, it's probably going to become a
generic mechanism in the end) is really something I would avoid. It
kind of both defeats the purpose of doing bridging well (i.e., no need
to make changes to existing stuff) and also it would be unfair to
recommend an addition to LADSPA without agreement from the whole
LADSPA community.

 Thanks Stefano,

 this extra symbol wouldn't be an addition to LADSPA itself.  Instead,
 it would be one private to caps.so, completely independent of the
 plugin standard.

 Like so, for example:

  void * h = dlopen (/path/to/caps.so, RTLD_LAZY);
  /* assuming h is valid, check for caps */
  const int * caps = (const int *) dlsym (h, __caps_version__);
  if (caps)
    printf (found caps version %d.%d.%d, caps[0], caps[1], caps[2]);

 Should you consider special-casing for individual plugin libraries a
 pragmatic and viable approach, I'd imagine something like this to be
 helpful.  (Put together, the caps library version and the UniqueID of
 a plugin guarantee a stable port signature.)

Ok, it seems like this is the best way to do it after all... in the
hope that this does not become a trend among LADSPA plugin authors.

Best regards,

Stefano

P.S.: using two version numbers instead of three could be of help in my case...
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-02 Thread Tim Goetze
[Stefano D'Angelo]
2011/3/29 Tim Goetze t...@quitte.de:
 It is very unfortunate that such a change might break the way your
 bridge code works, Stefano, and I would like to apologise in advance.
 (If the addition of a 'version' symbol exported by caps.so is any
 help, I'll be happy to add that.)
[...]
Regarding the addition of a symbol, introducing something into LADSPA
(because if we agree on something, it's probably going to become a
generic mechanism in the end) is really something I would avoid. It
kind of both defeats the purpose of doing bridging well (i.e., no need
to make changes to existing stuff) and also it would be unfair to
recommend an addition to LADSPA without agreement from the whole
LADSPA community.

Thanks Stefano,

this extra symbol wouldn't be an addition to LADSPA itself.  Instead, 
it would be one private to caps.so, completely independent of the 
plugin standard.

Like so, for example:

  void * h = dlopen (/path/to/caps.so, RTLD_LAZY);
  /* assuming h is valid, check for caps */
  const int * caps = (const int *) dlsym (h, __caps_version__);
  if (caps)
printf (found caps version %d.%d.%d, caps[0], caps[1], caps[2]);

Should you consider special-casing for individual plugin libraries a 
pragmatic and viable approach, I'd imagine something like this to be 
helpful.  (Put together, the caps library version and the UniqueID of 
a plugin guarantee a stable port signature.)

Cheers, Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-01 Thread David Robillard

On 30/03/11 07:40 AM, Stefano D'Angelo wrote:

2011/3/30 David Robillardd...@drobilla.net:
   

On 29/03/11 02:59 PM, Tim Goetze wrote:
 

[Philipp �berbacher]


   

Excerpts from Stefano D'Angelo's message of 2011-03-28 22:59:46 +0200:

 

This means, if you change the port signature and maintain the same
UniqueID, we would have incompatibilities in the LV2 world. If you
create a new plugin or don't touch ports, instead, everything's fine.

Stefano

   

I'd say you'd even have incompatibilities in LADSPA world. Even fixes in
LADSPA plugins would sometimes need a new ID (This was discussed a while
ago regarding a LADSPA that has an unintuitive port order).

 

Lacking sufficient knowledge of all the LADSPA hosts out there, I'm
unable to judge how many will cope with the addition of a port to an
existing plugin and how many will not.

   

/Adding/ a port is probably fine, since hosts can just use the default value
or connect it to silence.

However, adding here really means appending: the new ports must be added
on to the end of the ports (by index). Definitely do NOT change existing
indices for ports, that will definitely break a lot of things in horrible
ways! It's not even possible to properly cope with that situation.
 

Mmm.. so I could maybe add the port number to the URI and add
dc:replaces, like this:

urn:ladspa:1234:5  a lv2:Plugin ; dc:replacesurn:ladspa:1234  .

   
You could to this, but the URI is changed, and that URI doesn't adhere 
to the standard LADSPA URI scheme (don't do that).

Yet, I should send patches to those plugin authors providing both LV2
and LADSPA versions of their plugins (the same holds true for DSSI, I
guess).

At the moment I don't seem to be able to come up with a better solution. :-S

   
In LV2, the way to do this correctly is to add a connectionOptional 
port, and the URI does not have to change. You would have to special 
case this, I suppose.


We could also just port CAPS :)

-dr

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-04-01 Thread David Robillard

On 30/03/11 09:15 AM, Paul Giblock wrote:

 From the docs for LV2_Descriptor::URI:

A globally unique, case-sensitive identifier for this plugin type.

All plugins with the same URI MUST be compatible in terms of 'port
signature', meaning they have the same number of ports, same port
shortnames, and roughly the same functionality. URIs should probably
contain a version number (or similar) for this reason.

Rationale: When serializing session/patch/etc files, hosts MUST refer
to a loaded plugin by the plugin URI only. In the future loading a
plugin with this URI MUST yield a plugin with the same ports (etc)
which is 100% compatible.

--Paul
   


Please refer to LV2 4.0[1] for anything related to this (compatibility, 
versioning, etc.). One of the main improvements in that release was very 
solidly defining this.


-dr

http://lv2plug.in/ns/lv2core

P.S. Please do not top post on mailing lists...

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-30 Thread Olivier Guilyardi
On 03/28/2011 11:27 PM, Philipp Überbacher wrote:
 Excerpts from Stefano D'Angelo's message of 2011-03-28 22:59:46 +0200:
 2011/3/28 Tim Goetze t...@quitte.de:
 I'm planning to add a mode switch (low- or bandpass) to the AutoWah
 instead of making a separate new plugin, or would that be a stupid
 idea?
 For compatibility with LV2, it's better if you create a new plugin for 
 that...
 I don't see how compatibility with LV2 is a concern here?
 Heh... long story short: LV2 uses URIs, LADSPA uses UniqueIDs (not
 necessarily but...), two LV2 plugins with same URI are required to
 have the same port signature (i.e., ports) and I wrote a LADSPA to
 LV2 bridge where the URIs of the bridged plugins are in the form
 urn:ladspa:, where  is the UniqueID.

 This means, if you change the port signature and maintain the same
 UniqueID, we would have incompatibilities in the LV2 world. If you
 create a new plugin or don't touch ports, instead, everything's fine.

 Stefano
 
 I'd say you'd even have incompatibilities in LADSPA world. Even fixes in
 LADSPA plugins would sometimes need a new ID (This was discussed a while
 ago regarding a LADSPA that has an unintuitive port order).

Sorry guys but I don't follow you here. Can't you add or remove ports to an
existing plugin in a new release? Does LV2 considers that two plugins with the
same URI but different ports are actually different plugins? As for two C++
functions with the same name but different arguments?

--
  Olivier

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-30 Thread Paul Giblock
From the docs for LV2_Descriptor::URI:

A globally unique, case-sensitive identifier for this plugin type.

All plugins with the same URI MUST be compatible in terms of 'port
signature', meaning they have the same number of ports, same port
shortnames, and roughly the same functionality. URIs should probably
contain a version number (or similar) for this reason.

Rationale: When serializing session/patch/etc files, hosts MUST refer
to a loaded plugin by the plugin URI only. In the future loading a
plugin with this URI MUST yield a plugin with the same ports (etc)
which is 100% compatible.

--Paul

On Tue, Mar 29, 2011 at 1:17 PM, Olivier Guilyardi l...@samalyse.com wrote:
 On 03/28/2011 11:27 PM, Philipp Überbacher wrote:
 Excerpts from Stefano D'Angelo's message of 2011-03-28 22:59:46 +0200:
 2011/3/28 Tim Goetze t...@quitte.de:
 I'm planning to add a mode switch (low- or bandpass) to the AutoWah
 instead of making a separate new plugin, or would that be a stupid
 idea?
 For compatibility with LV2, it's better if you create a new plugin for 
 that...
 I don't see how compatibility with LV2 is a concern here?
 Heh... long story short: LV2 uses URIs, LADSPA uses UniqueIDs (not
 necessarily but...), two LV2 plugins with same URI are required to
 have the same port signature (i.e., ports) and I wrote a LADSPA to
 LV2 bridge where the URIs of the bridged plugins are in the form
 urn:ladspa:, where  is the UniqueID.

 This means, if you change the port signature and maintain the same
 UniqueID, we would have incompatibilities in the LV2 world. If you
 create a new plugin or don't touch ports, instead, everything's fine.

 Stefano

 I'd say you'd even have incompatibilities in LADSPA world. Even fixes in
 LADSPA plugins would sometimes need a new ID (This was discussed a while
 ago regarding a LADSPA that has an unintuitive port order).

 Sorry guys but I don't follow you here. Can't you add or remove ports to an
 existing plugin in a new release? Does LV2 considers that two plugins with the
 same URI but different ports are actually different plugins? As for two C++
 functions with the same name but different arguments?

 --
  Olivier

 ___
 Linux-audio-dev mailing list
 Linux-audio-dev@lists.linuxaudio.org
 http://lists.linuxaudio.org/listinfo/linux-audio-dev

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-29 Thread Stefano D'Angelo
Hi Tim,

2011/3/29 Tim Goetze t...@quitte.de:
 It is very unfortunate that such a change might break the way your
 bridge code works, Stefano, and I would like to apologise in advance.
 (If the addition of a 'version' symbol exported by caps.so is any
 help, I'll be happy to add that.)

It's really nice when somebody speaks with respect the way you do,
Tim. I do immensely appreciate that. (And by the way, no need to
apologize).

Regarding the addition of a symbol, introducing something into LADSPA
(because if we agree on something, it's probably going to become a
generic mechanism in the end) is really something I would avoid. It
kind of both defeats the purpose of doing bridging well (i.e., no need
to make changes to existing stuff) and also it would be unfair to
recommend an addition to LADSPA without agreement from the whole
LADSPA community.

So for the moment I'm trying to imagine something that doesn't involve
adding stuff to LADSPA itself (maybe a text file or something), and in
the meanwhile feel free to ignore the issue. It's all on my back now.
If I come up with something I will let you know.

All the best,

Stefano
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-29 Thread David Robillard

On 29/03/11 02:59 PM, Tim Goetze wrote:

[Philipp �berbacher]

   

Excerpts from Stefano D'Angelo's message of 2011-03-28 22:59:46 +0200:
 

This means, if you change the port signature and maintain the same
UniqueID, we would have incompatibilities in the LV2 world. If you
create a new plugin or don't touch ports, instead, everything's fine.

Stefano
   

I'd say you'd even have incompatibilities in LADSPA world. Even fixes in
LADSPA plugins would sometimes need a new ID (This was discussed a while
ago regarding a LADSPA that has an unintuitive port order).
 

Lacking sufficient knowledge of all the LADSPA hosts out there, I'm
unable to judge how many will cope with the addition of a port to an
existing plugin and how many will not.
   


/Adding/ a port is probably fine, since hosts can just use the default 
value or connect it to silence.


However, adding here really means appending: the new ports must be 
added on to the end of the ports (by index). Definitely do NOT change 
existing indices for ports, that will definitely break a lot of things 
in horrible ways! It's not even possible to properly cope with that 
situation.


Cheers,

-dr

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-28 Thread Tim Goetze
[Paul Coccoli]

On Sat, Mar 26, 2011 at 8:41 PM, Julien Claassen jul...@c-lab.de wrote:
 Hello Tim!
  thanks for the new release. I love your plugins. Wouldn't know, where I'd
 be without the chorus (1767) or the amp (1786) and occasionally a few of the
 other ones as well. :-) Great suite of plugins. I never had any problems so
 far, but I just istalled the new ones.
  Warm regards
            Julien


I second this.  CAPS is great.

One request though: would it be possible to add an AutoFilter plugin?
Basically, it would be the same as your AutoWah but with a low-pass
filter instead of band-pass.  It's a common effect for bass guitar.

Thank you Julien and Paul!

I'm planning to add a mode switch (low- or bandpass) to the AutoWah 
instead of making a separate new plugin, or would that be a stupid 
idea?

Cheers, Tim___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-28 Thread Jostein Chr. Andersen
On Monday 28 March 2011 20.29.18 Tim Goetze wrote:
 I'm planning to add a mode switch (low- or bandpass) to the AutoWah 
 instead of making a separate new plugin, or would that be a stupid 
 idea?

I think that is ok if it works and behaves as before when one do not use the 
new functionality (for backward compatibility). If not, then a name like 
AutoWah-mkII or something is better when one still can use the old one.

Jostein
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-28 Thread Stefano D'Angelo
2011/3/28 Tim Goetze t...@quitte.de:
 [Paul Coccoli]

On Sat, Mar 26, 2011 at 8:41 PM, Julien Claassen jul...@c-lab.de wrote:
 Hello Tim!
  thanks for the new release. I love your plugins. Wouldn't know, where I'd
 be without the chorus (1767) or the amp (1786) and occasionally a few of the
 other ones as well. :-) Great suite of plugins. I never had any problems so
 far, but I just istalled the new ones.
  Warm regards
            Julien


I second this.  CAPS is great.

One request though: would it be possible to add an AutoFilter plugin?
Basically, it would be the same as your AutoWah but with a low-pass
filter instead of band-pass.  It's a common effect for bass guitar.

 Thank you Julien and Paul!

Aehm... there is a bug in the LRDF file, plugin CabinetI has two more
model entries than the port's minimum-maximum range supports.

 I'm planning to add a mode switch (low- or bandpass) to the AutoWah
 instead of making a separate new plugin, or would that be a stupid
 idea?

For compatibility with LV2, it's better if you create a new plugin for that...

Best regards,

Stefano D'Angelo
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-28 Thread Tim Goetze
[Stefano D'Angelo]
Aehm... there is a bug in the LRDF file, plugin CabinetI has two more
model entries than the port's minimum-maximum range supports.

Thanks for spotting that.  Fixed locally (along with filter mode ports 
being incorrectly labeled 'model' in the RDF).

 I'm planning to add a mode switch (low- or bandpass) to the AutoWah
 instead of making a separate new plugin, or would that be a stupid
 idea?

For compatibility with LV2, it's better if you create a new plugin for that...

I don't see how compatibility with LV2 is a concern here?

Cheers, Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-28 Thread Stefano D'Angelo
2011/3/28 Tim Goetze t...@quitte.de:
 I'm planning to add a mode switch (low- or bandpass) to the AutoWah
 instead of making a separate new plugin, or would that be a stupid
 idea?

For compatibility with LV2, it's better if you create a new plugin for that...

 I don't see how compatibility with LV2 is a concern here?

Heh... long story short: LV2 uses URIs, LADSPA uses UniqueIDs (not
necessarily but...), two LV2 plugins with same URI are required to
have the same port signature (i.e., ports) and I wrote a LADSPA to
LV2 bridge where the URIs of the bridged plugins are in the form
urn:ladspa:, where  is the UniqueID.

This means, if you change the port signature and maintain the same
UniqueID, we would have incompatibilities in the LV2 world. If you
create a new plugin or don't touch ports, instead, everything's fine.

Stefano
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-28 Thread Philipp Überbacher
Excerpts from Stefano D'Angelo's message of 2011-03-28 22:59:46 +0200:
 2011/3/28 Tim Goetze t...@quitte.de:
  I'm planning to add a mode switch (low- or bandpass) to the AutoWah
  instead of making a separate new plugin, or would that be a stupid
  idea?
 
 For compatibility with LV2, it's better if you create a new plugin for 
 that...
 
  I don't see how compatibility with LV2 is a concern here?
 
 Heh... long story short: LV2 uses URIs, LADSPA uses UniqueIDs (not
 necessarily but...), two LV2 plugins with same URI are required to
 have the same port signature (i.e., ports) and I wrote a LADSPA to
 LV2 bridge where the URIs of the bridged plugins are in the form
 urn:ladspa:, where  is the UniqueID.
 
 This means, if you change the port signature and maintain the same
 UniqueID, we would have incompatibilities in the LV2 world. If you
 create a new plugin or don't touch ports, instead, everything's fine.
 
 Stefano

I'd say you'd even have incompatibilities in LADSPA world. Even fixes in
LADSPA plugins would sometimes need a new ID (This was discussed a while
ago regarding a LADSPA that has an unintuitive port order).

___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-27 Thread Paul Coccoli
On Sat, Mar 26, 2011 at 8:41 PM, Julien Claassen jul...@c-lab.de wrote:
 Hello Tim!
  thanks for the new release. I love your plugins. Wouldn't know, where I'd
 be without the chorus (1767) or the amp (1786) and occasionally a few of the
 other ones as well. :-) Great suite of plugins. I never had any problems so
 far, but I just istalled the new ones.
  Warm regards
            Julien


I second this.  CAPS is great.

One request though: would it be possible to add an AutoFilter plugin?
Basically, it would be the same as your AutoWah but with a low-pass
filter instead of band-pass.  It's a common effect for bass guitar.

Thanks again!
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


[LAD] [ann] CAPS 0.4.5

2011-03-26 Thread Tim Goetze
The C* Audio Plugin Suite reaches version 0.4.5.

  http://quitte.de/dsp/caps.html
  http://quitte.de/dsp/caps_0.4.5.tar.gz

CAPS is a collection of refined LADSPA units covering a wide range of 
applications, from stompbox classics to experimental oscillators.

CAPS is distributed as open source under the terms of the GNU Public 
License.

-*-

This release brings a new plugin, Narrower, which reduces the 
perceived width of a stereophonic image.  Frequent users of headphones 
will appreciate the increased subtlety of the listening experience as 
well as the reduced fatigue caused by superstereo recordings.

Other than that, some minor bugs have been fixed and the accompanying 
PDF data sheet has been improved (frequency response plots now use log 
scale: http://quitte.de/dsp/caps-0.4.5.pdf ).

The build configuration tool configure.py has been modified to 
handle python3's errant ways in graceful manner.

Upgrading is recommended unless you have no need for the new plugin 
and the current version is working fine for you.

-*-

Enjoy, and thank you for using CAPS,

Tim
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev


Re: [LAD] [ann] CAPS 0.4.5

2011-03-26 Thread Julien Claassen

Hello Tim!
  thanks for the new release. I love your plugins. Wouldn't know, where I'd be 
without the chorus (1767) or the amp (1786) and occasionally a few of the 
other ones as well. :-) Great suite of plugins. I never had any problems so 
far, but I just istalled the new ones.

  Warm regards
Julien


Music was my first love and it will be my last (John Miles)

 FIND MY WEB-PROJECT AT: 
http://ltsb.sourceforge.net
the Linux TextBased Studio guide
=== AND MY PERSONAL PAGES AT: ===
http://www.juliencoder.de
___
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev