Jython Music

时间:2018-06-12 19:45:33

标签: jython-music

我注意到Jython Music for Music(JEM)有自己的Timer实现,如https://jythonmusic.me/timer-library/所述。文档显示了一个函数t.setDelay(delay),其中 delay 以毫秒为单位。

我的问题是, t.setDelay(延迟)似乎对延迟时间没有影响。计时器继续使用创建时设置的原始延迟。

我想知道这是不是一个错误(可能在另一次更新期间被破坏了?),或者是否有一个我没有看到的技巧。

代码:我的代码是更大类的一部分。相关的行是:

__init __

中的

    self.t = Timer(500, self.metronome, (), True)

in self.metronome()

     required_delay = int(60000.0/self.adjusted_16count)
     self.t.setDelay(required_delay)

节拍器()功能继续以原始速度重复(在这种情况下,每500毫秒),与setDelay()函数无关。奇怪的是,如果我通过添加

来查看延迟值
    print self.t.getDelay()

在上面的代码之后,它显示了正确的值(在我的情况下为125),但它在物理上继续运行,就像原始值有效一样。我通过设置非常长且非常短的初始值以及可观察的结果(声音)来实验证实 - 即使 getDelay()显示更改,声音之间的时间段保持与原始值相同

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我不确定Timer类的实现是否存在问题(尽管可能是......)以下工作正常(即,它会改变Timer的延迟时间)。

from timer import *

delay = 1000

def echo(x):
   print x,

t = Timer(delay, echo, ["."])
t.start()

# change this delay as desired, while the program is running, via JEM's
# live-coding functionality (i.e., Run/Run current line)...
t.setDelay(2000)

我认为问题可能在其他地方。试试这个,看看......