Таймер setDelay () проблема в музыке Jython - PullRequest
0 голосов
/ 12 июня 2018

Я заметил, что Jython Environment for Music (JEM) имеет собственную реализацию Timer, как описано в https://jythonmusic.me/timer-library/.В документации показана функция t.setDelay (задержка), где задержка указана в миллисекундах.

Моя проблема в том, что t.setDelay (задержка) , по-видимому, не даетРазница во времени задержки.Таймер продолжает использовать исходную задержку, которая была установлена ​​во время создания.

Мне интересно, если это ошибка (возможно, она была повреждена во время другого обновления?), Или если есть хитрость, что яЯ не вижу.

Код: мой код является частью большего класса.Соответствующие строки:

в __init __

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

в self.metronome ()

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

Функция metronome () продолжает повторяться в исходном темпе (вв этом случае каждые 500 мс) независимо от функции setDelay ().Странно, если я посмотрю на значение задержки, добавив

    print self.t.getDelay()

после приведенного выше кода, он покажет правильное значение (125 в моем случае), но физически продолжает работать так, как если бы исходное значение находилось всила.Я подтвердил это экспериментально, установив очень длинные и очень короткие начальные значения с наблюдаемым результатом (звуком) - период между звуками остается тем же, что и исходное значение, даже если getDelay () показывает изменение.

Заранее спасибо за любые предложения.

1 Ответ

0 голосов
/ 17 июня 2018

Я не уверен, что проблема в реализации класса 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)

Я думаю, что проблема может быть в другом месте.Попробуй это и посмотри ...

...