鼓采样尾音 · Voice Stealing · 复音排查
鼓点一密,采样尾音为什么被截断?Voice Stealing 四窗口测试
单独听镲片、808 或长尾打击乐都完整,一放进密集 beat 却突然断掉,不要先把所有 Release 拉长或把复音数开到最大。固定同一段 MIDI 和同一套干采样器,从稀疏单击逐步增加同 Pad、跨 Pad、分层与真实段落重叠,先找出第一次截断发生在哪一层。
范围:本文适用于能查看 MIDI 事件、采样器触发方式、复音或 voice 指示,并允许复制 preset 的外部硬件或软件采样器。不同产品对 voice、note、layer、polyphony、Retrig、exclusive group、choke、one-shot、gate 与 Note Off 的命名和优先级不同,必须以所用版本的文档为准。FingerDrum 可用于演奏和编排节奏,但本文不声称它会显示、修改或自动诊断外部采样器的声部分配、CPU 或磁盘状态。四窗口、voice-budget ledger、失败码和 A0/B/A1 回归流程是 FingerDrum 编辑团队基于文末官方资料所做的原创综合;本文不规定通用声部数、CPU 阈值、磁盘阈值或“正确”尾音长度。
先数目标窗口里应有和实际录到的 MIDI Note On。事件已经存在、声音才被提前结束时,再依次检查:有意的 exclusive/choke、同音 Retrig、Note Off 与包络、Pad 或全局复音上限,最后才是 CPU/磁盘过载。只在一个副本中改一项有文档支持的参数,并用 A0 → B → A1 证明症状随它离开又回来。
尾音“断了”不只等于 voice stealing
Voice stealing 是一个有边界的判断:已有声音仍在播放,但新的触发需要超过可用复音,于是引擎按自己的优先规则结束某个旧 voice。Native Instruments 的 Maschine 手册给出一个明确实例:当 Sound 的 polyphony 上限已满,再触发音符会结束最早仍在播放的音符。Ableton Simpler 也把 Voices 定义为同时可播放 voice 的上限;需求超过分配值时,旧 voice 会让位给新 voice。它还说明,Retrig 开启时,再次播放同音会切掉仍在持续的旧实例;关闭时,同音实例才可重叠。这些是具体产品行为,不是全部采样器共同采用的算法。
相同听感也可能是有意设置。Steinberg Groove Agent 的 exclusive group 会让组内新音符停止前一个音符,正适合开闭踩镲等互斥关系;Gate 或 ADSR 可以让 Note Off 决定何时进入释放;同 Pad 重击也可能按 Retrig 规则重启声音。若 MIDI Note On 本身缺失,问题甚至还没有走到采样器发声层。
| 类别 | 可观察线索 | 先查什么 | 不要先下的结论 |
|---|---|---|---|
MIDI | 预期 Note On 在记录中缺失或多出 | 输入、映射、编辑、量化、重复引擎 | “复音不够” |
EXCL | 总由特定另一 Pad 的触发结束,稀疏时也能复现 | exclusive/choke 组及其音乐意图 | “随机过载” |
RETRIG | 同一音高再次触发时,旧尾音规律地重启或消失 | 同音 Retrig、mono/poly 与 Pad 级复音 | “CPU 一忙就断” |
OFF | 截断始终跟随 MIDI note 长度或松手时点 | one-shot/gate、Note Off 响应与包络 | “样本文件被截坏” |
POLY | 超过某个同时发声组合后,旧 voice 按一致顺序离开 | Pad、乐器或全局复音与优先规则 | “某个音色天生不能叠” |
LOAD | 爆音、掉音或卡顿伴随官方性能表过载,且不只一个固定关系 | CPU、磁盘、流式读取和实际 voice 数 | 把所有掉音都命名为 voice stealing |
休止格里仍听到前一击的 tail,只说明旧声音还在延续,不代表休止格出现了新的 MIDI 事件。反过来,休止格突然安静也不能单凭耳朵证明 voice stealing;它可能是 Note Off、包络结束或另一 Pad 的有意 choke。始终先对照事件,再解释音频。
冻结同一段 MIDI、干采样器和 voice-budget ledger
复制工程、kit 与 preset,保留未改的 A0 源 Clip。四个窗口都从它派生,只静音或移除当前窗口声明的竞争事件;所有保留事件的位置、力度、通道与 note 长度不变。暂时旁路会掩盖尾部的混响、延迟、总线压缩、门限、自动化与母带处理;关闭随机化、概率、自动 fill 和第二个 MIDI 输入。不要改样本起止、音高、速度、路由或主输出电平。这样改变的是明确声明的重叠关系,而不是一组未记录的变量。
先做一张 voice-budget ledger。这里的“预算”是逐窗口记录,不是拿 MIDI 音符数冒充引擎的真实 voice 数。Steinberg 说明 Layer 模式会同时播放所有 layer,且 Pad 的 polyphony 是同时 note 数;实际 sample voice 可以高得多。Apple 也说明每个音符的实际声部数量会随分层采样区域增加。因此,一个 Note On 可以消耗多个实际 sample voice,而多声部同音、立体声、效果或第三方插件还可能有各自语义。
| 窗口 | 预期/实际 Note On | 目标 Tail | 竞争 Note/Pad/Layer | 官方 voice 指示 | 第一次异常 | 代码 |
|---|---|---|---|---|---|---|
W0 稀疏 | ____ / ____ | 完整至 ____ | 无 | ____ | ____ | ____ |
W1 同 Pad | ____ / ____ | 第 ____ 击后 | 同音 ____ 击 | ____ | ____ | ____ |
W2 跨 Pad | ____ / ____ | Pad ____ | Pad/自动触发 Layer ____ | ____ | ____ | ____ |
W3 真实密集段 | ____ / ____ | 小节/拍位 ____ | 真实编配 | ____ | ____ | ____ |
若采样器没有官方 voice 显示,就把这一格写 不可见,不要从音量表反推精确 voice 数。保留原始 MIDI、干音频与屏幕设置记录;后面每个判断都要能回到同一个 A0。
四个窗口:从稀疏参考逐层增加竞争
W0 — Sparse:给目标尾音一条无竞争参考
从 A0 源 Clip 中依次独奏每块相关 Pad 的一次真实触发,静音其余事件,并让播放在该事件之后继续到足以听清当前设置下的自然结束;不要移动事件,也不要规定秒数。记录 Note On、Note Off、实际 note 长度,以及从起音到可听结束的参考。若 W0 已提前断,密度不是必要条件:先查样本边界、one-shot/gate、包络、Note Off 或单声道设置,再进入后续窗口。
W1 — Same Pad:只增加同音重叠
回到 A0 源 Clip,只保留问题 Pad 在真实段落中已有的重复触发,先观察两击,再观察音乐里确实存在的快连击;不要新建或移动击打,每次都核对 Note On 数。若旧 tail 只在同音新击到来时规律消失,优先查看该采样器记录的 Retrig、mono/poly 或 Pad 级 polyphony。它可能正是有意的 808 重触发或鼓机式发音,而不是故障。
W2 — Cross Pad:一次只加入一块竞争 Pad
从目标长尾事件开始,在 A0 源 Clip 里先解除一块指定 Pad 的静音;若通过,再解除下一块。记录每块 Pad 按当前 preset 自动触发的 layer,不在这个窗口里改音色结构。只有已在实际设置或 preset 文档中确认属于同一 exclusive group 的开镲/闭镲,才适合作为阳性对照;不要据此让 crash、808 或氛围打击乐也进入同一 choke group。
若记录或官方 voice 指示把 layer 指向候选原因,另做一组独立的 preset A/B:复制 preset,保留目标 layer 与完全相同的 MIDI;仅在产品支持并有文档依据时,在副本里禁用或旁路一个非目标 layer,再恢复原 preset 复测。不要把这项音色结构变化混入 W2 的密度递增。
W3 — Real Density:回到真实密集段
最后恢复实际两到四小节,包括真正会用的镲片、808、fill、叠层与下一段第 1 拍。不要为了压垮系统而堆入歌曲里不存在的音符。连续播放多轮,记录第一次可重复异常的准确小节、拍位、被结束的目标 voice,以及 CPU、Disk、Polyphony 等产品实际提供的读数。只有过载指示与掉音同步出现时,才把 LOAD 列为候选;没有仪表或日志就保留为未知。
让第一处失败决定下一项检查
| 最早失败窗口 | 较强候选 | 下一项独立检查 | 暂时不要改 |
|---|---|---|---|
W0 | 样本边界、Note Off、one-shot/gate、包络 | 固定 MIDI,只比较文档中的触发/包络模式 | 全局 voice 上限 |
W1 | 同音 Retrig、Pad 复音、mono/poly | 保留两击位置,切换一项同音策略 | 其他 Pad 与总线效果 |
W2 特定 Pad 加入即失败 | exclusive/choke 组 | 核对两 Pad 的组归属与原定 articulation | CPU、磁盘和所有包络 |
| 独立 Layer A/B 只在原多 layer preset 失败 | 实际 sample voice 数或乐器上限 | 对照 preset 副本与恢复原版的官方 voice 指示 | 把音色改动混入 W2,或永久删除音色层 |
只有 W3 失败且顺序稳定 | Pad/乐器/全局 voice budget | 记录被偷 voice 与优先规则,测试最小复音改动 | 把复音直接开到最大 |
只有 W3 失败且伴随过载 | CPU、磁盘或流式读取 | 按该产品手册隔离性能变量 | 宣称某个通用百分比阈值 |
Steinberg 的工具栏分别显示 CPU、Disk 与当前播放 sample 数,并明确指出更多 voices 会提高处理器负载,磁盘供应不及时也会触发独立过载指示。这个区别很重要:提高复音可能消除一种 voice stealing,却增加 CPU 或流式读取负担。解决方案不是“越高越安全”,而是找到能通过目标窗口和真实段落的最低已测试值,再验证没有新增负载失败。
用 A0 → B → A1 证明一项设置确实参与了故障
- A0 — 保存失败基线:保存 preset 副本、固定 MIDI、干音频、ledger 与所有相关设置。重复最早失败窗口,确认同一关系可复现。
- B — 只改一项:根据失败层,选择一个文档明确支持的变量:exclusive group 归属、Retrig、one-shot/gate 或 Note Off 响应、Pad/乐器复音,或该产品指定的性能设置。记录旧值与新值。
- A1 — 恢复原设置:不改 MIDI 或其他参数,恢复 A0。原症状应在同一窗口回来;若没有回来,这次比较不能证明 B 是原因。
- B2 — 再应用候选:确认最早失败窗口重新通过,再把 W0 到 W3 全部跑一遍。只修好一个孤立声音、不保留真实 groove,不算完成。
若 B 是提高复音,不要寻找“行业正确声部数”。从当前值做最小的可记录改动,直到四窗口和回归项通过;保留最低的已通过候选。若 B 是取消 choke,先证明那两个声音本来就应重叠。开闭镲的互斥通常是 articulation 设计,解除它可能让 tail 更长,却让鼓组关系更错。
修复后,用快连击和真实 Groove 双重回归
尾音更长不是自动更好。长 808 可能遮住下一个音高,开镲可能本应被闭镲停止,同音连击也可能需要清楚重启。最终回归同时保留“需要延续的 tail”和“必须按时结束的 tail”。
- MIDI 门禁:每个窗口的预期与实际 Note On 一致,没有靠删除击打绕过问题。
- 延续门禁:目标 crash、808 或长尾声音在声明窗口内不再意外中断。
- 快连击门禁:真实会演奏的快速同 Pad 连击仍有预期攻击与重启关系,没有变成糊成一团的重叠。
- 互斥门禁:有意的开/闭镲或其他 choke 关系仍按设计工作;不要用“所有 tail 都保留”作为通过标准。
- 负载门禁:官方 CPU、Disk、Polyphony 或日志没有出现由候选设置引入的新过载;没有相应观测能力就明确写未知。
- 段落门禁:真实密集段连续多轮与下一段第 1 拍都通过,A0 仍可恢复,最终 preset 与 ledger 一起保存。
鼓采样尾音截断常见问题
休止格里还能听到镲片,是音序器偷偷多放了一击吗?
不一定。休止格表示该格没有新起音,先前触发的音频 tail 完全可以继续。查看 MIDI Note On 或事件列表,而不是把持续声音数成新击。
只要把 Polyphony 调高,就能修好吗?
不能保证。截断若来自 exclusive group、Retrig、Note Off 或包络,提高复音没有对准原因;若确实是 voice budget,过高设置还可能增加处理器或磁盘负担。只测试文档支持的最小增量,并回归全部窗口。
为什么一个 Note On 会占多个 voice?
因为一个 note 可以同时触发多个 sample layer、区域或同音声部。Steinberg 和 Apple 都明确区分了 note/键数与实际 sample voice。具体计数仍由所用采样器决定,不应从 MIDI 音符数直接推定。
截断时没有 CPU 峰值,就一定是 voice stealing 吗?
不是。还要排除 MIDI 缺失、choke/exclusive、同音重触发、Note Off 与包络;有些工具也没有足够精细的性能显示。证据不足时写 UNKNOWN,不要用一个没亮红灯的表排除所有系统问题。
为了自然,所有 crash 和 808 都应该完整播到底吗?
没有这种通用规则。目标是保存编配需要的延续,同时保留有意的 choke、重触发与留白。用真实 groove 的上下文决定尾音,而不是把“最长”当成“最好”。
只有当预期 MIDI 事件完整、第一处失败被稳定定位、B 只改变一项有文档支持的设置、A1 能恢复原症状、B2 通过 W0–W3,并且快连击、互斥 articulation、真实段落与负载门禁都没有回归时,才保留候选。若提高复音是赢家,保留最低的已通过值,而不是最大值。
来源与访问日期
MIDI Association 用于核对 Note On/Note Off 的事件语义;Ableton 用于核对 Simpler 的 voice stealing 与 Retrig 行为;Native Instruments 用于核对 Sound polyphony、oldest-note 结束以及 one-shot/AHD/ADSR;Steinberg 用于核对 Pad polyphony、layer 对实际 sample voice 的影响、exclusive group、CPU/Disk/Polyphony 指示;Apple 用于核对 Logic Sampler 的 mono/poly/unison 与分层区域对已用声部的影响。产品术语只适用于各自文档。四窗口、ledger、失败码、A0/B/A1 与停止规则不是这些厂商规定的行业标准。
- MIDI Association — About MIDI Part 3: MIDI Messages(访问:2026-10-16)
- Ableton — Live Instrument Reference(访问:2026-10-16)
- Native Instruments — Maschine Software Manual: Working with Plug-ins(访问:2026-10-16)
- Steinberg — Groove Agent 6: Main Tab(访问:2026-10-16)
- Steinberg — Groove Agent 6: Toolbar(访问:2026-10-16)
- Apple 支持 — Mac 版 Logic Pro 中的采样器的同音、模式和复音(访问:2026-10-16)