2013-02-28 142 views
1

我正在使用基于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. 函数试图改变剪辑的颜色(错误结果)

我们需要

  1. 监听通知书值的变化,叫
  2. 功能函数查找新的颜色值
  3. 函数执行结束
  4. 另一个函数被调用听者的范围之内,并改变剪辑的颜色
+0

我对Abelton Live毫无所知,但我猜如果通知无法修改,那么会有一些API让您排队等待稍后发生的事情(一旦通知结束) 。我无法在任何地方找到API的文档,所以我不能更具体。 – Blckknght 2013-02-28 00:43:59

+0

可以使用Max For Live API中的函数完成此操作,但我试图在此之外工作。我想我需要创建自己的监听器,并观察对全局变量的更改。 – Conduit 2013-02-28 00:47:13

回答

1

我做了很多在M4L,并知道这个错误的心:) 恐怕你不能做任何事情 - 对我的小白眼,它看起来像一个内置的安全机制,所以你不能循环(有什么改变?更改!有些东西改变了......)。

在M4L我使用的JavaScript任务分离的步骤(任务忘了几乎一切), 像

观察 - >的某些变化

创建反应

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

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

+0

怀疑我可以在没有M4L的情况下挂钩Javascript,这有点违背了在Python中构建它的目的。游民。 我猜你对'安全机制'是正确的。看起来,AL对于听众更改Live模块的某些部分有困难。从(非常)简短的检查来看,它看起来可能与用于保存集合的文件的内容有关,尽管这对我来说没有多大意义。 – Conduit 2013-04-29 15:38:33

-1

我有同样的问题试图从剪辑停止侦听器中删除一个音轨,然后我发现这个线程,并遵循@ user2323980建议。
每个框架类(我发现它通过ClipSlotComponent和ControlSurface内的log_message)似乎有一个“_tasks”对象,它处理任务之间的并发。它真的很简单的使用方法:

self._tasks.add(Task.run(FUNC,参数))

我发现了它的一些应用推送和MK2脚本,这些都是很好的参考。

相关问题