在调用另一个函数之后调用函数
我正在使用基于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吗?
编辑澄清:
目前我们
- 价值变动注意到,函数调用
- 函数试图改变剪辑的颜色(错误结果)
我们需要
- 监听通知书值的变化,叫
- 功能函数查找新的颜色值
- 函数执行结束
- 另一个函数被调用听者的范围之内,并改变剪辑的颜色
我做了很多在M4L,并知道这个错误的心:) 恐怕你不能做任何事情 - 对我的小白眼,它看起来像一个内置的安全机制,所以你不能循环(有什么改变?更改!有些东西改变了......)。
在M4L我使用的JavaScript任务分离的步骤(任务忘了几乎一切), 像
观察 - >的某些变化
创建反应
task.execute任务( )或task.schedule(time)
也许python线程模块可以实现类似的东西?顺便说一下,如果您碰巧了解_Framework-Tasks的任何内容,请告诉我。
怀疑我可以在没有M4L的情况下挂钩Javascript,这有点违背了在Python中构建它的目的。游民。 我猜你对'安全机制'是正确的。看起来,AL对于听众更改Live模块的某些部分有困难。从(非常)简短的检查来看,它看起来可能与用于保存集合的文件的内容有关,尽管这对我来说没有多大意义。 – Conduit 2013-04-29 15:38:33
我有同样的问题试图从剪辑停止侦听器中删除一个音轨,然后我发现这个线程,并遵循@ user2323980建议。
每个框架类(我发现它通过ClipSlotComponent和ControlSurface内的log_message)似乎有一个“_tasks”对象,它处理任务之间的并发。它真的很简单的使用方法:
self._tasks.add(Task.run(FUNC,参数))
我发现了它的一些应用推送和MK2脚本,这些都是很好的参考。
我对Abelton Live毫无所知,但我猜如果通知无法修改,那么会有一些API让您排队等待稍后发生的事情(一旦通知结束) 。我无法在任何地方找到API的文档,所以我不能更具体。 – Blckknght 2013-02-28 00:43:59
可以使用Max For Live API中的函数完成此操作,但我试图在此之外工作。我想我需要创建自己的监听器,并观察对全局变量的更改。 – Conduit 2013-02-28 00:47:13