调用另一个函数后调用函数

时间:2013-02-28 00:34:36

标签: python-2.7 listener ableton-live

我正在编程一个控制器,用于使用基于Python的API与Ableton Live 8一起使用。在我的代码中,我使用API​​中提供的方法来监视属性值的变化,并在值发生变化时调用函数。我的目标是在注意到值更改时更改剪辑的颜色。

我已经完成了我的代码,并且编译没有错误。来自Ableton的日志:

742234 ms. RemoteScriptError: RuntimeError
742234 ms. RemoteScriptError: : 
742234 ms. RemoteScriptError: Changes cannot be triggered by notifications
742234 ms. RemoteScriptError: 

这似乎是使用内置通知系统在通知期间更改实时集的结果。触发实际更改 AFTER 监听功能已完成执行应该有效。这可能是使用Python吗?

编辑以澄清:

目前我们有

  1. 注意到值变化,函数叫
  2. 函数尝试更改剪辑颜色(导致错误)
  3. 我们需要

    1. 监听器通知值更改,函数称为
    2. 函数找到新的颜色值
    3. 功能执行结束
    4. 在侦听器范围之外调用另一个函数,并更改剪辑颜色

2 个答案:

答案 0 :(得分:1)

我在M4L做了很多,并且心里明白这个错误:) 我担心你无法做任何事情 - 对于我的noob眼睛,它看起来像一个内置的安全机制,所以你不能循环(改变了一些东西?改变它!改变了......)。

在M4L中,我使用Javascript Tasks来分离步骤(任务几乎忘记了所有事情),

之类的东西

观察员 - >改变了一些事情

创建一个反应

的任务

task.execute()或task.schedule(time)

也许python线程模块可以实现类似的东西? 顺便说一句,如果您对_Framework-Tasks有任何了解,请告诉我。

答案 1 :(得分:0)

我在尝试从剪辑停止侦听器中删除曲目时遇到了同样的问题,然后我找到了这个帖子,并按照@ user2323980建议。 似乎有一个" _tasks"每个Framework类上的对象(我通过ClipSlotComponent和ControlSurface中的log_message找到它)来处理任务之间的并发。它的使用非常简单:

self._tasks.add(Task.run(func,args))

我在Push和MK2脚本上发现了它的一些用途,这些都是很好的参考。