<div dir="ltr"><div><div>&quot;So when you use the [until] loop you are sending drawing
    instructions to the GUI ($arraysize * $no_mouse_events) times.  A
    single array redraw instruction in tcl is about 4k, so to scroll a
    single pixel for a 100-element array:<br>
    100 elements * 1 = 100 redraws * 4k = 400k&quot;<br></div><div><br></div>thats why i say fix tcl/tk<br></div>my old graphics library could be used for a new gui. it is c++ but has the logic to even only update lines as in blit an arbitrary line.<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 4, 2014 at 1:33 PM, Jonathan Wilkes <span dir="ltr">&lt;<a href="mailto:jancsika@yahoo.com" target="_blank">jancsika@yahoo.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div><div class="h5">
    <div>On 03/04/2014 01:20 PM, Jonathan Wilkes
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div>On 03/04/2014 10:11 AM, i go bananas
        wrote:<br>
      </div>
      <br>
      [...]<br>
      <br>
      <blockquote type="cite">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div class="gmail_extra"><br>
                <br>
                <div class="gmail_quote">2014-03-04 12:12 GMT+01:00 i go
                  bananas <span dir="ltr">&lt;<a href="mailto:hard.off@gmail.com" target="_blank">hard.off@gmail.com</a>&gt;</span>:
                  <div>
                    <div> <br>
                      <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                        <div dir="ltr">just for interest perhaps, here&#39;s
                          the sound editor i made years ago:
                          <div><br>
                          </div>
                          <div><a href="http://puredata.hurleur.com/sujet-1295-sound-editor" target="_blank">http://puredata.hurleur.com/sujet-1295-sound-editor</a><br>
                          </div>
                          <div><br>
                          </div>
                          <div>and probably even more interesting, here
                            is maelstorm&#39;s wave display abstraction:<br>
                          </div>
                          <div><br>
                          </div>
                          <div><a href="http://puredata.hurleur.com/sujet-5890-waveform-display" target="_blank">http://puredata.hurleur.com/sujet-5890-waveform-display</a><br>
                          </div>
                          <div><br>
                          </div>
                          <div><br>
                          </div>
                          <div><br>
                          </div>
                          <div>basically, what maelstorm discovered was
                            that using [until] with a counter was not
                            nearly fast enough to do the calculations
                            needed for a decent zoom/scroll function,
                            and we looked into it, and there just didn&#39;t
                            seem to be a vanilla workaround.  So he uses
                            iem_tab objects to do the table
                            calculations.</div>
                        </div>
                      </blockquote>
                    </div>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
        </div>
      </blockquote>
      <br>
      Remember that when you redraw an element of an array you actually
      redraw the _entire_ array in Pd Vanilla.  And depending on the
      array style you may have a separate tk canvas item for each
      element.<br>
      <br>
      So when you use the [until] loop you are sending drawing
      instructions to the GUI ($arraysize * $no_mouse_events) times.  A
      single array redraw instruction in tcl is about 4k, so to scroll a
      single pixel for a 100-element array:<br>
      100 elements * 1 = 100 redraws * 4k = 400k<br>
      <br>
      That&#39;s flowing from the core to the GUI for a _single_ mouse
      event.  If you trigger ten scrolls you&#39;re already at 4 megs of
      data sent.<br>
      <br>
      I&#39;m pretty sure commercial editors avoid that type of design.  In
      editors like the upcoming Openshot Video that have several
      discrete parts that sending messages, the GUI part almost
      certainly sends nothing at all to the video core for
      zooming/scrolling.  For moving a chunk of audio/video, it almost
      certainly sends a single message about a single object&#39;s delta.<br>
    </blockquote>
    <br></div></div>
    I may have showed this already, but I think it&#39;s instructive here:<br>
    <a href="https://jwilkes.nfshost.com/pd-tiger.webm" target="_blank">https://jwilkes.nfshost.com/pd-tiger.webm</a><br>
    <br>
    I don&#39;t have sound on that clip, but I believe I tried it with the
    &quot;test audio&quot; patch going and I wasn&#39;t getting dropouts.  This is
    because a) I&#39;m sending a single transform message for every scroll
    of the number box and b) the GUI toolkit-- not Pd core-- is doing
    the math to transform and redisplay the drawing.<br>
    <br>
    Socket traffic is bad because it require both the core (sending) and
    GUI (receiving) to do work.  If you generate megs and megs of
    traffic you can end up with dropouts and choking display even if
    there&#39;s very little being redrawn.<br>
    <br>
    -Jonathan<br>
    <br>
    <blockquote type="cite"> <br>
      -Jonathan<div class=""><br>
      <br>
      <br>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
<a href="mailto:Pd-list@iem.at" target="_blank">Pd-list@iem.at</a> mailing list
UNSUBSCRIBE and account-management -&gt; <a href="http://lists.puredata.info/listinfo/pd-list" target="_blank">http://lists.puredata.info/listinfo/pd-list</a>
</pre>
    </div></blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
<a href="mailto:Pd-list@iem.at">Pd-list@iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -&gt; <a href="http://lists.puredata.info/listinfo/pd-list" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br>
<br></blockquote></div><br></div>