全新的技法映射插件 Articulation Map

Articulation Map(技法映射器) 是一款轻巧而高效的音符映射工具,专为无缝将 keyswitch(键位切换键)音符转换为PC事件而设计。它的设计理念在于简化操作,确保用户可以不经过复杂的学习过程即可使用。

1710569131854-am-jsfx.gif

本工具的核心功能是将 Band MSB/LSB 和 Program number (Bank/Program Select) 转换为 keyswitch 音符的 Note number, Velocity, 和 Off-Velocity,使之成为 keyswitch 音符的一种替代形式。这种转换既可靠又直观,因为 Bank/Program Select 事件保留 keyswitch 音符的特性,从而可以无缝还原,确保您的工程不受影响。

1710569169593-am-np.gif

功能亮点:

  • 可以完全替代官方的Bank/Program Select功能。
  • 支持两种Reabank虚拟乐器音色的显示模式,便于用户快速切换并找到所需音色。
  • 提供 PC to Note Toggle 功能,实现 PC 和 keyswitch 音符的双向转换。
  • 通过专有的键位映射配置文件,将一个键位映射为双键位或多键位。
  • 支持以不同的 keyswitch (键位切换键) 力度触发不同的技法。
  • 支持 Keyswitch CC (KSCC/UACC/CC Stack) 映射。
  • 通过 Short-Mode Duration (ms) 控制器,实现 keyswitch 音符的时值控制。
  • 通过 Long-Mode Controller 控制器,实现 keyswitch 音符的延音控制。
  • 采用路由通道控制器来灵活管理 MIDI 事件通道分配。
  • 简易操作的界面,包括一键切换JSFX的悬浮状态和Bank/Program消息的即时发送。
  • 用户友好的定制选项,包括字体、字号以及其他控制界面设置。
  • 多种界面风格可选,包括ImGui、Lokasenna Gui和默认风格,以适应不同用户的偏好。
  • 支持批量插入音色。
  • 脚本界面占用空间小,并具有固定功能,允许将技法映射界面固定在顶部。

基础文件:
Lua:Articulation Map.lua - 主脚本,用于加载 Reabank,插入Patch,编辑MIDI数据等
JSFX: Articulation Map.jsfx - FX插件,用于接收并处理MIDI事件
JSFX: pre_trigger_events.jsfx - FX插件,用于提前触发MIDI事件
Reabank:用于在 Articulation Map.lua 加载的 .reabank 文件

如何加载脚本:

  1. 使用 Articulation Map 之前,您需要新建一条轨道并加载一个虚拟乐器;
  2. 打开 REAPER 的操作列表(Action list),在过滤栏中输入 Articulation Map,找到 Articulation Map.lua 脚本并加载;
  3. 点击 Articulation Map.lua 脚本界面右上角的 [JS] 按钮加载必要的 JS 插件。插件将被放置在效果链的最顶层,以等待接收处理事件。
  4. 点击 Articulation Map.lua 脚本界面左下角的加载文件 [Load File] 按钮,选择并打开一个 reabank,确保 reabank 正确加载。

如何使用 Articulation Map.jsfx:

Articulation Map.jsfx 是技法映射的核心插件,它支持两种模式(Mode)的映射,一种是将PC映射为键位(Keyswitch),一种是将PC映射为 CC(Keyswitch CC/UACC/CC Stack)。以下是两种模式的使用方法:

PC to Keyswitch 将 PC 映射为键位(Keyswitch):
– 当虚拟乐器支持 Keyswitch 时,请在 Articulation Map.jsfx 面板上选择该模式。

  1. 打开 Articulation Map.jsfx 插件,确保模式(Mode)选项为 Short+Long(默认设置,按照需要你可以选择单独的 Short-Mode 或者 Long-Mode);
  2. 打开 Articulation Map.lua 脚本,点击界面中的[加载文件]按钮,加载一个 reabank 音色表;
  3. 点击 Articulation Map.lua 界面的 Patch 列表选择一个音色并点击OK,该音色将插入到 MIDI 编辑器的 PC 车道中;
  4. 播放该事件,你将听到 PC 被映射为 Keyswitch。

PC to CC,将PC映射为CC(Keyswitch CC/UACC/CC Stack):
– 当虚拟乐器支持 Keyswitch CC/UACC/CC Stack 时,请在 Articulation Map-JSFX 面板上选择该模式。

  1. 打开 Articulation Map.jsfx 插件,确保模式(Mode)选项为 KSCC (UACC);
  2. 打开 Articulation Map.lua 脚本,点击界面中的[加载文件]按钮,加载一个 reabank 音色表;
  3. 点击 Articulation Map.lua 界面的 Patch 列表选择一个音色并点击OK,该音色将插入到 MIDI 编辑器的 PC 车道中;
  4. 播放该事件,你将听到 PC 被映射为 CC。

Reabank编写指南:

Articulation Map 采用 REAPER 标准的 Reabank 格式,意味着它可以直接加载和处理标准的 Reabank 文件。

1. Reabank 格式要求:
Bank MSB(0-127)
Bank LSB(1-127)
Program number(0-127)

2. 技法映射 Reabank 说明:
Bank MSB: 乐器分组编号
Bank LSB: 对于PC to Keyswitch 模式为Velocity,对于 PC to CC 模式为CC编号。
Program number: 对于PC to Keyswitch 模式为Keyswitch编号,对于 PC to CC 模式为CC值。

3. 一个特定键位映射为多键位说明:
在reabank中,可以定义将一个特定的键位映射关联到一个或多个不同的键位上。每行定义一个映射,格式为:
原始键位=目标键位1,目标键位2,…
其中,技法键位由 [分组编号-力度值-音色编号] 的形式表示。例如:

//! 127-100-100=127-100-67, 127-100-74, 127-95-79

表示 127-100-100 映射到三个不同的键位:127-100-67、127-100-74和127-95-79。
请注意,每行开头必须包含 “//!”。

PC to Keyswitch - reabank 示例:

Bank 121 96 ReaSynth
//! 121-96-60 = 121-96-72, 121-96-76
60 do-mi
//! 121-96-61 = 121-96-79
61 so
//! 121-96-62 = 121-96-72, 121-96-77
62 do-fa
//! 121-96-63 = 121-96-81
63 la
//! 121-96-64 = 121-96-84
64 do˙
//! 121-96-65 = 121-96-79
65 so

PC to CC - reabank 示例:

Bank 100 0 LASS 3 Full (CC Stack)
1 Legato
2 Sustain
3 Sordino
//! 100-0-4=100-0-6
4 Shorts
//! 100-0-5=100-0-7, 100-58-9
5 Pizzicato
//! 100-0-6=100-0-9
6 Bartok Pizz
//! 100-0-7=100-0-12
7 Tremolo
//! 100-0-8=100-0-13
8 Trills
//! 100-0-9=100-0-14
9 Harmonics
//! 100-0-10=100-0-32
10 Staccato

此外,Articulation Map Bundle 还包括一份示例 Reabank 文件,作为您的参考。

快捷键说明:

  • F1 打开音色表(修改音色表后按F5更新reabank)
  • F2 编辑配置表
  • F3 向左移动MIDI事件 10 ticks
  • F4 向右移动MIDI事件 10 ticks
  • F5 刷新音色表(右键点击界面中的reabank名称也可用于刷新reabank)
  • F6 音符-PC模式切换
  • F7 设置PC事件
  • F8 切换音色表显示模式
  • F9 切换JSFX插件浮动状态
  • F10 将Reabank写入reaper.ini以作为默认音色表
  • F11 恢复界面原始尺寸(默认未锁定GUI界面,需要恢复界面尺寸时按F11)
  • F12 打开键位映射表

按钮说明

  • A:音色表显示模式 1(通用的显示方式,比如具备GS/XG规格的Roland/YAMAHA硬件音源)
  • B:音色表显示模式 2(将每个乐器的所有技法显示到一起,似乎更适合keyswitch或UACC的显示)
  • ‘<’:选中MIDI事件向左移动 10 tick(按住Shift 点击按钮微移 1 tick)
  • ‘>’:选中MIDI事件向右移动 10 tick(按住Shift 点击按钮微移 1 tick)
  • PN: PC to Note toggle按钮
  • PC: 设置bank/program select(按住Shift 点击按钮触发 PC to CC toggle功能)
  • ER: 编辑当前的reabank(按住Shift 点击按钮以编辑同时多技法映射文件:simul-arts.txt)
  • JS: 点击以加载JS插件。如果插件已加载则用于浮动或取消浮动articulation_map.jsfx(按住Shift 点击按钮浮动或取消浮动:pre_trigger_events.jsfx)。默认显示当前使用的延音控制器的CC编号。

特别鸣谢:
在此特别感谢REAPER英文社区 Tale 对 Articulation Map.jsfx 的贡献,尤其是其在延音控制器方面的核心代码,极大地增强了本工具的功能性。

现在,只需打开 Articulation Map.lua 并加载 Articulation Map.jsfx,您便可开始进行MIDI创作。我诚邀您体验这一全新工具,期待您的反馈和建议。

下载脚本:
添加我的 Reapack 源(两个源只能选一个使用):
https://github.com/zaibuyidao/ReaScripts/raw/master/index.xml
https://group.reaget.com/mirrors/zaibuyidao/ReaScripts/index.xml (Tee佬提供的国内专线,不需要梯子)

在 ReaPack 搜索:zaibuyidao Articulation Map
找到脚本后右键点击下载。

更新到 1.0.46
回退版本到 1.0.39 以保持功能简洁。

更新到 1.0.47
改进了数组管理逻辑,通过动态扩展数组大小,避免了因数组溢出导致的数据丢失问题。
对文件读取和配置处理逻辑进行了优化,提升了预处理事件脚本的稳定性和性能。

更新到 1.0.45

修复了模式切换无效的问题。
新增了“映射 Bank LSB”功能,可以将原始 Bank LSB 映射为指定值,从而更灵活地定义 Bank MSB 和 LSB。

如果发生映射错误,请清除simul-arts.txt的内容并重新加载.reabank文件。

现在除了加入 Mode 模式切换外,还新增了 bank LSB 的映射:

Bank 100 0 LASS 3 Full
**//! m=kscc l=96**
1 Legato
2 Sustain
3 Sordino

其中,//! m=kscc l=96 模式定义行解释为:
定义当前模式为 kscc/uacc 模式,并且将音色库原始的 Bank LSB 值 0 映射为 96(Bank 100 96)。

经过以上定义,可以更灵活地分配音色库编号,比如:

Bank 1 1 乐器 1
Bank 1 2 乐器 2
Bank 1 3 乐器 3
...

可以创建最多 16384 件乐器。

reabank 编写可以参考以下更新的模板:

更新到 1.0.40

新增功能:自动切换 AM-JSFX 插件模式,基于当前选中的 bank 名称,实现更智能的模式管理。

要设置自动切换 AM-JSFX 模式,只需要在 reabank 文件中 bank 名称的下一行增加一行模式定义行 //! m=xxx,例如:

Bank 100 0 LASS 3 Full
//! m=kscc
1 Legato
2 Sustain
3 Sordino

AM-JSFX 的 Mode 切换当前共有 4 个选项可写:short, long, short-long 以及 kscc。

新版本改进了同时多键位映射的读取方式,现在的操作更加简单,只需要在reabank编写同时多键位映射信息即可。你不再需要管理simul-arts.txt文件,reabank文件中的多键位映射信息会自动与其共享。

使用时,在MIDI编辑器中插入一个音色信息即可触发同时多键位映射。

为此,我用REAPER自带插件ReaSynth编写了一段简单的MIDI,并编写了一份简单的reabank,让大家从中可以了解同时多键位映射的工作原理,只需要播放就可以了解它。

下载工程后,确保所有插件正确加载。同时,建议重新加载一份该工程下的reabank(该文件在工程中附带)。在这个测试工程中,播放MIDI音符和触发PC事件的结果是一致的。

请注意,以下reabank主要用于测试映射功能,包括单一音符的映射(通常单一音符不需要映射)。

Bank 121 96 ReaSynth
// Simultaneous Articulations Mapping Definition:
//! 121-96-60 = 121-96-72, 121-96-76
//! 121-96-61 = 121-96-79
//! 121-96-62 = 121-96-72, 121-96-77
//! 121-96-63 = 121-96-81
//! 121-96-64 = 121-96-84
//! 121-96-65 = 121-96-79
60 do-mi
61 so
62 do-fa
63 la
64 do˙
65 so

1713708393859-reasynth-test.zip (2.68 KB)

更新版本以支持 UACC,现在 Keyswitch CC 和 UACC 完全兼容 Articulation Map。

我在为 Articulation Map 插件编写 UACC 标准的 reabank 时发现,Reaticulate 默认的 UACC 音色表基本上是可以直接加载使用的。因此,我整合了一份 Reaticulate 在 Github 上支持 UACC 的 reabank 给 Articulation Map 插件使用(只是删除了 ‘//!’ 开头的行)。我对其中的 Cinematic Studio Strings 音色表进行了全面测试,完美触发。

下载整合的 AM 音色表:1712073513926-banks.zip (10 KB)

来自 Github AM 音色表集合:reabanks

请注意:使用 UACC 模式时,需要将 Articulation Map-JSFX 插件界面的 Mode (模式)设置为 Keyswitch CC (UACC),并确认 Keyswitch CC 的控制器编号是否设置为 32(这是喷火 UACC 默认的控制器号,对于 Cinematic Studio Strings 则默认是 CC58)。

在 keyswitch CC/UACC 模式下,数据库的显示方式一般使用按钮 [B] 模式(将一套音源的所有技法显示到一起),按钮 [A] 模式主要适合传统音源的显示(如 GS/XG 标准的 Roland/YAMAHA 硬件音源)。

现在的 Articulation Map,包含了基于键位映射的常见功能:

  • 短按:模拟按下琴键后立刻抬手。
  • 长按:模拟按住琴键直到下一个琴键按下时立刻抬手,类似连奏的功能。
  • 混合的短按+长按(JS插件默认):启用 CC119 时,激活长按功能(模式二),可随时控制键位音符的长度。不启用 CC119 时,则默认为短按(模式一)。
  • Keyswitch CC (UACC) 功能支持。
  • 通过专有的键位映射配置文件,将一个键位映射为双键位或多键位。

对于新增功能,AM 仍然具备简单易用的特性,并且不会影响过去的任何操作。

音色表需要有对应的音源来编写,如果有人恰好编写了库中没有的音色表,可以发我整合到这套插件中。

最新版: v1.0.28

@再補一刀 成啦,感谢

@wenxm611全新的技法映射插件 中说:

新版本有个BUG,点加载JSFX的时候,会加载一个不存在的FX,但是我是有新JSFX的,是不是加载成老版本的了?!1711879503164-reaper_mhuumfahtu.gif

不算BUG,应该是REAPER没有清空旧版JS的相关缓存,特别是对于同名的JS又被更改其他位置的情况下,会容易出现这种问题。解决办法是:

1、关闭REAPER,把REAPER根目录下的 reaper-jsfx.ini 文件删除(删除后,重启REAPER会重新扫一份最新的);
2、将AM卸载掉(注意:不是更新或重新安装),然后再点击安装。

新版本有个BUG,点加载JSFX的时候,会加载一个不存在的FX,但是我是有新JSFX的,是不是加载成老版本的了?!1711879503164-reaper_mhuumfahtu.gif

1711858765169-simul.gif
最新版支持将一个PC事件转换为多个PC事件,通过插入一个音色即可触发双键位或者多键位(无音符数量限制),并且同样可以完美支持 PC-to-Note 来回切换。

要使用同时多键位触发功能,需要打开AM界面,按快捷键 F12 打开键位映射定义文件:simul-arts.txt

simul-arts.txt 使用说明:

该设置文件用于存储同时多键位映射信息,即将一个特定的键位映射关联到一个或多个不同的键位上。每行定义一个映射,格式为:
原始键位=目标键位1,目标键位2,…
其中,技法键位由 [分组编号-力度值-音色编号] 的形式表示。例如:

127-100-100=127-100-67, 127-100-74, 127-100-79

表示 127-100-100 映射到三个不同的键位:127-100-67、127-100-74和127-100-79。
请注意,技法键位对应的 [分组编号-力度值] 必须保持一致。

已更新到最新版 v1.0.12

1711181037177-switchcc.gif
新增支持 PC 转 CC 功能,使用时需要将AM JSFX插件模式切换到: keywsitch cc,默认 Keywsitch CC 编号使用 58。


编写reabank时主要填写CC值对应的技法,这里提供了一份 Cinematic Studio Strings - Keyswitch CC 的参考:


定义音色时只取范围值的起始值

请注意 Bank 6 96,其中的 96 在PC转CC时没有特别的意义,只是reabank格式需要。你可以填任何数字,我的建议是使用reaper默认的音符力度值96.

已更新最新版本:1.0.6

1710652945363-sus119.gif

关于 Sustain(保持音)的编写:
Sustain(保持音)的控制并不需要通过 ReaBank 文件来实现,而是通过 AM JSFX 指定的 CC 编号来操作(默认为 CC119)。它的作用是作为一个持续时间的控制开关,CC 值在 64 到 127 之间时为打开状态,而在 1 到 63 之间时则为关闭状态。

1710652954755-keyswitch2.gif

关于同时运行两种 Articulation(技法)的编写:
要实现同时运行两种技法,你需要插入两个 Program Change(PC)事件。可以使用 “<” 和 “>” 按钮来微调这两个事件的位置,确保它们不会重叠,因为 PC 事件不能相互覆盖。