mouse(mousewheel是哪个键)全程干货

Mark wiens

发布时间:2023-12-23

嗨,大家好,欢迎收看进阶性的 REAPER 指南。本期文章适合爱折腾人士以及不满足于软件原生提供的功能的高端用户。

mouse(mousewheel是哪个键)全程干货

 

嗨,大家好,欢迎收看进阶性的 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;获取当前的「选中对象数」,并根据它的数值来决定下一步操作代码如下:Main_OnCommand(40528, 0);  // Select item under mouse cursor itcount = CountSelectedMediaItems(0); itcount != 0 ? CHVOLUME() : SCROLL();。

这段代码是 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 太长不看,我只要结果好的,经过上面的步骤之后,我们成功得到了一个脚本!效果演示:

前往 Github 观看并下载文件(微信不能放外链,请自行复制,或点击阅读原文)https://github.com/victor647/coolsounds/blob/master/Unity%20Audio%20Scripts/Moy_Change%20Mousewheel%20Behavious%20(volume%26scroll).eel

(感谢 @V6.47 提供的 Github Repository)不习惯 Github 的用户可以用百度网盘:https://pan.baidu.com/s/1HWKLeUnj1XdDzl2A3SklTg

下载好脚本后,打开 Action List,点击 ReaScript: Load 并选择好脚本文件。

随后你的 Action List 会出现一项新的条目:Script: Moy_Change Mousewheel Behavious (volume&scroll).eel为这个脚本分配新的快捷键,在弹出的快键键输入窗口中滚动一下滚轮,即可将 Mousewheel 滚轮操作分配给这个脚本;你也可以按住 Ctrl 并滚动,来分配 Ctrl+Mousewheel,其他修饰键以此类推。

这样一来,你就能在 REAPER 中用鼠标滚轮灵活地操作上下滚动或增减对象音量啦!顺便一提,如果你的滚轮默认行为不是「上下滚动」,而是其他的什么操作……例如「缩放当前轨道的高度」,那么用如下的方法可以自定义修改:

首先,用文本编辑器(如果什么都没装就用记事本)打开 eel 文件,找到 function SCROLL(),这个函数定义了鼠标指针在空白处时默认的滚动行为。

val > 0 ? Main_OnCommand(40138, 0) : Main_OnCommand(40139, 0); 你只需要修改这里的两个 Main_OnCommand() 中填写的动作ID就可以自定义上下滚轮的行为,注意先后顺序,

第一个是向上滚动的指令,第二个是向下滚动的指令例如增加当前轨道的动作ID是 41325,缩小当前轨道的动作ID是41326,那么将这行修改成这样即可:val > 0 ? Main_OnCommand(41325, 0) : Main_OnCommand(41326, 0); 。

结语最后不得不再称赞一下 REAPER 这款面向未来的 DAW……在其他的软件中,如果你想做一件事情,而它却不支持,那么你可以请求开发者,或者咬着牙就凑合用下去……但 REAPER 给了你「自己做出来」的权利!

只要你想,只要你愿意动手,它就将最大可能地满足你的愿望是为——万能许愿机——The Holy REAPER!(行了你快别中二了,可别又被说成无脑吹)总之,这种高度支持自定义的特性,是非常难能可贵的特质因为开发者考虑到“自己不是全能的”,总会有无法涉及到的功能,所以他愿意让渡出一部分开发的权利,让用户自己去完善这个软件——这也是大多数开源项目能得以不断进步的原因。

希望未来能有更多的软件都具备这种思想以上,这就是本期的分享,希望对你有所帮助有任何疑问和想法都可以在评论区提出!直接回复公众号我很可能看不见!感谢初始脚本作者 Airon,也感谢郑金鑫老师提供灵感P.S. 本专栏的文章内容现在比较混杂,初高阶的文章都交错在一起,也缺乏一个最基础的入门教程……接下来的计划是出一篇目录,并且写三篇最基础的入门文章,敬请期待。

————作者:Moy首发于知乎「REAPER 手册」专栏,转载请注明原作信息。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186