當前位置:
首頁 > 最新 > REAPER 腳本實例:多功能滑鼠滾輪

REAPER 腳本實例:多功能滑鼠滾輪

嗨,大家好,歡迎收看進階性的 REAPER 指南。本期文章適合愛折騰人士以及不滿足於軟體原生提供的功能的高端用戶。

接下來,我將帶領大家從無到有實現一個新特性:如何讓滑鼠滾輪依據環境呈現出不同的功能。

具體來說就是:

1. 當滑鼠在 Item 上時,可以用滑鼠滾輪調節對象的音量大小

2. 當滑鼠在空白位置時,依舊是原來的滾動窗口界面

我會先進行解釋原理和說明,如果不感興趣只想要實現功能後的成果,請直接下拉到TL;DR部分。


要做這個功能,首先我會想:有沒有現成的用滑鼠滾輪調節音量的功能?

在 Action List 里搜索之後,得到了如下三個 Action:

分別是將 item 音量增加1dB、減少1dB 以及恢復成 0dB。

然而 REAPER 中用來分配「滑鼠滾輪」快捷鍵的,通常都是帶有(MIDI CC relative/mousewheel)後綴的動作,這些動作能自行識別滾輪的上下滾動方向,並做出對應的行為。

也就是說,如果我們直接把滑鼠滾輪分配給操作音量的動作,只能做到單一地增加/減小音量,無法實現根據滾輪方向而改變音量的增減。

那麼接下來:找一找有沒有造好的輪子?

這裡我要提一句,90%你遇到的問題,和想要的需求,在 REAPER 的官方論壇(REAPER Forums - Cockos Incorporated Forums)里都已經出現過至少一次了。

這次也一樣,簡單地搜索之後就發現一個寫好的腳本,可以用滾輪來控制 Item 的音量:

果斷下載,發現是用了get_action_context函數來獲得執行腳本時的滑鼠滾輪狀態,當返回值 val 大於零時,滑鼠滾輪為向上滾動,反之則為向下。

既然 REAPER 的腳本中提供了這個介面,那就好辦啦,照著它的代碼可以實現好「調節音量」的功能。

(其實這個腳本實際實現的功能要更複雜一些,而且還可以自由設定音量調節的幅度,例如 0.5dB,感興趣的可以自行下載研究)


這個判定的核心在於:滑鼠下方是不是 Item?

搜索 Action List 可以找到一個動作:Item: Select item under mouse cursor,這個動作可以用來選中滑鼠指針下方的 Item。

於是判定問題也迎刃而解:

首先調用這個功能來嘗試選中滑鼠下方的對象;

如果存在對象,選中的 Item 數量則為1,否則為0;

獲取當前的「選中對象數」,並根據它的數值來決定下一步操作。

代碼如下:

這段代碼是 Cockos 自家的開源語言 eel,和主流的腳本語言都有所區別,所以姑且當成偽代碼看就成。

第一行:Main_OnCommand() 用於執行軟體內置的動作,傳入的參數是動作 ID,例如這裡寫的 40528 就是動作Item: Select item under mouse cursor的動作 ID。

在 Action List 的標題欄處點擊右鍵,勾選 Show action IDs 即可顯示動作ID。

第二行是用CountSelectedMediaItems()函數獲取當前被選中的 Item 的數量,在第三行進行判定:如果數量不為零,即有選中的對象,那麼對這個 Item 調節音量;否則,執行普通的滾動操作。

而滾動操作與前文同理,是用內置的兩個動作(Scroll view up/down)來執行的,同樣是通過動作ID調用。

TL;DR 太長不看,我只要結果

好的,經過上面的步驟之後,我們成功得到了一個腳本!

效果演示:

GIF


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 REAPER手冊 的精彩文章:

TAG:REAPER手冊 |