<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>A DSP loop is when signal connections form a loop. Pd can't look
      into objects so it just treats them as black boxes. It's as simple
      as that.</p>
    <p>After all, in your example with the effect outside your
      abstraction you can literally *see* the DSP loop, why are you
      surprised? And in your other example with the effect inside your
      abstraction you don't get a DSP loop because, well, there's is no
      DSP loop.</p>
    <p>I see where you're coming from. In the analog world your two
      examples are indeed equivalent, but in Pd they are *not*.<br>
    </p>
    <p>Christof<br>
    </p>
    <div class="moz-cite-prefix">On 25.02.2020 23:46, Christof Ressi
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:98f86c80-50e6-96b5-1469-fd1c1a90a5f9@christofressi.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p> </p>
      <blockquote type="cite">especially because of additional potential
        delay of inlet~/outlet~.</blockquote>
      inlet~/outlet~ does *not* add a delay (unless when going to a
      larger blocksize).
      <p> </p>
      <blockquote type="cite">
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div>But you're using [r~] and [s~] which is not the same as
            direct signal connections. The former can act like a short
            delay line. Please read
            "3.audio.examples/G05.execution.order".</div>
        </blockquote>
        <div><br>
        </div>
        Christof, Yes! Exactly!</blockquote>
      I think you misunderstood. With "former" I meant [r~]/[s~].
      [inlet~]/[outlet~] does not add a delay.<br>
      <p> </p>
      <blockquote type="cite">Also, believe me, r~/s~ has nothing to do
        with it. </blockquote>
      Believe me, it certainly has. Can you finally share a minimal test
      patch, please? I would like to see an actual patch where you get
      an unexpected DSP loop error.<br>
      <p>Christof<br>
      </p>
      <div class="moz-cite-prefix">On 25.02.2020 23:40, William Huston
        wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:CAAV8_8n7Eg5dsA_ERGwrVWYJ47pyM3ZdWvatTXiiDOYFboOj9w@mail.gmail.com">
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <div dir="ltr">
          <div dir="ltr" class="gmail_attr">On Tue, Feb 25, 2020 at 6:14
            AM Christof Ressi <<a
              href="mailto:info@christofressi.com"
              moz-do-not-send="true">info@christofressi.com</a>>
            wrote:<br>
          </div>
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div>
                <p>@Dan<br>
                </p>
                <blockquote type="cite">As far as I recall, going
                  between abstraction to parent patch via inlet~/outlet~
                  introduces a block delay, hence no error</blockquote>
              </div>
            </blockquote>
            <div>Dan, correction-- that is the exact circumstance where
              I *am* getting the error. <br>
            </div>
            <div>So now I think you are beginning to see why I think
              it's unexpected,</div>
            <div>especially because of additional potential delay of
              inlet~/outlet~.</div>
            <br>
            <div>Dan also wrote:</div>
            <div>> As the error says, you shouldn't create a direct
              feedback loop with signal cords. <br>
            </div>
            <div><br>
            </div>
            <div>Let me try to explain again:</div>
            <div><br>
            </div>
            <div><span style="background-color:rgb(255,255,0)"><b>I have
                  taken a WORKING CIRCUIT--</b></span></div>
            <div><b> </b>
              <div>(a simple stereo delay circuit, with cris-cross L/R
                feedback <br>
              </div>
              <div>implemented with [delwrite~] + [vd~]) <br>
              </div>
              <div><b><span style="background-color:rgb(255,255,0)">--
                    which DOES NOT produce a "DSP Loop Error", </span><br>
                </b></div>
              <div><b>pulled a Null (straight-wire) Filter <br>
                </b></div>
              <div><b>(which had been installed in the feedback path)<br>
                </b></div>
              <div><b>and moved it externally to the abstraction</b></div>
              <div><b>(up to the parent patch), via outlet~/inlet~,</b></div>
              <div><b>which, if anything ADDS additional block delays, <br>
                </b></div>
              <div><b>yet this produces "DSP Loop Error". <br>
                </b></div>
              <div><b><br>
                </b></div>
              <div><b>Clearly (the way I see it) <br>
                </b></div>
              <div><b>the logic behind detecting "DSP Loop Error"
                  condition<br>
                </b></div>
              <div><b>has a bug.</b></div>
              <br>
              <div><b>I believe this is a false error,</b></div>
              <div><b>because as I have stated--</b></div>
              <div><b>the circuit HAD been working!</b></div>
              <div><b><br>
                </b></div>
              <div><b>All I did was add the potential for additional</b></div>
              <div><b>blocks of delay on the feedback path. <br>
                </b></div>
            </div>
            <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>But you're using [r~] and [s~] which is not the same
                as direct signal connections. The former can act like a
                short delay line. Please read
                "3.audio.examples/G05.execution.order".</div>
            </blockquote>
            <div><br>
            </div>
            <div>Christof, Yes! Exactly!<br>
            </div>
            <div>Added delay should REDUCE the chance of a "DSP Loop
              Detected"!</div>
            <div><br>
            </div>
            <div>Also, believe me, r~/s~ has nothing to do with it. <br>
            </div>
            <div>My original patch was extremely ugly, due to
              criss-crossed feedback.</div>
            <div>I only implemented with r~/s~ to clean up the patch to
              share. <br>
            </div>
            <div><br>
            </div>
            <div>Thanks everyone!</div>
            <div>BH<br>
            </div>
            <div><br>
            </div>
            <div><br>
              <br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <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>
                <p>Christof<br>
                </p>
                <div>On 25.02.2020 11:42, Dan Wilcox wrote:<br>
                </div>
                <blockquote type="cite"> As far as I recall, going
                  between abstraction to parent patch via inlet~/outlet~
                  introduces a block delay, hence no error
                  <div><br>
                  </div>
                  <div>
                    <blockquote type="cite">
                      <div dir="auto">
                        <div dir="auto">
                          <div dir="auto">Third patch is like the
                            second, only the effect has been moved out
                            of the abstraction, and into the parent
                            patch. ONLY HERE do I get the DSP loop
                            error. </div>
                        </div>
                      </div>
                    </blockquote>
                    <div><br>
                    </div>
                    Signal loop in a single patch without abstractions =
                    error. Pd has no way to read and write to the same
                    signal buffer in the patch at the same time
                    *without* some tiny delay.</div>
                  <div><br>
                  </div>
                  <div>
                    <blockquote type="cite">
                      <div dir="auto">
                        <div dir="auto">
                          <div dir="auto"><b
                              style="font-family:sans-serif">The point
                              is the last two patches have (or should
                              have) an identical graph! </b></div>
                        </div>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                  <div>At the lower level, they don't. What happens if
                    you put part of the path inside a subpath which uses
                    inlet~/outlet~?</div>
                  <div><br>
                  </div>
                  <div>
                    <div>
                      <blockquote type="cite">
                        <div>On Feb 25, 2020, at 11:36 AM, William
                          Huston <<a
                            href="mailto:williamahuston@gmail.com"
                            target="_blank" moz-do-not-send="true">williamahuston@gmail.com</a>>
                          wrote:</div>
                        <br>
                        <div>
                          <div dir="auto">
                            <div dir="auto">
                              <div dir="auto">First abstraction, simple
                                stereo delay:  2 delay lines, variable
                                feedback L->R, R->L.</div>
                              <div dir="auto"> This <b>works</b>, no
                                DSP loop error. <br>
                              </div>
                              <div dir="auto"><br>
                              </div>
                              <div dir="auto">Second abstraction
                                contains an effect in the feedback path.
                                (in my simple example, it's just a null
                                wire: In-L passes to Out-L, etc). Again
                                this <b>works</b>, no DSP error. </div>
                              <div dir="auto"><br>
                              </div>
                              <div dir="auto">Third patch is like the
                                second, only the effect has been moved
                                out of the abstraction, and into the
                                parent patch. ONLY HERE do I get the DSP
                                loop error. </div>
                              <div dir="auto"><br>
                              </div>
                              <div dir="auto"><b
                                  style="font-family:sans-serif">The
                                  point is the last two patches have (or
                                  should have) an identical graph! </b><br>
                              </div>
                              <div dir="auto"><b
                                  style="font-family:sans-serif"><br>
                                </b></div>
                              <div dir="auto"><font face="sans-serif">It
                                  really seems like a bug to me. </font></div>
                              <div dir="auto"><span
                                  style="font-family:sans-serif"><br>
                                </span></div>
                              <div dir="auto"><span
                                  style="font-family:sans-serif">I'll
                                  upload a test patch a little later. </span></div>
                              <div dir="auto"><span
                                  style="font-family:sans-serif"><br>
                                </span></div>
                              <div dir="auto"><font face="sans-serif">Thanks, </font></div>
                              <div dir="auto"><font face="sans-serif">BH</font></div>
                            </div>
                          </div>
                        </div>
                      </blockquote>
                    </div>
                    <br>
                    <div>
                      <div
style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">--------</div>
                      <div
style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">Dan
                        Wilcox</div>
                      <div
style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a
                          href="http://twitter.com/danomatika"
                          target="_blank" moz-do-not-send="true">@danomatika</a></div>
                      <div
style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a
                          href="http://danomatika.com" target="_blank"
                          moz-do-not-send="true">danomatika.com</a></div>
                      <div
style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a
                          href="http://robotcowboy.com" target="_blank"
                          moz-do-not-send="true">robotcowboy.com</a></div>
                      <div
style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br>
                      </div>
                      <br>
                    </div>
                    <br>
                  </div>
                  <br>
                  <fieldset></fieldset>
                  <pre>_______________________________________________
<a href="mailto:Pd-list@lists.iem.at" target="_blank" moz-do-not-send="true">Pd-list@lists.iem.at</a> mailing list
UNSUBSCRIBE and account-management -> <a href="https://lists.puredata.info/listinfo/pd-list" target="_blank" moz-do-not-send="true">https://lists.puredata.info/listinfo/pd-list</a>
</pre>
                </blockquote>
              </div>
              _______________________________________________<br>
              <a href="mailto:Pd-list@lists.iem.at" target="_blank"
                moz-do-not-send="true">Pd-list@lists.iem.at</a> mailing
              list<br>
              UNSUBSCRIBE and account-management -> <a
                href="https://lists.puredata.info/listinfo/pd-list"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.puredata.info/listinfo/pd-list</a><br>
            </blockquote>
          </div>
        </div>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
<a class="moz-txt-link-abbreviated" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list
UNSUBSCRIBE and account-management -> <a class="moz-txt-link-freetext" href="https://lists.puredata.info/listinfo/pd-list">https://lists.puredata.info/listinfo/pd-list</a>
</pre>
    </blockquote>
  </body>
</html>