2

我正在使用基于 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: 

看来这是使用内置通知系统在通知期间更改现场设置的结果。在侦听功能完成执行触发实际更改应该可以工作。这可能使用 Python 吗?

编辑澄清:

目前我们有

  1. 注意到值变化,调用函数
  2. 函数尝试更改剪辑颜色(导致错误)

我们需要

  1. 侦听器注意到值变化,调用函数
  2. 函数找到新的颜色值
  3. 函数执行结束
  4. 在侦听器范围之外调用另一个函数,并更改剪辑颜色
4

2 回答 2

1

我在 M4L 中做了很多工作,并且牢记这个错误 :) 恐怕你对此无能为力 - 在我的菜鸟眼中,它看起来像一个内置的安全机制,所以你不能循环(有什么改变了吗?改变它!有些东西改变了......)。

在 M4L 中,我使用 Javascript 任务来分隔步骤(任务几乎忘记了所有内容),例如

观察者 -> 发生了一些变化

创建一个响应的任务

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

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

于 2013-04-26T13:17:40.833 回答
0

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

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

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

于 2017-02-07T16:47:27.670 回答