簡體   English   中英

在另一個函數被調用之后調用一個函數

[英]Calling a function after another function is called

我正在使用基於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. 另一個函數在偵聽器范圍之外調用,並更改剪輯的顏色

我在M4L上做了很多工作,內心都知道這個錯誤:)恐怕您對此無能為力-在我的菜鳥看來,它看起來像是內置的安全機制,所以您無法循環播放(發生了什么變化?改變它!有什么改變了...)。

在M4L中,我使用Javascript任務來分隔步驟(任務幾乎忘記了所有內容),例如

觀察員->某些更改

創建一個反應的任務

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

也許python線程模塊可以實現類似的功能? 順便說一句,如果您碰巧了解有關_Framework-Tasks的任何信息,請告訴我。

我在嘗試從剪輯停止偵聽器中刪除曲目時遇到了同樣的問題,然后我找到了該線程並遵循了@ user2323980的建議。
在每個Framework類上似乎都有一個“ _tasks”對象(我在ClipSlotComponent和ControlSurface中通過log_message找到它)處理任務之間的並發。 而且使用起來非常簡單:

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

我在Push和MK2腳本中發現了它的一些用法,這些都是很好的參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM