[LV2] LV2 Question
Harry van Haaren
harryhaaren at gmail.com
Thu Nov 21 06:51:43 PST 2013
On Thu, Nov 21, 2013 at 2:44 PM, Warren Koontz <profwub at gmail.com> wrote:
> it appears that I should instantiate a Multiverb object in "activate",
> apply it in "run" and delete it in "deactivate".
>
Not exactly:
-instantiate is where you instantiate (malloc / new) your plugin
-activate is called *before* processing starts
-deactivate is called when processing is stopping.
Activate & deactivate might be useful to clear your reverb delay lines etc:
its primary use is for transport relocation in a DAW & similar use cases
where state like delay lines become invalidated.
-run is the "process" function yes, where the actual DSP code goes.
> So the object needs to be accessible in all three functions. I see two
> ways to do this:
>
> 1. Declare a pointer to a Multiverb object as a static variatle (static
> Multiverb *revMono) near the top of the file containing the LV2
> functions.
> 2. Declare a pointer to a Multiverb object as a member of the same
> structure that contains the port variables.
>
> Option 2 is correct.
Option 1 is horrible. Static state in a plugin means that only one instance
of that plugin can be loaded: your plugin will crash the host if two are
used. Never use static variables*.
I also need to have access to the sampling rate, which I can get when
> "instantiate" is called. I can also save this as a static or a member of
> the above mentioned structure.
>
Since you're now creating (new / malloc) in instantiate(), you can keep the
SR in the struct with the ports too.
Good luck! -Harry
*Ok, there are exceptional circumstances where this might OK, but this
isn't one of them.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lv2plug.in/pipermail/devel-lv2plug.in/attachments/20131121/8d6638bf/attachment-0002.htm>
More information about the Devel
mailing list