<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>I think you got it now :-)</p>
<p>In Pd every object is a black box (= the concept of the "unit
generator"), it doesn't care what's going on inside. DSP
computation starts from the outside. An object can be computed
when all its input dependencies have been computed. This will
never be the case when one of its inlets is in some way connected
to one of its outlets - for reason which are hopefully obvious.<br>
</p>
<p>The workaround is to use a pair of [s~]/[r~] or
[throw~]/[catch~].<br>
</p>
<p>Christof<br>
</p>
<div class="moz-cite-prefix">On 26.02.2020 00:26, William Huston
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAAV8_8mhGdQHmh8xmVBpwDCZAAiO=TA0a2ZOifGyxUMOs8+BQg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">> in your example with the effect outside your
abstraction you can literally *see* the DSP loop, why are you
surprised?
<div>
<div dir="ltr" class="gmail_signature"
data-smartmail="gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr"><span>
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div><br>
</div>
<div>You have got to be kidding
me!!!</div>
<div><br>
</div>
<div>So are you saying....</div>
<div><br>
</div>
<div>If I have an audio abstraction
FOO, <br>
</div>
<div>with has 4 inlets~ and 4
outlets~.</div>
<div><br>
</div>
<div>and I have another BAR, <br>
</div>
<div>with 2 inlets~ and 2 outlets~,
<br>
</div>
<div><br>
</div>
<div>and I try to connect a pair of
FOO's outlets~ to BAR's inlets~, <br>
</div>
<div>and BAR's outlets to a pair of
FOO's inlet's, <br>
</div>
<div>that <b>PD throws a "DSP loop
error" <u><i>whether or not
there</i></u></b></div>
<div><b><u><i>is in fact an audio
loop in the actual graph</i></u>?</b>??<br>
</div>
<br>
<div>And there is not a way to
override this behavior??<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>--<br>
William Huston: <a
href="mailto:WilliamAHuston@gmail.com"
target="_blank"
moz-do-not-send="true">WilliamAHuston@gmail.com</a><br>
Binghamton NY<br>
<div style="text-align:center">
<div style="text-align:center"><span></span><br>
<span><b>Public Service
Mapping / Videography /
Research / Education /
Safety Advocacy</b></span><br>
<span></span><a
href="http://WilliamAHuston.blogspot.com"
target="_blank"
moz-do-not-send="true">Blog</a>
-- <a
href="http://facebook.com/billhuston"
target="_blank"
moz-do-not-send="true">Facebook</a>
-- <a
href="http://twitter.com/WilliamAHuston"
target="_blank"
moz-do-not-send="true">Twitter
</a><span><span><span>-- <a
href="https://www.youtube.com/channel/UCGijK1amWOLglT3YeTyEBNQ?sub_congfirmation=1"
target="_blank"
moz-do-not-send="true">Youtube</a></span></span></span><b>
-- <a
href="https://billhustonpodcast.blogspot.com/"
target="_blank"
moz-do-not-send="true">Podcast
Blog</a><br>
</b></div>
<div style="text-align:center"><b>Document
collections</b>: <a
href="http://TinyURL.com/VirtualPipelines"
target="_blank"
moz-do-not-send="true">VirtualPipelines</a>
-- <a
href="http://bit.ly/BHDCSDimockArchive"
target="_blank"
moz-do-not-send="true">BHDCSDimockArchive</a><br>
<span><span><b>Please support
my work! -- </b><a
href="http://TinyURL.com/DonateToBillHuston"
target="_blank"
moz-do-not-send="true">TinyURL.com/DonateToBillHuston</a><br>
</span></span></div>
<div style="text-align:center"><span><span><br>
</span></span></div>
<div style="text-align:center"><span><span><b><img
src="https://4.bp.blogspot.com/-QjAlYXBdfk0/XA7eTMshJPI/AAAAAAAAIGQ/hr-t_w9fu-MCMWja84YnMBJIry0oWiWTACLcBGAs/s600/BH%2BTerra%2BVigilate%2B%2523BT%2Bself%2Bportrait%2Btriptich1.jpg"
moz-do-not-send="true"
width="420"
height="73"></b></span></span></div>
<span><span></span></span></div>
<span><br>
</span></div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</span></div>
</div>
</div>
</div>
</div>
<br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Feb 25, 2020 at 6:01
PM Christof Ressi <<a href="mailto:info@christofressi.com"
moz-do-not-send="true">info@christofressi.com</a>> wrote:<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>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>On 25.02.2020 23:46, Christof Ressi wrote:<br>
</div>
<blockquote type="cite">
<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>On 25.02.2020 23:40, William Huston wrote:<br>
</div>
<blockquote type="cite">
<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"
target="_blank" 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></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>
</blockquote>
</body>
</html>