<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 03/04/2014 10:11 AM, i go bananas
wrote:<br>
</div>
<br>
[...]<br>
<br>
<blockquote
cite="mid:CAO=D1cg4DtGUQ0sO-QLz+BvUvWi-wA2++gn2Kdue1J+Uy5vh5g@mail.gmail.com"
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"><<a moz-do-not-send="true"
href="mailto:hard.off@gmail.com" target="_blank">hard.off@gmail.com</a>></span>:
<div>
<div class="h5">
<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's
the sound editor i made years ago:
<div><br>
</div>
<div><a moz-do-not-send="true"
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's wave display abstraction:<br>
</div>
<div><br>
</div>
<div><a moz-do-not-send="true"
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'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's flowing from the core to the GUI for a _single_ mouse event.
If you trigger ten scrolls you're already at 4 megs of data sent.<br>
<br>
I'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's delta.<br>
<br>
-Jonathan<br>
<br>
<br>
</body>
</html>