按键脚本
在FreePiano内部, 所有的操作都是以“命令”的形式存在的,而命令的组合是非常多变的。从1.8版开始,命令也支持多国语言了, 这样命令就更容易被理解了。
提到脚本, 大部分可能都会马上产生恐惧。 确实,作为命令,只要写错一点,计算机就无法正确地执行。 但是FreePiano的脚本与其他脚本不同:
- FreePiano的脚本最多只能当成命令,它没有复杂的逻辑控制,也没有各种各样的公式和符号,所以是很容易学习的。
- FreePiano的脚本只是用来输入的,在FreePiano内部并不保存脚本。如果您的某一行脚本输入错误了,那么这行将不能被识别, 就跟没输入一样。 其他的地方完全不受影响。
- FreePiano会自动帮你转换脚本的格式,所以有没有写对很容易看出来。
所以不用害怕, 让我们来学习FreePiano的高级配置命令吧!
新的命令编辑方式
从FreePiano 1.7开始,脚本可以在按键配置的界面上直接修改了,所以现在已经不建议再直接编辑FreePiano的map文件,除非你有大量的批处理操作,直接修改文件能方便一些。
之前在键盘布局的介绍中我们已经看到过命令的编辑界面了,下面我们再看一下这个界面:
手动编写命令时,我们只需要关心界面中间部分的脚本区域就可以了, 如果自动应用
这个选项被选中,那么编辑完成后您甚至不需要点应用
按钮来让脚本生效。
如果不小新修改了脚本,你可以点刷新
按钮,这样就会放弃当前的修改,恢复之前按键对应的脚本。
命令绑定方式
我们编写的脚本是绑定在按键上,在键盘按下或松开时执行。FreePiano中定义了以下绑定方式:
英文命令 | 中文命令 | 说明 |
Keydown | 键盘按下 | 命令会在键盘按下时执行。 |
Keyup | 键盘松开 | 后面跟随的命令将被在键盘松开时执行。 |
Label | 标签 | 定义按键上显示的文字,如果没有定义标签,FreePiano会帮你根据内容自动生成一个。 |
Color | 颜色 | 定义按键按下时的颜色,如果没有定义,将使用配置中的自动颜色值。 |
Sequence | 序列 | 指定按键命令的序列分割,每次按键只会触发当前序列的命令,然后自动切换到下一个序列。 |
按键绑定命令的格式为:
方式 按键名称 脚本
在按键命令绑定界面上编写脚本时,FreePiano会自动帮你修改按键名称
为了方便脚本编写,在FreePiano的按键绑定窗口上修改脚本时,FreePiano会强制帮你把命令绑定到当前选中的按键上,所以在编写时,可以随便写一个按键名称就好。
</div>
## 音符命令
下面的格式说明中, 我们统一将命令绑定在`键盘按下 A`上,前面已经说过FreePiano会帮你自动修改名称,所以这些命令拷贝到任何按键上都可以直接使用。
音符命令格式如下:
键盘按下 A 音符 <通道> <音符名称> <可选的力度>
最终力度 = 独立力度 * 通道力度 / 127
键盘按下 A 音符 输入_0 C4
键盘按下 A 音符 输入_0 E4
键盘按下 A 音符 输入_0 G4
键盘按下 A 音符 输入_0 C5
键盘按下 A 音符 输入_0 C4
序列 A
键盘按下 A 音符 输入_0 E4
序列 A
键盘按下 A 音符 输入_0 G4
序列 A
键盘按下 A 音符 输入_0 C5
键盘按下 A <参数名称> <参数操作> <值>
键盘按下 A <参数名称> <通道> <参数操作> <值>
英文名称 | 中文名称 | 类型 | 说明 |
KeySignature | 曲调 | 全局 | 当前的曲调,值的范围时-4到7 |
Group | 分组 | 全局 | 当前的键盘分组 |
Volume | 总音量 | 全局 | FreePiano的输出音量 |
Velocity | 力度 | 通道 | 通道的力度 |
FollowKey | 跟随曲调 | 通道 | 当前通道是否跟随曲调 |
Transpose | 移位 | 通道 | 以一个半音为单位的音符移位 |
FollowKey | 八度 | 通道 | 以1个八度(12个半音)为单位的移位 |
Channel | 通道 | 通道 | 定义一个输入通道所对应的输出通道 |
Pitch | 弯音 | 通道 | 类似弯音轮的效果,值可以从-64到64,代表降低2个半音到升高2个半音 |
Program | 乐器 | 通道 | 选择通道所使用的乐器 |
BankMSB | 乐器组1 | 通道 | 选择乐器组 |
BankLSB | 乐器组2 | 通道 | 选择乐器组 |
Sustain | 延音 | 通道 | 延音踏板 |
Modulation | 颤音 | 通道 | 颤音轮 |
ChannelVolume | 通道音量 | 通道 | 单独控制每个通道的音量,需要音源支持 |
ChannelPan | 通道声像 | 通道 | 单独控制每个通道的声像,需要音源支持 |
英文 | 中文 | 说明 |
Set | 设置为 | 新值 = 值 |
Inc | 增加 | 新值 = 当前值 + 值 |
Dec | 减少 | 新值 = 当前值 - 值 |
Flip | 反转 | 新值 = 值 - 当前值 |
Press | 脉冲 | 新值 = 值; 20毫秒以后, 新值 = 当前值 |
Release | 释放 | 新值 = 值; 任意一个按键抬起前,新值 = 当前值 |
Set10 | 设置十位 | 新值的十位 = 值的十位 |
Set1 | 设置个位 | 新值的个位 = 值的个位 |
SyncSet | 同步设置 | 同步设置会再下一次按键之后才生效 |
SyncInc | 同步增加 | 同步设置会再下一次按键之后才生效 |
SyncDec | 同步减少 | 同步设置会再下一次按键之后才生效 |
SyncFlip | 同步反转 | 同步设置会再下一次按键之后才生效 |
SyncPress | 同步脉冲 | 同步设置会再下一次按键之后才生效 |
英文命令 | 中文命令 | 说明 |
Play | 播放 | 播放乐曲 |
Record | 录制 | 开始录音 |
Stop | 停止 | 停止播放或录音 |
MIDI | MIDI | 发送原始的MIDI消息。 |
Menu | 菜单 | 可以用按键弹出主菜单。 |
键盘按下 A MIDI 90 40 7f
序列 A <标签>
键盘按下 A 序列跳转 <标签> <按键>