<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 25, 2020 at 6:43 PM Christof Ressi <<a href="mailto:info@christofressi.com" target="_blank">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>I think you got it now :-)</p></div></blockquote><div>Well that is very disappointing. <br></div><div>I hope someone is collecting all of these idiosyncrasies and publishes</div><div>a document for advanced PD programmers. <br></div><div><br></div><div>I'm about 5 years into PD, and this surprises me. <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>In Pd every object is a black box (= the concept of the "unit
generator"), it doesn't care what's going on inside. </p></div></blockquote><div>Yes, but I figured that when a connection is made, PD rebuilds a <i><b>flattened </b></i>graph,</div><div>where only basic computational elements (atoms, builtin operators, externals, etc)</div><div>exist... and any concept of a subpatch or abstraction is lost. <br></div><div><br></div><div>Anyway, the workaround is simple enough. Thanks!</div><div><br></div><div>BH<br></div><div> </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>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></div></blockquote><div><br></div><div><br></div><div><br></div><div><br></div><div> </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>
</p>
<p>The workaround is to use a pair of [s~]/[r~] or
[throw~]/[catch~].<br>
</p>
<p>Christof<br></p></div></blockquote><div><br></div><div><br></div><div><br></div><div>
<br clear="all"><div><div dir="ltr"><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>William Huston: <a href="mailto:WilliamAHuston@gmail.com" target="_blank">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">Blog</a> -- <a href="http://facebook.com/billhuston" target="_blank">Facebook</a> -- <a href="http://twitter.com/WilliamAHuston" target="_blank">Twitter </a><span><span><span>-- <a href="https://www.youtube.com/channel/UCGijK1amWOLglT3YeTyEBNQ?sub_congfirmation=1" target="_blank">Youtube</a></span></span></span><b> -- <a href="https://billhustonpodcast.blogspot.com/" target="_blank">Podcast Blog</a><br></b></div><div style="text-align:center"><b>Document collections</b>: <a href="http://TinyURL.com/VirtualPipelines" target="_blank">VirtualPipelines</a> -- <a href="http://bit.ly/BHDCSDimockArchive" target="_blank">BHDCSDimockArchive</a><br><span><span><b>Please support my work! -- </b><a href="http://TinyURL.com/DonateToBillHuston" target="_blank">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" 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><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><p>
</p>
<div>On 26.02.2020 00:26, William Huston
wrote:<br>
</div>
<blockquote type="cite">
<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">
<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">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">Blog</a>
-- <a href="http://facebook.com/billhuston" target="_blank">Facebook</a>
-- <a href="http://twitter.com/WilliamAHuston" target="_blank">Twitter
</a><span><span><span>-- <a href="https://www.youtube.com/channel/UCGijK1amWOLglT3YeTyEBNQ?sub_congfirmation=1" target="_blank">Youtube</a></span></span></span><b>
-- <a href="https://billhustonpodcast.blogspot.com/" target="_blank">Podcast
Blog</a><br>
</b></div>
<div style="text-align:center"><b>Document
collections</b>: <a href="http://TinyURL.com/VirtualPipelines" target="_blank">VirtualPipelines</a>
-- <a href="http://bit.ly/BHDCSDimockArchive" target="_blank">BHDCSDimockArchive</a><br>
<span><span><b>Please support
my work! -- </b><a href="http://TinyURL.com/DonateToBillHuston" target="_blank">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" 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" target="_blank">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">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">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">@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">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">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">Pd-list@lists.iem.at</a> mailing list
UNSUBSCRIBE and account-management -> <a href="https://lists.puredata.info/listinfo/pd-list" target="_blank">https://lists.puredata.info/listinfo/pd-list</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at" target="_blank">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">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">Pd-list@lists.iem.at</a> mailing list
UNSUBSCRIBE and account-management -> <a href="https://lists.puredata.info/listinfo/pd-list" target="_blank">https://lists.puredata.info/listinfo/pd-list</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at" target="_blank">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">https://lists.puredata.info/listinfo/pd-list</a><br>
</blockquote>
</div>
</blockquote>
</div>
_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at" target="_blank">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">https://lists.puredata.info/listinfo/pd-list</a><br>
</blockquote></div></div>