v2.0.2 · MIDI 设备接入、修复部分曲子缺音
v2.0.2 · MIDI 设备接入、修复部分曲子缺音
新增:MIDI 设备接入(#4)
接上 MIDI 键盘或打击垫,按键直接吹进游戏,不用先做谱。
- 选项区最上面一行「MIDI 设备实时演奏」。勾上 → 选设备 → 切到游戏开始弹。
- 基准八度决定设备上哪个八度是口琴的中音 do。「自动贴合音域」默认开。
- 「力度下限」默认 1(不过滤)。设备有抖动或触后噪声时往上加。
- 状态文字实时显示最近一个音映射成了什么。停止时日志给出统计。
- 音高:基准八度的 do..si →
Z X C V B N M。高一个八度按右键,低一个八度按左键,
升半音按中键。最高到高高音#do。 - 口琴是单音。同一根键上后来的音优先,前一个音被换掉。
- 默认关闭。不勾选时程序完全不碰 MIDI 设备。
修复:2.0.1 部分曲子会缺音
现象:听着像"按键按快了,少几个音"。同刻起音、音尾压住下一个音头、密集打击乐轨最容易见到。
换回 2.0.0 就正常。
原因:音符在时间上重叠时,调度器为了让后一个音准时按下,把前一个音的抬起时刻
一路提前到"按下"的同一时刻。前一个音变成零时长按键:按下和抬起落在同一帧,
游戏按帧采样时一帧都读不到,整段音被吃掉。
改法:音符之间用"槽位"排开,不再靠缩短前音让位。
- 与前音重叠(含同刻起音)的音顺延到前音之后,时值不变。
- 每次按下至少跨过一个帧点(帧长 + 1ms 余量)。
- 修饰键提前量如果必然把本音推后,整段跟着后移,时值不变。
验证:
- 示例 1~4 加密集打击乐轨,三个输入档位:漏音 0。
- 合成极端谱面(同刻起音、长音重叠、同键 10ms/30ms 重触发、1/2~1/16 音符、
首尾相接、八度来回切):零时长按键 0,同键粘连 0。 - 与 v2.0.1 的调度器逐事件比对:正常谱面 15 组按键时刻完全一致。正常曲子的时序没有变化。
其它
「时序诊断」多报一项:时值被压到下限的音数。正常曲子是 0。
不是 0 就说明这首谱挤得比该档位允许的最快速度还快,换「稳健」档或降速。
下载
HarpAutoPlayer-win-x64.zip。解压后双击 HarpAutoPlayer.exe。
单文件,不需要安装 .NET。