考虑这个补丁(下面的代码,在pd-extended_0.43.4-1
Ubuntu 11.04 上测试):
我基本上只是拖动滑块,想看看 [hsl] 滑块发出的两个连续值之间的时间差是多少。[trigger] 帮助 ( Triggering_messages_with_trigger
) 指出:“从 [trigger] 的出口发送的消息发生在零时间,事件之间没有延迟...... ”。因此,abang
首先进入[timer]的右入口,输出“经过的逻辑时间”,然后abang
进入[timer]的左入口,重置定时器。我用 [pack] 收集经过的时间和滑块值,然后 [打印] 这些值。如屏幕截图所示,问题是我得到这样的值:
...
print: 10.1587 0.462312
print: 43.5374 0.396985
print: 0 0.341709
print: 0 0.306533
print: 0 0.276382
print: 23.22 0.271357
...
这告诉我滑块在 0 毫秒内从 0.396985 更改为 0.341709,这应该是不可能的:我必须经过一段时间才能移动鼠标(这将触发操作系统和纯数据中所需的处理程序)为了为滑块设置一个新值?!
那么,为什么会发生这种情况?是预期的吗?- 并且是否有一个 Pd 对象(或外部)可以让我在用鼠标拖动期间准确测量 [hsl] 滑块的两个连续输出值之间经过的时间(在所有测量的经过时间应该大于零的意义上是准确的)?
编辑:刚刚找到[realtime],它类似于[timer](并且可以在此补丁中用作替代品),但输出浮点值;所以我不再得到纯零 - 但是,我得到这样的打印:
...
print: 0.029 0.361809
print: 0.025 0.366834
print: 47.714 0.376884
print: 0.022 0.386935
print: 14.988 0.39196
print: 36.526 0.396985
print: 40.294 0.40201
...
...这仍然有点不切实际:例如滑块在 25 微秒内从 0.361809 变为 0.366834(约 0.005);然后在 47 毫秒内从 0.366834 变为 0.376884(大约为 0.01,是之前的两倍) - 比之前的时间间隔长 1880 倍!所以我不确定这是否准确,要么......
编码:
#N canvas 160 223 312 218 10;
#X obj 47 19 hsl 200 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 10500 0;
#X floatatom 98 48 12 0 0 0 - - -;
#X obj 44 88 timer;
#X floatatom 92 122 12 0 0 0 - - -;
#X obj 44 62 t b b;
#X obj 44 173 print;
#X obj 44 152 pack f f;
#X connect 0 0 1 0;
#X connect 0 0 4 0;
#X connect 0 0 6 1;
#X connect 2 0 3 0;
#X connect 2 0 6 0;
#X connect 4 0 2 0;
#X connect 4 1 2 1;
#X connect 6 0 5 0;