视障者音乐制作交流基地

标题: Reaper偏高级玩法之制作带有条件判断的操作 [打印本页]

作者: 小虎哥    时间: 2022-4-23 15:31
标题: Reaper偏高级玩法之制作带有条件判断的操作
今天我也来一次不要脸的标题——标题含“高级”两字。其实这也算不上特别高级,于是就叫它“偏高级”算了。
先说下,因我现在用的是默认的英语界面,以下我自己翻译的显示内容可能与中文语言包有少许出入,不过可保证意思相同。
一、几个小问题以及注意事项
在创建之前先让我们来了解几个问题以及看看有什么需要注意的。
1、何为带条件判断的操作?
一个操作里有多个功能,根据不同条件(或称场景)执行不同功能的,就是带条件判断的操作了。Reaper搭配OSARA后,其实很多操作都是这种形式,如按下Delete(删除键)时,会根据当前焦点位置删除对象、轨道、时间选择内容、标记或包络点,这个操作其实就是带有条件判断的操作,条件就是当前焦点所在类型。
PS:但我没找到关于判断所在焦点类型的操作在何处,意味着用这种方法无法实现类似这样判断焦点执行功能的操作,可能需要写脚本吧。嗯,不过其他场景(比如判断是否正在播放、是否正在录音)是没问题的。
2、何为Cycle操作编辑器?
Cycle操作编辑器,原名“Cycle Action editor”,由SWS(扩展Reaper操作的插件)提供,可创建带有条件判断、循环等内容的操作。没把“Cycle Action editor”译成“循环操作编辑器”的原因,1是因为中文语言包没这样翻译,2是该编辑器并非只能创建循环类操作。
不过Cycle操作编辑器界面不太友好,系统焦点不能顺利操作,需要借助读屏的浏览方式,甚至部分操作需借助OCR才可完成。本文基于NVDA操作Reaper而写,借助OCR的部分将使用落寞OCR软件进行操作。当然,为了照顾到使用其他读屏操作的读者,在涉及到读屏专有操作时,我会略提下其他读屏(如争渡读屏)的操作方式。
在往下阅读前,建议先熟悉当前读屏的自身浏览方式(如NVDA的对象导航、争渡读屏的元素导航屏幕导航等),并了解落寞OCR或读屏自带OCR的操作方式。以免看到后文的一些专有操作方式时因不熟而无法理解。
在制作操作过程中,可能需要在同进程的多个窗口间切换,如Cycle操作编辑器、操作窗口等。若使用的是NVDA读屏,可利用对象导航在这些窗口间切换,或使用“进程窗口切换”等插件以使更易切换;若使用其他读屏,可了解读屏相关热键,如争渡读屏可用Ctrl+小键盘点号键)。
想了解NVDA的进程窗口切换插件,可[color=var(--vscode-textLink-foreground)]点此跳转到NVDA中文站的进程窗口切换插件页面,不过说实话,默认的Ctrl+.(大键盘句点)的按键有点影响Reaper使用,所以我把它改成了与另一款插件相同的按键——NVDA+Win+Tab。
3、何为报告状态的操作项?
在Reaper操作窗口的列表中大部分时候有3列,表头分别为“快捷键”、“描述”与“状态”。若该操作对应状态列有“ON”或“OFF”(当然也可能是“开”或“关”),就说明当前操作是报告状态的操作,类似于编程语言中有“true”和“false”两个值的“bool”类型,“ON”相当于“true”。如按字母R执行的“走带: 录音”,表面上是“开始录音”与“停止录音”两个功能,实际上是切换录音状态,录音状态开则录音开始,关则停止。
与报告状态类操作相对的就是无状态类操作,该类型的操作在操作列表的状态列内为空。在6000多项操作中,无状态操作占多数,按Ctrl+J打开跳转时间窗口、按Alt+W打开峰值监视器等,这些都是无状态类操作。
PS:此处说的报告状态类操作并非Ctrl+Shift+J读出时间、Ctrl+Shift+P读出波纹编辑模式这样的操作,而是反映Reaper状态的操作,可以理解为Ctrl+Shift+J的报告对象是用户,而报告状态类操作的报告对象为Reaper本身(不太严谨)。
4、条件判断的形式有哪些?
在日常生活中,条件判断的时候有很多。“如果今天8:00有课,我就早起,要不然就晚起”这就是一个条件判断,条件是“8:00有课”。当8:00真的有课时,我就会早起;那8:00没课,我就不用那么早起身。
其实这已经涉及到了编程的领域,但个人认为将此运用于Reaper的自定义操作中无需过多强调编程中的概念与逻辑,按照日常生活的理解,从实际需求出发即可。因为SWS扩展的Cycle操作编辑器中,对于每种判断形式均有说明,使用中文语言包也有中文说明。
运用场景举例:当我在没录音时,这个操作的功能是“录音”,当我在录音过程中,这个操作是“暂停/继续录音”,说直白点就是一个按键负责在不同场景执行“录音”或“暂停/继续录音”的功能。那么我们设计这个操作的思路就是:如果此时未录音(即录音状态为“OFF”),则执行“录音”的功能,否则(即录音状态是“ON”)就执行“暂停/继续”的功能。
以下介绍几种常见的条件判断形式:
以上只是最常见的两种形式而已,SWS的Cycle操作编辑器里绝不止这两种,剩下的后面再说。

作者: 小虎哥    时间: 2022-4-23 15:33
二、创建Cycle操作的过程1、Cycle操作编辑器的外观与操作方法
按下Alt键将焦点定于Reaper菜单栏,左右光标找到“扩展”菜单,上下光标寻至“Cycle操作编辑器”,回车将其打开。
Cycle操作编辑器大概长这样:
打开编辑器后焦点默认停在左侧列表中,上下光标可以浏览列表中的项目,不过很遗憾,Tab无法去往别的列表或按钮。要想浏览整个窗口,需要用到读屏的浏览方式。以下介绍几种:
不同读屏的不同浏览方式,对于鼠标的跟随情况也不相同。NVDA对象浏览时鼠标不自动跟随,要操作时需先将鼠标移至当前对象位置后进行单击或右击操作;而争渡无论元素导航或屏幕导航,其默认设置为鼠标自动跟随,故无需执行鼠标跟随的步骤。
下面的步骤中,我将不再强调读屏浏览方式的差异,请自行按照使用的读屏与浏览方式选用合适的操作步骤。
2、创建一个Cycle操作3、插入语句
语句是用于条件判断、循环等的标识符,是Cycle操作的灵魂。有了这些语句后,Reaper才知道我们的想法是什么。之前介绍过“if”与“if-else”两种,现在将对编辑器内可插入的语句逐一介绍。注意此处介绍的不易理解实属正常,可能因我表达能力有限而使其看起来复杂,不过不必担心,结合后面实战例子会好理解很多。
PS:Reaper在中文环境下可能这里的显示顺序会有所不同,英语环境下按照逻辑排序,中文环境下按照首字母排序。
好了,经过了以上的一大段理论介绍,估计大家都看晕了,都想Ctrl+W了哈哈!那么下面来点实际操作,如何插入这些语句。其实插入语句说起来很简单,在右侧列表右击某项,弹出的菜单内找到并展开“插入语句”菜单,里面就有以上介绍的所有语句,点击插入即可。
为了让大家看得更明白,下面详细说说操作方法与注意事项:
首先使焦点在右侧列表上,上下光标找到某个项目,执行鼠标跟随后鼠标右击弹出上下文菜单,上下光标找到“插入语句”子菜单右光标展开,继续通过上下光标选择需要插入的语句,回车即可插入。
若是刚创建这个Cycle操作,则右侧列表中有且仅有一个项目——右击此处添加命令,我们需右击此项才可添加操作或语句。若列表已有命令,插入时将插入在当前位置,也就是会插入在当前选中的命令之前。
若插入的是“LOOP”、“ConSOLE”等这些可跟文本的语句,焦点会停在一个编辑框,编辑框中已有语句文本和一个空格,我们直接在空格后输入文本,输入完后回车即插入完成。
若插入的是“IF”系列、“LOOP”系列这样有结束点的语句,编辑器会自动给我们在其下方插入“ENDIF”或“ENDLOOP”语句。此时要注意,若要插入条件命令或特定条件才触发的功能,需要插入到结束点上方,也就是上下光标找到结束语句鼠标跟随右击后插入。如果插入在结束点下,命令就不受条件限制了。
4、插入现有操作与右侧列表编辑
无论是条件还是要执行的功能都由操作组成,所以我们需要在语句之间或前后添加现有操作。
重复以上5个步骤,就可以把一个完整的Cycle操作制作出来,最后就是保存并且分配快捷键啦。
PS:其实是有“插入在操作窗口中选中的操作”这个功能的,但我这不知为何无效,故采取复制ID之法。
在制作过程中难免会遇到粘贴ID错误、插入位置错误等情况,Cycle操作编辑器的列表也是支持剪切、复制、粘贴、删除等操作的,并且快捷键与系统相同,即
PS:删除命令无确认对话框,在左侧列表中删除Cycle操作亦如此,所以在删除前请三思!
5、保存并为它分配快捷键
在右侧列表中检查已添加的命令,确认无误后即可进行下一步。
到此,洋洋洒洒写了那么多废话,制作Cycle操作的方法与步骤可算写完了,大家可以去实际制作过程中享用自己制作的高级操作了。

作者: 小虎哥    时间: 2022-4-23 15:35
三、实战举例与导入导出
看了以上文字,可能大多数会用Reaper的同学都一脸懵逼,你——是——在——说——天——书——吗?
不用担心,接下来我就举两个例子,这两个例子我想大多数同学都可能用得到,并附带蓝奏云下载链接,若实在不会制作可选择导入现成做好的分配快捷键后直接使用。
1、用R控制开始/停止录音、用空格控制暂停/继续录音
很多录小说的同学都会遇到需要暂停录制的时候,而默认暂停/继续录音的快捷键是Ctrl+空格。该热键两大弱点,首先是被输入法占用,其次是违背录音过程中案件越简洁越好的设计。有同学就说了“我在首选项里把‘录音停止时将编辑光标移至对象末尾’就可以实现暂停/继续的功能啊!”但不要忘了,这样每停止一次就会产生一个新对象,对于多轨录音加同时后期并非好事。有同学还说“给‘暂停/继续播放’分配一个单键快捷键即可。”但就有人用习惯了空格那又如何?如果您能习惯以上两种情况,那么直接改设置、改快捷键即可;如果有遗留习惯等原因,那么请往下看。
制作该操作的思路:既要实现空格键能执行“暂停/继续录音”的功能,但也不能让空格键现在的功能——“播放/停止”失去,故需判断录音状态。当处于录音状态时执行“暂停/继续录音”的功能,非录音状态时执行“播放/停止”的功能。以下是制作步骤:
有同学可能会说“我用习惯了某些录音机软件,它是一个键控制录音开始、暂停与继续,另一个键控制停止,通过该类操作是否可实现?”答案是:no problem(没问题)。
这样的操作制作好后,右侧列表应该显示的这些(注意顺序):
制作好了点击“应用”按钮并在操作窗口中把它分配给字母R,以后按R就可开始、暂停与继续录音,按空格停止录音。
2、用斜杠在不同状态下实现新旧OSARA的不同功能
大家都知道目前OSARA在进行快捷键的优化,在2月的更新中将Reaper主界面的大键盘斜杠键由原来的“试图: 移动编辑光标至播放光标”改成了“擦带: 在编辑光标处循环分段擦带”,使得很多同学用不习惯了。于是将斜杠键改回了原来的功能,但失去了体验新功能的机会。我之前的方法是将“移动编辑光标至播放光标”的功能分配给了字母Z,以实现两者均有案件,但有了Cycle操作后,一个斜杠键,将兼顾新旧OSARA。
制作思路:“移动编辑光标至播放光标”,该功能我们几乎都在播放时使用;而“在当前位置循环擦带”,一般都在停止(或非播放)时使用。故可判断播放状态实现一键对应两功能。因上一个实战举例已详细描述制作步骤,故此处仅展示制作好后右侧列表中的命令顺序:
同样,制作好后点击“应用”并到操作窗口内为它分配斜杠键,即可一键体验到新旧OSARA的差别。
3、导入导出
对Cycle操作的导入导出,自然要在Cycle操作编辑器内完成。
4、成品下载
这里给大家提供了上面说的几个我制作好的操作,但均未指定快捷键,导入后需手动到操作列表中分配按键,操作名称就是文件名。导入方法请参看前面相关内容。
[color=var(--vscode-textLink-foreground)]点此从蓝奏云下载
PS:因蓝奏云不支持上传“ini”格式的文件,所以我把3个文件压缩在一个zip文件里,解压后仍是一个操作一个ini文件。
结语
以上就是本次分享的所有内容了,一下刹不住车写了六七千字,希望大家能看懂。
Reaper的开发思路是将大部分设计权交给用户,热键自定义、菜单自定义、操作自定义等这些高度自定义的方式可以在用户的手里玩出各种花样,期待有更多好玩好用的操作诞生,也希望有更多实用的分享出炉。
The end!

作者: 琴韵晓波    时间: 2022-4-24 12:39
精彩!相当精彩!
作者: futurewy    时间: 2022-6-30 11:41
这玩意很好用!多谢多谢!




欢迎光临 视障者音乐制作交流基地 (http://szzyyzz.com/) Powered by Discuz! X3.2