<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>> Yes, but I figured that when a connection is made, PD
rebuilds a <i><b>flattened </b></i>graph,</p>
<p>Pd *could* flatten the graph - but only if the subpatch is not
reblocked, upsampled or overlapped. For consistency and simplicity
it makes more sense to always treat subpatches as unit generators.<br>
</p>
<p>Christof<br>
</p>
<div class="moz-cite-prefix">On 26.02.2020 00:52, William Huston
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAAV8_8kZWXZLzNZzxgEEgS-gKQv2a44iEfZgbpY0dSG3q50=Dw@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<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"
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>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"
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>
<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"
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"
target="_blank" 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>
</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>
</body>
</html>