MIDI 鼓垫 · 双触发 · 路径排查

鼓垫敲一下为什么触发两次?四层 MIDI 路径测试

“一敲两响”可能来自第二次物理接触、某个 Note Repeat 或 MIDI 效果、双重路径、本地直通、音色分层,也可能是另一个 Pad 的串音。先保留能重现问题的状态,用二十次间隔单击对照物理观察、实际可取得的 MIDI 观察点、已录片段、实时演奏录音与单事件回放,再决定该改哪一项。

范围:本文适用于能查看鼓垫或电子鼓 MIDI 事件并录制干声音频的工作流。P、M0、M1 与 A 是四类证据,不是所有设备都会完整暴露的必然串行链;本文另把音频证据分成实时的 A-live 与单事件回放的 A-play,并在可取得时增加音源入口前的可选 M2-live 与 M2-play。不同设备对 zone、Note Repeat、Retrigger Cancel、Mask Time、crosstalk、Local Control 与 layer 的定义不同,必须以对应型号和版本的官方文档为准。FingerDrum 可用于演奏和编排节奏,但不声称能读取第三方鼓垫内部的 trigger waveform、辨认传感器接触次数,或修改第三方硬件参数。这些标记、二十击账本、分类码、中性定位状态 N 与 A0/B/A1/B2 流程是 FingerDrum 编辑团队基于文末资料所做的原创综合,不是厂商规定的行业标准,也不设通用毫秒、力度或过滤阈值。

简短答案:先标出第二个起音在哪份证据里首次可见

先保存并复现故障态 A0,再做二十次间隔单击。M0 有两个事件,只能证明重复在该观察点或更早已经存在;尚未隔离设备内部、端口、驱动或更早转换时,不能直接断言鼓垫硬件复触。若 M0 一条而 M1 两条,检查两者之间的 Note Repeat、MIDI 效果、循环、端口合并和轨道路由。若 M0、M1 均为一条而 A-live 双响,关闭实时输入,只把一条已核对的 M1 事件送入单一干音源做 A-play:回放单响时,再查构建回放对照时移除的本地直通、并行监听、MIDI 回送、post-FX、延迟、send/bus 或并行音频输出;回放仍双响时,再用可选 M2-play 把 M1 之后的 MIDI 生成与接收端/音频分支分开。第二事件的间隔或力度本身不能证明 bounce。

四类证据可以互相对照,但不必然构成完整串行链

MIDI Association 把 Note On 与 Note Off 说明为不同的 MIDI 消息;力度是 Note On 的数据之一。这些消息能描述某个观察点收到了什么,却不会自动证明手指或鼓槌是否二次接触、传感器如何判定,或音源是否叠了两层。有的设备只提供模块 MIDI out,有的 DAW 能在 MIDI 效果前后分别监看,有的设备只能听到本地声音。所以先给每次有意击打编号,再如实标出每份证据的真实位置;取不到就写 unavailable。

证据记录什么它能回答它不能单独证明
P 物理观察击打编号、目标 Pad/zone、是否真正观察到第二次接触演奏动作里是否有可观察的第二次接触控制器、鼓模块或软件实际生成了几条 MIDI
M0 最早可取得的 MIDI观察点真实名称,以及端口、通道、note、velocity 与时间重复是否在该点或更早已经存在事件在传感器、鼓模块、驱动或其他未见上游中的确切来源
M1 已录片段保存后的事件位置、通道、note、velocity 与长度与 M0 对照时,两观察点之间是否增删或改写了事件未经处理的硬件输出,或某个更早观察点的状态
A-live 实时演奏录音执行编号击打时的起音数、同时/先后关系、音色与实际录音位置实时演奏时整套可听路径是否双响本地直通、DAW 监听、MIDI 回送、post-FX、延迟、send/bus、并行音频输出或接收端分层中哪一项是原因
A-play 单事件回放关闭实时输入后,只把一条已核对的 M1 事件送入单一干音源所得的起音双响是否在没有实时演奏路径时仍然存在若不知道音源入口实际收到几条 MIDI,仍不能单独证明 layer
M2-live / M2-play 可选 MIDI 观察点MIDI 效果之后、音源入口之前的事件数与身份;实时击打与单事件回放分开记录分别在“实时输入 → M2-live”与“M1 单事件回放 → M2-play”中,界定 MIDI 生成/复制与接收端/音频分支不提供该观察点的系统里,不得伪造 M2-live 或 M2-play 记录;也不得用 M2-live 代替 M2-play

M0 必须是工作流中真实可取得的最早 MIDI 观察点,例如“鼓模块 MIDI out”或“DAW 输入监看(MIDI FX 前)”。它不等于传感器原始波形,也未必位于设备内部 Repeat、分区判定、驱动或系统路由之前。若没有这个观察点,就写 unavailable,并停止对未见上游作确定结论。Apple 的 Logic Pro 事件列表可以显示已录音符的位置、通道、编号、力度与长度,很适合做 M1;它位于录制之后,不能改名为 raw MIDI。

本文把“第二个起音(onset)”定义为同一编号击打后观察到的第二个事件起点或音频攻击点,不把持续尾音当成第二击。两个事件很近、第二个力度较小,可以成为复现线索,却不能单独证明传感器 bounce;Repeat、zone、路由副本、人为二次接触或接收端设计也可能产生相似现象。

先保存故障态 A0,再用中性副本 N 定位

在关闭任何功能前,先复制当前工程或 preset,保留已出错的 MIDI 片段、A-live 录音及其实际录取位置、路由图或截图、监听状态、设备型号与版本、端口名、kit 名称和所有当前设置。把这个能够复现第二起音的原状态命名为 A0。若还不能复现,就不要宣称已建立 A0,而是保留现有材料并标记 UNRESOLVED。

然后再复制一份中性定位副本,命名为 N。在 N 中记录原状态后,停止播放与循环,关闭量化、Humanize、概率、琶音、Note Repeat、会生成音符的 MIDI 效果、自动 fill、发送、总线与母带处理;选一块问题 Pad、一个明确命名的物理输入、一条已布防轨道和一个短、起音清楚、不含随机轮替的干音色。

先画出实际 MIDI 回送和监听路径,不要一概删掉所有 return。对纯软音源的 N,可以隔离额外回环和并行轨;若设备有内置声源且问题可能涉及 Local Control,则必须保留一份回送开/关的明确对照,而不是在记录证据前把回送永久移除。N 一次关闭了多个因素,只能用来缩小范围;即使 N 不再双响,也不能证明其中某一项就是原因,更不能把 N 当成后文的 B。

记录二十次间隔单击,再做单事件回放

先在 A0 中以舒适力度做二十次彼此分开的有意单击,每击之间留到上一击完全结束,编号 01–20。二十不是统计学行业阈值,只是让偶发问题有机会留下可逐击核对的样本。每击先写 P,再抄 M0、M1、可取得的 M2-live 与 A-live。对 MIDI 仍是单事件而实时双响的行,关闭实时输入后再做 A-play 并单独记录 M2-play;不得沿用同一行的 M2-live 来判断回放路径。

若没有摄像、触觉或其他可靠方式判断实际接触次数,P 必须写“有意单击/接触次数未观察”,不能把演奏意图写成“已证明只接触一次”。对任何两条 MIDI 事件,保留它们各自的 channel/note/velocity 和时间差;对任何两次音频起音,记录它们是同时、异音色/异音高,还是前后分开。

击打P 接触/zoneM0 事件/身份M1 事件/身份M2-live(可选)A-live 起音M2-play(可选)A-play 起音首现证据/代码
01________________________________
02________________________________
03________________________________
04________________________________
05________________________________
06________________________________
07________________________________
08________________________________
09________________________________
10________________________________
11________________________________
12________________________________
13________________________________
14________________________________
15________________________________
16________________________________
17________________________________
18________________________________
19________________________________
20________________________________

完成 A0 账本后,在 N 中使用同样的目标 Pad/zone、击打工具、间隔和二十击窗口再跑一遍,将结果明确标成 N,不覆盖 A0。如果 N 通过,只能说明被关闭的一项或多项因素与现象有关;用这个差异选择后文的一个 B 候选,然后必须回到 A0 只改那一项。

P — 只写物理观察,不替传感器写故事

固定同一根手指或同一根鼓槌、同一区域和相近动作,记录是否明显按住、滑过边界、碰到相邻 Pad,或真正观察到第二次接触。即使看起来只有一次,也不能据此证明传感器只收到一个触发波形;反过来,看见两次接触也不能单独证明设备发出了两条 MIDI。

M0、M1 与可选 M2-live/M2-play — 先给观察点定位,再比较事件

在 M0 逐击记录 Note On 的 note number、channel、velocity 与时间;需要时也记录 Note Off,但不要把 velocity 0 的 Note On 表示法误数成新起音。同一击在 M0 有两条 Note On,只证明它们在 M0 或更早已存在。Repeat 可能在控制器或鼓模块内、M0 之前,也可能是 M0 与 M1 之间的软件阶段;必须先画出它的实际位置,不能把所有 Repeat 都叫作硬件复触。

停止录音后,在不量化、不手工编辑的情况下逐击把 M1 与 M0 对齐。若 M0 每击一条而 M1 某击两条,检查两点之间的 Note Repeat、roll/琶音/回声等生成器、MIDI 效果、clip 循环、多输入端口、虚拟端口、MIDI 回环或重复布防轨道。若实时击打时可以在音源入口前观察,就将该次记为 M2-live;停用实时输入并回放已核对的单个 M1 事件时,将另一次记为 M2-play。任一次取不到就在对应栏写 unavailable,不要猜测,也不要把 M2-live 当成回放路径的证据。Apple 事件列表适合核查 M1 字段,但不能说明两条事件究竟来自手势、未见上游、重复功能还是端口合并。

A-live 与 A-play — 把实时路径和接收端回放分开

A-live 是执行编号击打时同步录下的实时声音。必须标出它的实际录取位置,因为它可能包含设备本地声源、DAW 输入监听、MIDI 回送、post-FX 音频分支和接收端分层;能另录纯干路径时,可作为额外对照,但不得把未隔离的实时混合冒称为干声。一个带内置声源的鼓模块,本地触发结果与 MIDI out 并不必然相同;因此 M0 一条不能证明模块本地一定只响一次,本地声音异常需要模块自身的 trigger meter、内录或厂商诊断证据。

当 M0 和 M1 都只有一条事件而 A-live 双响时,关闭或隔离实时输入,选一条已核对的 M1 Note On,只送入一个干音源,旁路延迟、混响、发送、总线、并行轨和母带处理,得到 A-play。A-play 只响一次,才把调查放在构建 A-play 时移除的 PATH 候选:本地直通、DAW 实时监听、MIDI 回送、post-FX、延迟、send/bus 或并行音频输出。A-play 仍双响时,先看该回放运行的 M2-play;M2-play 两条就查 M1 之后的 MIDI 生成或复制。只有 M2-play 或可靠的音源入口监看证明回放时只进入一条事件后,才测试接收端 chain/layer 或音频分支;M2-live 不能代替这份回放证据。M2-play 取不到且接收端也无法隔离时,保留 UNRESOLVED。

Ableton 的 Rack 文档说明,Rack 可有并行 chain;Drum Rack 中每条 chain 接收指定 MIDI note,同一个 Pad 还可能显示为触发多条 chain 的 Multi。因此,在已证明音源入口只有一条 Note On 的前提下,多层声音可能是有意的音色设计,不等于控制器双触发。Apple 说明,有内置声源的设备在 Local Control 保持开启、DAW 又把 MIDI 回送给该声源时,本地路径和 DAW 路径可能各播放一次并产生相位叠加感。这只是特定拓扑的例子;纯 MIDI Pad 控制器没有本地发声器,不能把 Local Off 当成通用答案。

用第一份能缩小边界的证据分类,不凭听感命名

代码最小证据下一项单独检查不要做的跳跃
CONTACTP 真正观察到第二次接触,且最早的相关事件/声音证据与它可重复对应固定其余设置,只改动作、安放或接触方式把“有意单击”当成已观察到一次接触
UPSTREAM非预期第二事件在 M0 已经存在,但 M0 之前尚未全部隔离标出 M0 前的设备内部、端口、驱动与转换;再查准确型号手册或厂商诊断把 UPSTREAM 直接改名为“硬件 bounce”
REPEAT某个已定位的 Repeat、roll、琶音、echo 或其他音符生成阶段足以解释重复,单独关闭后消失按实际拓扑记录该阶段在 M0 前、M0→M1 间、实时输入→M2-live 间,还是 M1 单事件回放→M2-play 间,再核对锁定、速率与同步把有意的重复功能当传感器故障
PATH较早证据一条,端口/轨道/回送后变两条;或 M0/M1 一条、A-live 双响而 A-play 单响从 A0 每次只切换一个输入、虚拟端口、监听轨、本地直通、MIDI 回送、post-FX、延迟、send/bus 或并行音频输出在没有 A-live/A-play 对照时直接关 Local Control
LAYERA-play 仍双响,M2-play 或可靠的音源入口监看证明该回放只进入一条事件,且独奏 chain/layer 改变结果逐条独奏接收端 chain/layer,确认是有意音色还是非预期分层用 M2-live,或只凭 M0/M1 一条与 A-live 双响,就宣称 layer
ZONE同一物理 Pad 出现两个不同 note/articulation,且符合型号的分区说明逐区击打并核对官方 note/zone 映射假定所有双区设备都会同时发两音
XTALK敲目标 Pad 时,另一个 Pad 或 zone 的可区分证据随振动出现分别保留鼓模块本地 trigger/meter 与 MIDI out,记录 A→B 方向并运行独立串音测试假定模块本地声音与 MIDI out 必然完全相同
UNRESOLVEDM0 或所需的 M2-live/M2-play unavailable、现象不能复现、证据互相矛盾,或单变量结果无法恢复保留材料,补齐更早观察点、音源入口证据或厂商支持信息为填满结论而猜一个原因

Roland TD-07 中文手册把三类参数分开:Retrigger Cancel 用于检测触发信号衰减中的非预期重复,Mask Time 会忽略前一触发后指定时间内的附加信号,XtlkCancel 则处理敲 A 时振动让 B 误发声。它也明确警告,Retrigger Cancel 或 Mask Time 设得过高会让快速演奏或滚奏漏音。这些只是 TD-07 的具体例子;其他品牌、型号和 Pad 类型的范围与算法可能完全不同,不能套用 TD-07 的数值、菜单名或诊断结论。

只有重复已在 M0 或厂商支持的本地 trigger 证据中出现,且准确型号文档说明了对应参数时,才把一项 retrigger 参数作为候选。M0 没有重复不能证明模块本地声源一定没问题,但调源端 trigger filter 也无法修复已确认的下游端口副本、实时监听双路径或接收端分层,反而可能制造新的漏击。

A0 → B → A1 → B2:一次只改一项,再恢复与重应用

  1. A0 — 故障基线:回到已保存的失败状态,用同一个二十击窗口记录重复行、事件身份、A-live 与 M2-live,以及适用时另行取得的 A-play 与 M2-play。
  2. B — 一项变更:从 A0 只改一个与当前证据边界相符的可逆变量。REPEAT 只关闭已定位的生成阶段;PATH 只切换一条端口、监听、回送、post-FX、延迟、send/bus 或并行音频分支;LAYER 只在 M2-play 或可靠接收端入口证明单事件后独奏一条 chain;只有 UPSTREAM 已通过型号文档或本地 trigger 证据缩小范围时,才最小幅度修改一个 retrigger 参数。
  3. A1 — 恢复原值:其余条件不变,恢复 A0 的那一项原值。原症状应在同一份证据中回来;没有回来,B 与故障的关系尚未被证明。
  4. B2 — 再应用:重新应用同一改动,复跑二十击。只有预期的重复计数下降、有意单击没有丢失,而且通过后文回归,才保留改动。

N 不属于这组因果验证:它一次关闭了多项,只能帮助选择 B,不能代替 B。对偶发问题,比较计数而不强求同一击号失败:例如 A0 与 A1 都出现重复,B 与 B2 都未出现,且测试条件一致。若 B 只隐藏了 A-live 的第二声,M0/M1 及适用的 M2-live/M2-play 中的重复事件仍在,应把它记为音频规避,而不是修复事件数。

如果 B 是 Retrigger Cancel 或 Mask Time,记录产品原值与候选值,不追求“越高越安全”。候选必须既消除非预期单击重复,也保留真实要演奏的快速双击和滚奏。若第二事件只在 Note Repeat 开启时按网格出现,它可能正是功能输出;Ableton Push 手册把 Repeat 描述为按所选重复值连续演奏音符,先判断音乐意图,再决定关闭还是保留。

修复后回归真正会用到的演奏与路径

最后回到真实两到四小节,检查 fill、下一小节第 1 拍和原本会出错的密度。只有 A0 可恢复失败、B2 可重复通过,而且快双击、滚奏、分区、同时击打、动态、必要的本地/MIDI 对照和重新载入都通过,才保留改动。若仍无法说明第二起音在哪份证据里首次可见,使用 UNRESOLVED,把账本交给设备厂商支持会比一串未记录的参数变化更有用。

鼓垫重复触发常见问题

第二个音符更轻、只晚几毫秒,不就证明是 Pad bounce 吗?

不能。力度与间隔只能描述事件,Repeat、zone、端口副本、回送或人为二次接触都可能产生相似形状。先找第二事件在哪个真实观察点已经存在,再用单变量复测原因;M0 有两条也只是 UPSTREAM 边界,不是硬件 bounce 证明。

Logic Pro 事件列表算 raw MIDI 吗?

不算。它能准确列出 Logic 已录事件的位置、通道、note、力度与长度,是本文的 M1 证据;在它之前仍可能有端口合并、系统路由或软件变换。没有 M0 就写 unavailable。

M0 和 M1 只有一条,A-live 双响,能直接叫 LAYER 吗?

不能。先关闭实时输入,用一条已核对的 M1 事件做 A-play。A-play 单响,说明候选更像构建该对照时移除的本地直通、并行监听、MIDI 回送、post-FX、延迟、send/bus 或并行音频输出;A-play 仍双响,再检查 M2-play。只有 M2-play 或可靠的音源入口证明该回放只进入一条事件,且独奏 chain/layer 改变结果时,才使用 LAYER。

所有鼓垫都应该关闭 Local Control 吗?

不是。Local Off 示例只适用于带内置声源、确实有 Local 设置,且 DAW 会把 MIDI 回送给该声源的设备。纯控制器没有本地音源,这项设置可能不存在。这个分支要保持其他条件不变,单独比较 Local 或回送,不要预先把所有 MIDI return 都删掉。

把 Mask Time 或 Retrigger Cancel 调高一点总没坏处吧?

有风险。Roland 的手册明确说明过高会让快速演奏更容易漏音。只有重复已在 M0 或厂商支持的本地 trigger 证据中出现、对应型号文档支持该参数,并完成快双击与滚奏回归时,才保留最小的已通过改动。M0 重复仍只是上游边界;没有型号专属证据就不得断言硬件原因。

M0 无法观察,还能继续吗?

可以继续比较 M1、实时运行的可选 M2-live/A-live,以及单事件回放的可选 M2-play/A-play,定位已录片段之后或实时音频路径的问题,但不能宣称未见上游一定正常或一定复触。把 M0 写成 unavailable,结论保留为 UNRESOLVED 或严格限定在已观察边界。

停止规则

A0 已用二十击账本复现故障,并如实分开记录 P、M0、M1、M2-live/A-live 与适用时的 M2-play/A-play;N 已在同一 Pad/zone、击打工具、间隔和二十击窗口下复跑,且只用于挑选候选、没有被冒充为因果证明;B 回到 A0 只改一项与已观察边界相符且有文档支持的变量;A1 恢复原症状,B2 再次消除;LAYER 只在 M2-play 或可靠接收端入口证明单事件后成立;有意快速双击/滚奏、分区、同时击打、轻重动态、必要的本地/MIDI 对照和重新载入全部通过。任何一项缺失,就保留证据与 UNRESOLVED,不要继续叠加修复。

来源与访问日期

MIDI Association 用于核对 Note On、Note Off 与 velocity 的消息语义;Apple 音符事件文档用于界定 Logic Event List 是已录事件证据而非未经处理的硬件输出;Roland 用于区分 Retrigger Cancel、Mask Time 与 XtlkCancel 及其漏快音风险;Ableton Push 用于核对 Repeat 行为,Rack 手册用于核对一个 note 与多条 chain;Apple Local Off 仅用于说明带内置声源设备的本地与 DAW 双路径。P/M0/M1/A 四类证据、A-live/A-play 对照、可选 M2-live/M2-play 分开记录、二十击账本、八个分类码、中性副本 N、A0/B/A1/B2 与停止规则都是本文基于上述资料所做的编辑综合,不是任一厂商规定的通用标准。

  1. MIDI Association — About MIDI Part 3: MIDI Messages(访问:2026-10-17)
  2. Apple 支持 — Mac 版 Logic Pro 中的音符事件(访问:2026-10-17)
  3. Roland — TD-07 中文用户手册(访问:2026-10-17)
  4. Ableton — Push 中文手册(访问:2026-10-17)
  5. Ableton — Live 12 乐器架、鼓架与效果架(访问:2026-10-17)
  6. Apple 支持 — 在 Mac 版 Logic Pro 中停止 MIDI 设备的本地声音生成(访问:2026-10-17)