<div dir="ltr">Harry,<div><br></div><div>Thanks again. After I sent my last message to you I had a similar idea: set a bool in activate() and then check and clear it in run(). I cannot do too much without user input since I use user input to determine the number of buffers and their sizes among other things. I can always set a limit to the number of buffers and their sizes and allocate them once and for all in instantiate(), but I was hoping to avoid this.</div>
<div><br></div><div>I will try to implement reverb as a class. I had been following the amp.c example from the LV2 site, which seems to be in plain vanilla C. I will instead look at C++ examples, including your Masha class.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 21, 2013 at 5:08 PM, Harry van Haaren <span dir="ltr"><<a href="mailto:harryhaaren@gmail.com" target="_blank">harryhaaren@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Please include list in replies (reply-all), it's useful for people with similar questions in future.<br>
</div><div class="gmail_extra"><br><div class="gmail_quote"><div class="im">On Thu, Nov 21, 2013 at 7:46 PM, Warren Koontz <span dir="ltr"><<a href="mailto:profwub@gmail.com" target="_blank">profwub@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>It now seems to me that the "control signals" are only available in run(). I had assumed that they were also available in activate() and deactivate().</div>

</div></blockquote><div> </div></div><div>Activate() docs, state explicity that connect_port() may be called before or after activate(). That means, no port information available.<br><a href="http://lv2plug.in/doc/html/structLV2__Descriptor.html#af65673266e8da03aee22eaed10a7a0f4" target="_blank">http://lv2plug.in/doc/html/structLV2__Descriptor.html#af65673266e8da03aee22eaed10a7a0f4</a><br>

<br>In activate you can zero your buffers and do other housekeeping that doesn't require user input.<br></div><div>Perhaps even set-up your 'verb based on the last set of user-input: By keeping a cache of user-input in your plugin's state. (this is only useful it its already run() before, not for the 1st time setup).<br>

</div><div class="im"><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">
<div>My algorithm is basically as follows:</div><div><br></div><div><font face="courier new, monospace">Initialize left and right reverb with user parameters</font></div><div><font face="courier new, monospace">Do</font></div>


<div><font face="courier new, monospace">    Process block of audio data</font></div><div><font face="courier new, monospace">Until there are no more blocks</font></div><div><font face="courier new, monospace"><br></font></div>


<div><font face="arial, helvetica, sans-serif">If I have to do all of this in run(), then I need a way to know that I am processing the first block. Help!</font></div></div></blockquote></div></div><br></div><div class="gmail_extra">

Keep a bool "haveUserInput" in your state, set it to false in initialize(). In run() <br>if ( haveUserInput == false ) {<br></div><div class="gmail_extra">  setupReverb();<br>}<br><br></div><div class="gmail_extra">

Certain properties of your reverb calculations are more expensive than others: perhaps concider adding a port-property to that port: <a href="http://lv2plug.in/ns/ext/port-props/#expensive" target="_blank">http://lv2plug.in/ns/ext/port-props/#expensive</a><br>

</div><div class="gmail_extra">Hosts tell users to not automate that input... hopefully.<span class="HOEnZb"><font color="#888888"><br><br></font></span></div><span class="HOEnZb"><font color="#888888"><div class="gmail_extra">
-Harry<br></div></font></span></div>
</blockquote></div><br></div>